// @vitest-environment node import { spawnSync } from "node:child_process"; import { expect, it } from "vitest"; // Python 경계 테스트도 npm test에 포함한다. provider 호출은 fake이며 ffmpeg // 변환과 Linux 원자 디렉터리 교체는 실제로 실행한다. 외부 네트워크는 쓰지 않는다. it("neural 생성기의 실패 보존·retry·PCM·비밀값 부재 계약", () => { const result = spawnSync( "python3", ["-m", "unittest", "discover", "-s", "tests/python", "-v"], { encoding: "utf8" }, ); expect(result.status, result.stdout + result.stderr).toBe(0); // Python 계약은 실제 FFmpeg 재측정·원자 교환을 포함하므로 전체 suite에 3분을 허용한다. }, 180_000); // 콘텐츠에 URL 모듈이 추가되어도 Python 생성기가 사용하는 Node 직접 import가 유지돼야 한다. it("Node type stripping 경로에서 기존 101문장 원문을 읽을 수 있다", () => { const result = spawnSync( "node", [ "--experimental-strip-types", "--input-type=module", "-e", "import {INTRO,PATTERNS,WORDS} from './src/content.ts'; console.log(INTRO && PATTERNS.length * WORDS.length + 1)", ], { encoding: "utf8" }, ); expect(result.status, result.stderr).toBe(0); expect(result.stdout.trim()).toBe("101"); });