From 4d589422e6016950c85882b3df7303e401fe9939 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 29 Aug 2024 14:37:17 +0300 Subject: [PATCH] Fixed: Importing files without media info available --- .../UpdateMediaInfoServiceFixture.cs | 26 +++++++++++++++++++ .../MediaInfo/UpdateMediaInfoService.cs | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/UpdateMediaInfoServiceFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/UpdateMediaInfoServiceFixture.cs index e66e889ad..457baf120 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/UpdateMediaInfoServiceFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/MediaInfo/UpdateMediaInfoServiceFixture.cs @@ -60,6 +60,7 @@ public void should_skip_up_to_date_media_info() { var movieFiles = Builder.CreateListOfSize(3) .All() + .With(v => v.Path = null) .With(v => v.RelativePath = "media.mkv") .TheFirst(1) .With(v => v.MediaInfo = new MediaInfoModel { SchemaRevision = VideoFileInfoReader.CURRENT_MEDIA_INFO_SCHEMA_REVISION }) @@ -86,6 +87,7 @@ public void should_skip_not_yet_date_media_info() { var movieFiles = Builder.CreateListOfSize(3) .All() + .With(v => v.Path = null) .With(v => v.RelativePath = "media.mkv") .TheFirst(1) .With(v => v.MediaInfo = new MediaInfoModel { SchemaRevision = VideoFileInfoReader.MINIMUM_MEDIA_INFO_SCHEMA_REVISION }) @@ -112,6 +114,7 @@ public void should_update_outdated_media_info() { var movieFiles = Builder.CreateListOfSize(3) .All() + .With(v => v.Path = null) .With(v => v.RelativePath = "media.mkv") .TheFirst(1) .With(v => v.MediaInfo = new MediaInfoModel()) @@ -161,6 +164,7 @@ public void should_continue_after_failure() { var movieFiles = Builder.CreateListOfSize(2) .All() + .With(v => v.Path = null) .With(v => v.RelativePath = "media.mkv") .TheFirst(1) .With(v => v.RelativePath = "media2.mkv") @@ -240,6 +244,7 @@ public void should_not_update_if_media_info_disabled() public void should_update_media_info() { var movieFile = Builder.CreateNew() + .With(v => v.Path = null) .With(v => v.RelativePath = "media.mkv") .With(e => e.MediaInfo = new MediaInfoModel { SchemaRevision = 3 }) .Build(); @@ -288,5 +293,26 @@ public void should_not_save_movie_file_if_new_info_is_null() Mocker.GetMock() .Verify(v => v.Update(movieFile), Times.Never()); } + + [Test] + public void should_not_update_media_info_if_file_does_not_support_media_info() + { + var path = Path.Combine(_movie.Path, "media.iso"); + + var movieFile = Builder.CreateNew() + .With(v => v.Path = path) + .Build(); + + GivenFileExists(); + GivenFailedScan(path); + + Subject.Update(movieFile, _movie); + + Mocker.GetMock() + .Verify(v => v.GetMediaInfo(path), Times.Once()); + + Mocker.GetMock() + .Verify(v => v.Update(movieFile), Times.Never()); + } } } diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/UpdateMediaInfoService.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/UpdateMediaInfoService.cs index 92059947d..9c4264dd0 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/UpdateMediaInfoService.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/UpdateMediaInfoService.cs @@ -2,6 +2,7 @@ using System.Linq; using NLog; using NzbDrone.Common.Disk; +using NzbDrone.Common.Extensions; using NzbDrone.Core.Configuration; using NzbDrone.Core.MediaFiles.Events; using NzbDrone.Core.Messaging.Events; @@ -68,7 +69,7 @@ public bool Update(MovieFile movieFile, Movie movie) public bool UpdateMediaInfo(MovieFile movieFile, Movie movie) { - var path = Path.Combine(movie.Path, movieFile.RelativePath); + var path = movieFile.Path.IsNotNullOrWhiteSpace() ? movieFile.Path : Path.Combine(movie.Path, movieFile.RelativePath); if (!_diskProvider.FileExists(path)) {