aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTowyTowy <towy@airreps.link>2026-07-12 12:11:29 +0200
committerTowyTowy <towy@airreps.link>2026-07-12 12:11:29 +0200
commit5be844e1b755bca6b8dd23509f96b7040b16f2f3 (patch)
tree9a712241fa2904e33f287e3ac9d3329814228a0e /tests
parent53aafcd38e1f4558ff18f5258d0d46b3a0565783 (diff)
Fix 3D format detection when the tag is the last token of the path
Format3DParser drops the last character of the final path token: when IndexOfAny finds no more delimiters, the slice is taken with 'index = path.Length - 1', so e.g. "hsbs" is compared as "hsb" and never matches any rule. File paths are unaffected because the extension is always the final token, but directory based media have no extension. For DVD/BluRay folder rips (BaseVideoResolver parses the folder path via Set3DFormat), a trailing 3D tag such as "Gravity (2013) 3d hsbs/BDMV" is silently ignored and Video3DFormat is never set. This is a regression from 42a2cc174 which replaced the string.Split based FlagParser with span slicing; the Split implementation kept the final token intact. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs b/tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs
index d42bd66a1c..0e35071dd4 100644
--- a/tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs
@@ -20,6 +20,27 @@ namespace Jellyfin.Naming.Tests.Video
}
[Fact]
+ public void TestFormat3DAtEndOfPath()
+ {
+ // Directory based media (eg. DVD or BluRay folder rips) have no file extension,
+ // so the 3D tag can be the last token of the path.
+ Test("Super movie (2009) 3d hsbs", true, "hsbs");
+ Test("Super movie (2009).3d.sbs", true, "sbs");
+ Test("Super movie (2009) 3d htab", true, "htab");
+ Test("Super movie (2009).hsbs", true, "hsbs");
+ Test("Super movie (2009) 3d", false, null);
+ }
+
+ [Fact]
+ public void TestResolveDirectory3D()
+ {
+ var result = VideoResolver.ResolveDirectory("/movies/Oblivion (2013) 3d hsbs", _namingOptions);
+
+ Assert.True(result?.Is3D);
+ Assert.Equal("hsbs", result?.Format3D, true);
+ }
+
+ [Fact]
public void Test3DName()
{
var result = VideoResolver.ResolveFile("C:/Users/media/Desktop/Video Test/Movies/Oblivion/Oblivion.3d.hsbs.mkv", _namingOptions);