// MESSUNG an einer ECHTEN Disc im Laufwerk — läuft nur auf Verlangen und // nur unter Windows (die CI-Ampel auf Linux überspringt sie): // // RIPPY_MESSUNG_DISC=G npx vitest run test/messung.disc-erkennung.test.ts --reporter=verbose // // Der Anlass (01.09.2026): Der Commander legte Disc 2 der Serie // „Spartacus: Gods of the Arena" ein, Rippy meldete den FILM „Spartacus" // von 1960. Gemessen am Laufwerk G: — Volume-Label SPARTACUS_GOTA_D2, // UDF, 33 759 100 928 Bytes. Die Disc trug die richtige Antwort die // ganze Zeit selbst mit sich: In G:\BDMV\META\DL\bdmt_eng.xml steht der // Studio-Titel MIT Disc-Nummer und ein Inhaltsverzeichnis, das `EP 1` // und `EP 2` nennt. Rippy las davon nur die erste Zeile. import { describe, expect, it } from 'vitest' const buchstabe = (process.env.RIPPY_MESSUNG_DISC ?? '').replace(/:$/, '').toUpperCase() const messen = /^[A-Z]$/.test(buchstabe) && process.platform === 'win32' describe.skipIf(!messen)('Disc-Erkennung an der eingelegten Disc', () => { it('liest Titel, Verpackungs-Zusatz und Inhaltsverzeichnis', async () => { const { discTitel, discWurzel, inhaltAusBdmt, titelKandidaten } = await import( '../src/kern/metadaten/discmerkmale' ) const geraetepfad = `\\\\.\\${buchstabe}:` const gefunden = discTitel(geraetepfad) console.log(`MESSUNG Laufwerk ${buchstabe}: Titel "${gefunden.titel}" (Quelle: ${gefunden.quelle || 'keine'})`) console.log( `MESSUNG Disc ${gefunden.discNr ?? '—'} | Staffel ${gefunden.staffel ?? '—'} | ` + `Folgen ${gefunden.folgen} | Serie bewiesen: ${gefunden.istSerie}`, ) const wurzel = discWurzel(geraetepfad) if (wurzel.length > 0) { console.log(`MESSUNG Inhaltsverzeichnis: ${inhaltAusBdmt(wurzel).eintraege.join(' | ') || '(keines)'}`) } console.log(`MESSUNG Suchvarianten: ${titelKandidaten(gefunden.titel).join(' -> ')}`) // Eine eingelegte Disc muss sich benennen lassen — sonst ist die // Messung selbst kaputt und nicht die Erkennung. expect(gefunden.titel.length).toBeGreaterThan(0) }) }) describe.skipIf(messen)('Disc-Messung übersprungen', () => { it('läuft nur mit RIPPY_MESSUNG_DISC= unter Windows', () => { expect(true).toBe(true) }) })