fix(v5): Laufzeit-Pfade plattformneutral — pipeline/struktur auf node:path
Ampel / ampel (push) Successful in 1m21s
Ampel / ampel (push) Successful in 1m21s
Der NFO-Ablage-Test brach in der Linux-CI: pipeline/struktur bauten mit path.win32 auf POSIX-Testordnern (mkdir legte 'x\Filme' als EINEN Namen an, readdir fand nichts). Regel jetzt dokumentiert: Module ueber LAUFZEIT-Wurzeln (Ablage) nutzen plattform-path — zur echten Laufzeit immer Windows, in der CI physisch korrekt auf POSIX; Module mit FESTER Windows-Semantik (katalog, dateiDaneben) bleiben bei path.win32. Testerwartungen entsprechend ueber join() statt Literale. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
3dc296f071
commit
e840b7f327
@@ -1,5 +1,6 @@
|
||||
// Tests der Ablage — sichere Namen, Zielstruktur, Episoden-Zuordnung, NFO.
|
||||
// Testfälle sinngemäß aus test_medien.py (Docker-Zweig).
|
||||
import { join } from 'node:path'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { baueNfo } from '../src/kern/ablage/nfo'
|
||||
import {
|
||||
@@ -28,19 +29,21 @@ describe('sichererName', () => {
|
||||
|
||||
describe('zielordner', () => {
|
||||
it('sprechender Name; bei Kollision Job-Kennung statt Überschreiben', () => {
|
||||
expect(zielordner('E:\\Filme', 'Akira', 1988, 'job-1234abcd', () => false)).toBe(
|
||||
'E:\\Filme\\Akira (1988)',
|
||||
// Erwartungen über join() — die Funktionen arbeiten mit den
|
||||
// Pfadregeln der LAUFZEIT-Plattform (Linux-CI testet mit POSIX).
|
||||
expect(zielordner('Filme', 'Akira', 1988, 'job-1234abcd', () => false)).toBe(
|
||||
join('Filme', 'Akira (1988)'),
|
||||
)
|
||||
expect(zielordner('E:\\Filme', 'Akira', 1988, 'job-1234abcd', () => true)).toBe(
|
||||
'E:\\Filme\\Akira (1988) [job-1234]',
|
||||
expect(zielordner('Filme', 'Akira', 1988, 'job-1234abcd', () => true)).toBe(
|
||||
join('Filme', 'Akira (1988) [job-1234]'),
|
||||
)
|
||||
expect(zielordner('E:\\Filme', '', null, 'job-1', () => false)).toBe('E:\\Filme\\job-1')
|
||||
expect(zielordner('Filme', '', null, 'job-1', () => false)).toBe(join('Filme', 'job-1'))
|
||||
})
|
||||
})
|
||||
|
||||
describe('serienOrdner', () => {
|
||||
it('Jellyfin-Schema Serie/Season NN', () => {
|
||||
expect(serienOrdner('E:\\Serien', 'Dr. Who?', 2)).toBe('E:\\Serien\\Dr. Who\\Season 02')
|
||||
expect(serienOrdner('Serien', 'Dr. Who?', 2)).toBe(join('Serien', 'Dr. Who', 'Season 02'))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -90,14 +93,14 @@ describe('matcheEpisoden', () => {
|
||||
describe('episodenUmbenennen', () => {
|
||||
it('benennt in Disc-Reihenfolge um, überschreibt nie', () => {
|
||||
const umbenannt: Array<[string, string]> = []
|
||||
const meldungen = episodenUmbenennen('E:\\S', 'Akte X', 1, [3, 4], {
|
||||
const meldungen = episodenUmbenennen('S', 'Akte X', 1, [3, 4], {
|
||||
listen: () => ['title_t01.mkv', 'title_t00.mkv'],
|
||||
existiert: () => false,
|
||||
umbenennen: (von, nach) => umbenannt.push([von, nach]),
|
||||
})
|
||||
expect(umbenannt).toEqual([
|
||||
['E:\\S\\title_t00.mkv', 'E:\\S\\Akte X S01E03.mkv'],
|
||||
['E:\\S\\title_t01.mkv', 'E:\\S\\Akte X S01E04.mkv'],
|
||||
[join('S', 'title_t00.mkv'), join('S', 'Akte X S01E03.mkv')],
|
||||
[join('S', 'title_t01.mkv'), join('S', 'Akte X S01E04.mkv')],
|
||||
])
|
||||
expect(meldungen).toHaveLength(2)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user