mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-08-29 12:15:27 -07:00
fix(subtitles): improve secondary subtitle extraction and display (#215)
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { createRemoteMediaPathDetector } from './network-media-path';
|
||||
|
||||
test('remote media detector recognizes mounted network filesystems', async () => {
|
||||
const detectRemoteMedia = createRemoteMediaPathDetector({
|
||||
platform: 'darwin',
|
||||
readMountOutput: async () =>
|
||||
[
|
||||
'/dev/disk3s5 on /System/Volumes/Data (apfs, local, journaled)',
|
||||
'//viewer@media/jellyfin on /Volumes/jellyfin (smbfs, nodev, nosuid)',
|
||||
].join('\n'),
|
||||
});
|
||||
|
||||
assert.equal(await detectRemoteMedia('/Volumes/jellyfin/movie.mkv'), true);
|
||||
assert.equal(await detectRemoteMedia('/Volumes/jellyfin-another/movie.mkv'), false);
|
||||
assert.equal(await detectRemoteMedia('/Users/viewer/movie.mkv'), false);
|
||||
});
|
||||
|
||||
test('remote media detector recognizes Linux network mount output', async () => {
|
||||
const detectRemoteMedia = createRemoteMediaPathDetector({
|
||||
platform: 'linux',
|
||||
readMountOutput: async () =>
|
||||
'//media/jellyfin on /mnt/Jellyfin\\040Media type cifs (rw,relatime)',
|
||||
});
|
||||
|
||||
assert.equal(await detectRemoteMedia('/mnt/Jellyfin Media/movie.mkv'), true);
|
||||
});
|
||||
|
||||
test('remote media detector shares its mount lookup between concurrent callers', async () => {
|
||||
let mountReads = 0;
|
||||
const detectRemoteMedia = createRemoteMediaPathDetector({
|
||||
platform: 'darwin',
|
||||
readMountOutput: async () => {
|
||||
mountReads += 1;
|
||||
return '//viewer@media/jellyfin on /Volumes/jellyfin (smbfs, nodev, nosuid)';
|
||||
},
|
||||
});
|
||||
|
||||
const results = await Promise.all(
|
||||
Array.from({ length: 6 }, () => detectRemoteMedia('/Volumes/jellyfin/movie.mkv')),
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
results,
|
||||
Array.from({ length: 6 }, () => true),
|
||||
);
|
||||
assert.equal(mountReads, 1);
|
||||
});
|
||||
|
||||
test('remote media detector recognizes URLs and Windows UNC paths without reading mounts', async () => {
|
||||
let mountReads = 0;
|
||||
const detectRemoteMedia = createRemoteMediaPathDetector({
|
||||
platform: 'win32',
|
||||
readMountOutput: async () => {
|
||||
mountReads += 1;
|
||||
return '';
|
||||
},
|
||||
});
|
||||
|
||||
assert.equal(await detectRemoteMedia('https://media.example/movie.mkv'), true);
|
||||
assert.equal(await detectRemoteMedia('\\\\media-server\\jellyfin\\movie.mkv'), true);
|
||||
assert.equal(mountReads, 0);
|
||||
});
|
||||
Reference in New Issue
Block a user