mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-28 18:22:42 -08:00
Apply remaining working-tree updates
This commit is contained in:
@@ -290,11 +290,69 @@ test("runSubsyncManualService constructs alass command and returns failure on no
|
||||
deps,
|
||||
);
|
||||
|
||||
assert.deepEqual(result, {
|
||||
ok: false,
|
||||
message: "alass synchronization failed",
|
||||
});
|
||||
assert.equal(result.ok, false);
|
||||
assert.equal(typeof result.message, "string");
|
||||
assert.equal(result.message.startsWith("alass synchronization failed"), true);
|
||||
const alassArgs = fs.readFileSync(alassLogPath, "utf8").trim().split("\n");
|
||||
assert.equal(alassArgs[0], sourcePath);
|
||||
assert.equal(alassArgs[1], primaryPath);
|
||||
});
|
||||
|
||||
test("runSubsyncManualService resolves string sid values from mpv stream properties", async () => {
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "subsync-stream-sid-"));
|
||||
const ffsubsyncPath = path.join(tmpDir, "ffsubsync.sh");
|
||||
const ffmpegPath = path.join(tmpDir, "ffmpeg.sh");
|
||||
const alassPath = path.join(tmpDir, "alass.sh");
|
||||
const videoPath = path.join(tmpDir, "video.mkv");
|
||||
const primaryPath = path.join(tmpDir, "primary.srt");
|
||||
const syncOutputPath = path.join(tmpDir, "synced.srt");
|
||||
|
||||
fs.writeFileSync(videoPath, "video");
|
||||
fs.writeFileSync(primaryPath, "subtitle");
|
||||
writeExecutableScript(ffmpegPath, "#!/bin/sh\nexit 0\n");
|
||||
writeExecutableScript(alassPath, "#!/bin/sh\nexit 0\n");
|
||||
writeExecutableScript(
|
||||
ffsubsyncPath,
|
||||
`#!/bin/sh\nmkdir -p "${tmpDir}"\nprev=""; for arg in "$@"; do if [ "$prev" = "--reference-stream" ]; then :; fi; if [ "$prev" = "-o" ]; then echo "$arg" > "${syncOutputPath}"; fi; prev="$arg"; done`,
|
||||
);
|
||||
|
||||
const deps = makeDeps({
|
||||
getMpvClient: () => ({
|
||||
connected: true,
|
||||
currentAudioStreamIndex: null,
|
||||
send: () => {},
|
||||
requestProperty: async (name: string) => {
|
||||
if (name === "path") return videoPath;
|
||||
if (name === "sid") return "1";
|
||||
if (name === "secondary-sid") return "2";
|
||||
if (name === "track-list") {
|
||||
return [
|
||||
{
|
||||
id: "1",
|
||||
type: "sub",
|
||||
selected: true,
|
||||
external: true,
|
||||
"external-filename": primaryPath,
|
||||
},
|
||||
];
|
||||
}
|
||||
return null;
|
||||
},
|
||||
}),
|
||||
getResolvedConfig: () => ({
|
||||
defaultMode: "manual",
|
||||
alassPath,
|
||||
ffsubsyncPath,
|
||||
ffmpegPath,
|
||||
}),
|
||||
});
|
||||
|
||||
const result = await runSubsyncManualService(
|
||||
{ engine: "ffsubsync", sourceTrackId: null },
|
||||
deps,
|
||||
);
|
||||
|
||||
assert.equal(result.ok, true);
|
||||
assert.equal(result.message, "Subtitle synchronized with ffsubsync");
|
||||
assert.equal(fs.readFileSync(syncOutputPath, "utf8"), "");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user