From b319cb95258042e5aa8ce9df4048843226ee7efb Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 6 Feb 2019 19:26:27 -0800 Subject: [PATCH] Fixed: Importing completed downloads from NZBGet with post processing script failing Fixes #2919 --- .../MediaFiles/ImportApprovedEpisodesFixture.cs | 17 +++++++++++++++++ .../EpisodeImport/ImportApprovedEpisodes.cs | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedEpisodesFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedEpisodesFixture.cs index bbb6677ef..afa060119 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedEpisodesFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/ImportApprovedEpisodesFixture.cs @@ -421,5 +421,22 @@ namespace NzbDrone.Core.Test.MediaFiles Mocker.GetMock() .Verify(v => v.Delete(It.IsAny(), DeleteMediaFileReason.ManualOverride), Times.Once()); } + + [Test] + public void should_use_folder_info_release_title_to_find_relative_path_when_download_client_item_has_an_empty_output_path() + { + var name = "Series.Title.S01E01.720p.HDTV.x264-Sonarr"; + var outputPath = Path.Combine(@"C:\Test\Unsorted\TV\".AsOsAgnostic(), name); + var localEpisode = _approvedDecisions.First().LocalEpisode; + + _downloadClientItem.OutputPath = new OsPath(); + localEpisode.FolderEpisodeInfo = new ParsedEpisodeInfo { ReleaseTitle = name }; + localEpisode.Path = Path.Combine(outputPath, "subfolder", name + ".mkv"); + + Subject.Import(new List { _approvedDecisions.First() }, true, _downloadClientItem); + + Mocker.GetMock().Verify(v => v.Add(It.Is(c => c.OriginalFilePath == $"{name}\\subfolder\\{name}.mkv".AsOsAgnostic()))); + } + } } diff --git a/src/NzbDrone.Core/MediaFiles/EpisodeImport/ImportApprovedEpisodes.cs b/src/NzbDrone.Core/MediaFiles/EpisodeImport/ImportApprovedEpisodes.cs index 2c3092a8c..8fe655da8 100644 --- a/src/NzbDrone.Core/MediaFiles/EpisodeImport/ImportApprovedEpisodes.cs +++ b/src/NzbDrone.Core/MediaFiles/EpisodeImport/ImportApprovedEpisodes.cs @@ -164,7 +164,7 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport { var path = localEpisode.Path; - if (downloadClientItem != null) + if (downloadClientItem != null && !downloadClientItem.OutputPath.IsEmpty) { var outputDirectory = downloadClientItem.OutputPath.Directory.ToString();