From 28c2ac9cc0c2c7d9ed6e38b8de83755899e210f5 Mon Sep 17 00:00:00 2001 From: cvium Date: Sat, 1 Jan 2022 20:07:03 +0100 Subject: [PATCH] Remove file extension filter and fix build --- .../Library/LibraryManager.cs | 2 +- .../Library/Resolvers/GenericVideoResolver.cs | 4 +- .../Library/LibraryManager/FindExtrasTests.cs | 49 +++++++++++++++++-- 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 694501d38..855fcc813 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -2700,7 +2700,7 @@ namespace Emby.Server.Implementations.Library var current = fileSystemChildren[i]; if (current.IsDirectory && _namingOptions.AllExtrasTypesFolderNames.ContainsKey(current.Name)) { - var filesInSubFolder = _fileSystem.GetFiles(current.FullName, _namingOptions.VideoFileExtensions, false, false); + var filesInSubFolder = _fileSystem.GetFiles(current.FullName, null, false, false); foreach (var file in filesInSubFolder) { if (!_extraResolver.TryGetExtraTypeForOwner(file.FullName, ownerVideoInfo, out var extraType)) diff --git a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs index 9b6838660..b8554bd51 100644 --- a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs @@ -6,14 +6,14 @@ using MediaBrowser.Controller.Entities; namespace Emby.Server.Implementations.Library.Resolvers { /// - /// Resolves a Path into a Video or Video subclass. + /// Resolves a Path into an instance of the class. /// /// The type of item to resolve. public class GenericVideoResolver : BaseVideoResolver where T : Video, new() { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The naming options. public GenericVideoResolver(NamingOptions namingOptions) diff --git a/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs index 5be111ad9..de4421320 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs +++ b/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs @@ -108,7 +108,7 @@ public class FindExtrasTests Name = "some trailer.mkv", IsDirectory = false } - }); + }).Verifiable(); _fileSystemMock.Setup(f => f.GetFiles( "/movies/Up/behind the scenes", @@ -123,7 +123,7 @@ public class FindExtrasTests Name = "the making of Up.mkv", IsDirectory = false } - }); + }).Verifiable(); _fileSystemMock.Setup(f => f.GetFiles( "/movies/Up/theme-music", @@ -138,17 +138,18 @@ public class FindExtrasTests Name = "theme2.mp3", IsDirectory = false } - }); + }).Verifiable(); var files = paths.Select(p => new FileSystemMetadata { FullName = p, Name = Path.GetFileName(p), - IsDirectory = string.IsNullOrEmpty(Path.GetExtension(p)) + IsDirectory = !Path.HasExtension(p) }).ToList(); var extras = _libraryManager.FindExtras(owner, files, new DirectoryService(_fileSystemMock.Object)).OrderBy(e => e.ExtraType).ToList(); + _fileSystemMock.Verify(); Assert.Equal(6, extras.Count); Assert.Equal(ExtraType.Trailer, extras[0].ExtraType); Assert.Equal(typeof(Trailer), extras[0].GetType()); @@ -215,6 +216,46 @@ public class FindExtrasTests Assert.Equal("/movies/Up/trailer.mkv", extras[0].Path); } + [Fact] + public void FindExtras_WrongExtensions_FindsNoExtras() + { + var owner = new Movie { Name = "Up", Path = "/movies/Up/Up.mkv" }; + var paths = new List + { + "/movies/Up/Up.mkv", + "/movies/Up/trailer.noext", + "/movies/Up/theme.png", + "/movies/Up/trailers" + }; + + var files = paths.Select(p => new FileSystemMetadata + { + FullName = p, + Name = Path.GetFileName(p), + IsDirectory = !Path.HasExtension(p) + }).ToList(); + + _fileSystemMock.Setup(f => f.GetFiles( + "/movies/Up/trailers", + It.IsAny(), + false, + false)) + .Returns(new List + { + new() + { + FullName = "/movies/Up/trailers/trailer.jpg", + Name = "trailer.jpg", + IsDirectory = false + } + }).Verifiable(); + + var extras = _libraryManager.FindExtras(owner, files, new DirectoryService(_fileSystemMock.Object)).OrderBy(e => e.ExtraType).ToList(); + + _fileSystemMock.Verify(); + Assert.Empty(extras); + } + [Fact] public void FindExtras_SeriesWithTrailers_FindsCorrectExtras() {