WAS: `npm run klick` startet das ECHTE Rippy (Electron, Haupt, Kern, Fenster, Datenbank) mit eigenem Profil (--profil, --klick-smoke: ohne Tray, Updater, Toasts), einem nachgebauten Laufwerk (RIPPY_FAKE_LAUFWERK) und nachgebauten Werkzeugen (bau/klick/fake-*.cjs) — und klickt sich durch: Rippen → Dialog → Sprachen je Titel (jpn statt deu) → Rollen auf Folge → Staffel 1, ab Folge 3 → Vorschau → Rip → Warteschlange → Kompression → Ablage als S01E03/S01E04 unter Serien\…\Season 01 → Einstellungen/Roh-Dateien → Roh loeschen → Ereignisse. Bilder liegen in beweise/klick/. Die Naht dafuer (kern/werkzeuge/aufruf.ts): Zeigt ein Werkzeug-Pfad auf ein Node-Skript, laeuft es ueber die eigene Laufzeit (ELECTRON_RUN_AS_NODE) — fuer EXE-Pfade aendert sich nichts. WARUM: Beide Fehler vom 01.09.2026 waren Verkabelung; 261 Unit-Tests sahen keinen. Der Klick-Beweis haette beide gefunden. NEBENBEFUND: Die CSP blockte eingebettete Schrift-Teile (data:-Fonts der fontsource-Pakete) — Konsolenfehler im gebauten Fenster, jetzt font-src. Dazu test/messung.spuren.test.ts: HandBrake-Scan einer echten Roh-Datei auf Verlangen (RIPPY_MESSUNG_MKV). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
// Die Werkzeug-Naht (kern/werkzeuge/aufruf.ts, 5.4.0): echte EXE-Pfade
|
|
// gehen unverändert durch; Node-Skripte (die Nachbauten des Klick-Beweises)
|
|
// laufen über die eigene Laufzeit mit ELECTRON_RUN_AS_NODE.
|
|
import { describe, expect, it } from 'vitest'
|
|
import { istSkript, werkzeugStart } from '../src/kern/werkzeuge/aufruf'
|
|
|
|
describe('werkzeugStart', () => {
|
|
it('eine EXE bleibt eine EXE — Argumente und Umgebung unverändert', () => {
|
|
const start = werkzeugStart('C:\\Programme\\MakeMKV\\makemkvcon.exe', ['-r', 'info', 'dev:G:'], { PATH: 'x' })
|
|
expect(start.programm).toBe('C:\\Programme\\MakeMKV\\makemkvcon.exe')
|
|
expect(start.args).toEqual(['-r', 'info', 'dev:G:'])
|
|
expect(start.env).toEqual({ PATH: 'x' })
|
|
})
|
|
|
|
it('ein Skript läuft über die eigene Laufzeit, das Skript wird erstes Argument', () => {
|
|
const start = werkzeugStart('F:\\rippy\\bau\\klick\\fake-makemkvcon.cjs', ['-r', 'info'], { PATH: 'x' })
|
|
expect(start.programm).toBe(process.execPath)
|
|
expect(start.args).toEqual(['F:\\rippy\\bau\\klick\\fake-makemkvcon.cjs', '-r', 'info'])
|
|
expect(start.env['ELECTRON_RUN_AS_NODE']).toBe('1')
|
|
expect(start.env['PATH']).toBe('x')
|
|
})
|
|
|
|
it('istSkript kennt .cjs/.mjs/.js — und sonst nichts', () => {
|
|
expect(istSkript('a.cjs')).toBe(true)
|
|
expect(istSkript('A.MJS')).toBe(true)
|
|
expect(istSkript('a.js')).toBe(true)
|
|
expect(istSkript('HandBrakeCLI.exe')).toBe(false)
|
|
expect(istSkript('a.json')).toBe(false)
|
|
expect(istSkript('')).toBe(false)
|
|
})
|
|
})
|