Files
rippy/rippy-windows/test/commander-funde.test.ts
HitonabiandClaude Opus 5 12b9720386 fix(v5): Beta-Key mit @ kommt ganz an; Schlüssel-Stand ehrlich (rot statt „Rips laufen", nicht prüfbar ohne Laufwerk); Zeiten in Ortszeit
WAS: KEY_MUSTER nimmt alles bis Leerraum/HTML-Zeichen (der September-Key
„T-…4BI@N5rPp" hat 68 Zeichen mit @; das alte Muster lieferte 62 und
MakeMKV lief danach ohne Schlüssel). extractGueltigBis versteht „end of
September 2026". Die Kette prüft zuerst den vorhandenen Schlüssel und
lässt ihn stehen, wenn MakeMKV ihn annimmt (kein Überschreiben gekaufter
Keys mehr); reg add wird auf Erfolg geprüft; 5042 ohne Lizenzzeile heißt
„nicht prüfbar" statt „angenommen". Fenster: Ablehnung ist ROT mit dem
Satz, dass Blu-rays dann nur noch in MakeMKVs Gnadenfrist laufen; die
MakeMKV-Karte sagt, was Rippy in MakeMKVs Einstellungen schreibt. Ein
neuer Werkzeug-Pfad wird sofort gesucht, ein neuer eigener Schlüssel
sofort geprüft. datumKurz zeigt Ortszeit statt UTC.
WARUM: Durchsicht 12.09.2026, Funde F1, F5, F12, F13 und A2 — am echten
Forum-HTML und an makemkvcon ohne Laufwerk gemessen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 21:17:43 +02:00

115 lines
5.5 KiB
TypeScript

// Die drei Funde aus dem ersten Commander-Test (30.08.2026, abends) —
// jeder als Test festgehalten, mit den LIVE gemessenen Fixtures.
import { describe, expect, it } from 'vitest'
import { urteilAusAusgabe } from '../src/kern/werkzeuge/schluessel'
import { presetEmpfehlung, DEFAULT_HB_PRESET } from '../src/gemeinsam/preset-empfehlung'
import { presetFuer } from '../src/kern/komprimieren/presets'
describe('Fund 1 — „Key korrekt, aber als ungültig angezeigt"', () => {
// Die ECHTE makemkvcon-Ausgabe vom Commander-PC (30.08.2026): Der
// aktuelle Forum-Key ist in Ordnung, MakeMKV 1.18.4 ist ZU ALT für ihn
// — es meldet 5020 UND 5021 zusammen.
const ECHTE_AUSGABE = [
'MSG:1005,0,1,"MakeMKV v1.18.4 win(x64-release) gestartet","%1 gestartet","MakeMKV v1.18.4 win(x64-release)"',
'MSG:5020,516,0,"Der hinterlegte Aktivierungsschlüssel ist ungültig. …","…"',
'MSG:5021,131332,1,"Diese Programmversion ist zu alt. Bitte laden Sie die aktuelle Version von http://www.makemkv.com/ herunter.","…","http://www.makemkv.com/"',
].join('\n')
it('5021 schlägt 5020: Die Ursache ist die Version, nicht der Schlüssel', () => {
const urteil = urteilAusAusgabe(ECHTE_AUSGABE)
expect(urteil.ok).toBe(false)
expect(urteil.code).toBe(5021)
expect(urteil.grund).toContain('zu alt')
expect(urteil.version).toBe('1.18.4')
})
it('ohne Key-Meldungen ist alles gut — und die Version kommt trotzdem mit', () => {
const urteil = urteilAusAusgabe(
'MSG:1005,0,1,"MakeMKV v1.18.4 win(x64-release) gestartet","x"\nMSG:5010,0,0,"Das Öffnen der Disk schlug fehl","x"',
)
expect(urteil.ok).toBe(true)
expect(urteil.pruefbar).toBe(true)
expect(urteil.version).toBe('1.18.4')
})
it('5020 allein bleibt „Schlüssel wird nicht angenommen"', () => {
const urteil = urteilAusAusgabe('MSG:5020,516,0,"…","…"')
expect(urteil.code).toBe(5020)
expect(urteil.pruefbar).toBe(true)
})
// 5.7.0 (Durchsicht 12.09.2026, F5): OHNE angeschlossenes Laufwerk sagt
// makemkvcon zur Lizenz gar nichts — gemessen an diesem PC: nur 5042 und
// 5010. Das ist kein „angenommen", sondern „nicht angesehen".
it('5042 (kein Laufwerk) ohne Lizenzzeile heißt: nicht prüfbar', () => {
const urteil = urteilAusAusgabe(
[
'MSG:1005,0,1,"MakeMKV v1.18.4 win(x64-release) gestartet","%1 gestartet","MakeMKV v1.18.4 win(x64-release)"',
'MSG:5042,0,0,"Das Programm konnte keine verwendbaren optischen Laufwerke finden.","…"',
'MSG:5010,0,0,"Das Öffnen der Disk schlug fehl ","…"',
].join('\n'),
)
expect(urteil.pruefbar).toBe(false)
expect(urteil.code).toBe(5042)
expect(urteil.version).toBe('1.18.4')
})
it('5051 (Testzeitraum abgelaufen) ist prüfbar und abgelehnt — auch neben 5042', () => {
const urteil = urteilAusAusgabe('MSG:5042,0,0,"x","x"\nMSG:5054,0,1,"Evaluierungsversion. Der Testzeitraum lief vor 10 Tagen ab.","x","10"\nMSG:5051,1028,0,"Der Testzeitraum ist abgelaufen.","x"')
expect(urteil.ok).toBe(false)
expect(urteil.pruefbar).toBe(true)
expect(urteil.code).toBe(5051)
})
})
describe('Schlüssel aus dem Register lesen (5.7.0)', () => {
it('keyAusQuery liest den Wert aus reg query', async () => {
const { keyAusQuery } = await import('../src/kern/werkzeuge/schluessel')
const ausgabe = '\r\nHKEY_CURRENT_USER\\Software\\MakeMKV\r\n app_Key REG_SZ T-vwvnrmF87JuRPLYYO8HnIrZR_LCAF7JXs9iJEm10moGpjEgkvmPTsf6Ox4BI@N5rPp\r\n\r\n'
expect(keyAusQuery(ausgabe)).toBe('T-vwvnrmF87JuRPLYYO8HnIrZR_LCAF7JXs9iJEm10moGpjEgkvmPTsf6Ox4BI@N5rPp')
expect(keyAusQuery('FEHLER: Der Registrierungsschlüssel oder -wert wurde nicht gefunden.')).toBe('')
})
})
describe('Fund 2 — „Komprimieren auf der CPU statt der GPU"', () => {
// Die ECHTE Hardware-Preset-Liste des Commander-HandBrake (30.08.2026)
// plus die gemessenen Backends der RX 9070 XT.
const PRESETS = [
'Very Fast 1080p30',
'H.265 MKV 1080p30',
'AV1 QSV 2160p 4K',
'AV1 VCN 2160p 4K',
'H.265 NVENC 2160p 4K',
'H.265 NVENC 1080p',
'H.265 QSV 2160p 4K',
'H.265 QSV 1080p',
'H.265 VCN 2160p 4K',
'H.265 VCN 1080p',
]
const BACKENDS = ['cpu-x264', 'cpu-x265', 'cpu-av1', 'vce', 'vce-av1']
it('empfiehlt auf dem Commander-PC VCN, nicht CPU', () => {
expect(presetEmpfehlung('bluray', BACKENDS, PRESETS)).toBe('H.265 VCN 1080p')
expect(presetEmpfehlung('dvd', BACKENDS, PRESETS)).toBe('H.265 VCN 1080p')
expect(presetEmpfehlung('uhd', BACKENDS, PRESETS)).toBe('H.265 VCN 2160p 4K')
})
it('NVIDIA-Maschine bekäme NVENC, Intel QSV, reine CPU den Default', () => {
expect(presetEmpfehlung('bluray', ['cpu-x265', 'nvenc'], PRESETS)).toBe('H.265 NVENC 1080p')
expect(presetEmpfehlung('bluray', ['cpu-x265', 'qsv'], PRESETS)).toBe('H.265 QSV 1080p')
expect(presetEmpfehlung('bluray', ['cpu-x264', 'cpu-x265'], PRESETS)).toBe(DEFAULT_HB_PRESET)
})
it('empfohlen wird NUR, was die gemessene Liste hergibt', () => {
// vce da, aber keine VCN-Presets in der Liste → CPU-Default statt
// eines geratenen Namens (die „Invalid preset"-Falle).
expect(presetEmpfehlung('bluray', ['vce'], ['Very Fast 1080p30'])).toBe(DEFAULT_HB_PRESET)
})
it('die Kette bleibt: eigene Wahl schlägt die Empfehlung', () => {
expect(presetFuer('bluray', { transcodePresetBluray: 'Fast 480p30' }, 'H.265 VCN 1080p')).toBe('Fast 480p30')
expect(presetFuer('bluray', {}, 'H.265 VCN 1080p')).toBe('H.265 VCN 1080p')
expect(presetFuer('bluray', {}, '')).toBe(DEFAULT_HB_PRESET)
})
})