Fixed: Releases without a job folder importing extra files from another release

This commit is contained in:
Mark McDowall 2022-03-06 22:05:17 -08:00
parent 5df6f13f36
commit d02d1bbdfe
2 changed files with 46 additions and 2 deletions

View File

@ -121,7 +121,7 @@ namespace NzbDrone.Core.Test.Extras
WithExistingFile(file);
}
Mocker.GetMock<IDiskProvider>().Setup(s => s.GetFiles(_episodeFolder, SearchOption.AllDirectories))
Mocker.GetMock<IDiskProvider>().Setup(s => s.GetFiles(_episodeFolder, It.IsAny<SearchOption>()))
.Returns(files.ToArray());
}
@ -202,5 +202,45 @@ namespace NzbDrone.Core.Test.Extras
_subtitleService.Verify(v => v.ImportFiles(_localEpisode, _episodeFile, new List<string> { nfofile }, true), Times.Never());
_otherExtraService.Verify(v => v.ImportFiles(_localEpisode, _episodeFile, new List<string> { nfofile }, true), Times.Once());
}
[Test]
public void should_search_subtitles_when_importing_from_job_folder()
{
_localEpisode.FolderEpisodeInfo = new ParsedEpisodeInfo();
var subtitleFile = Path.Combine(_episodeFolder, "Series.Title.S01E01.en.srt").AsOsAgnostic();
var files = new List<string> {
_localEpisode.Path,
subtitleFile
};
WithExistingFiles(files);
Subject.ImportEpisode(_localEpisode, _episodeFile, true);
Mocker.GetMock<IDiskProvider>().Verify(v => v.GetFiles(_episodeFolder, SearchOption.AllDirectories), Times.Once);
Mocker.GetMock<IDiskProvider>().Verify(v => v.GetFiles(_episodeFolder, SearchOption.TopDirectoryOnly), Times.Never);
}
[Test]
public void should_not_search_subtitles_when_not_importing_from_job_folder()
{
_localEpisode.FolderEpisodeInfo = null;
var subtitleFile = Path.Combine(_episodeFolder, "Series.Title.S01E01.en.srt").AsOsAgnostic();
var files = new List<string> {
_localEpisode.Path,
subtitleFile
};
WithExistingFiles(files);
Subject.ImportEpisode(_localEpisode, _episodeFile, true);
Mocker.GetMock<IDiskProvider>().Verify(v => v.GetFiles(_episodeFolder, SearchOption.AllDirectories), Times.Never);
Mocker.GetMock<IDiskProvider>().Verify(v => v.GetFiles(_episodeFolder, SearchOption.TopDirectoryOnly), Times.Once);
}
}
}

View File

@ -61,13 +61,17 @@ namespace NzbDrone.Core.Extras
return;
}
var folderSearchOption = localEpisode.FolderEpisodeInfo == null
? SearchOption.TopDirectoryOnly
: SearchOption.AllDirectories;
var wantedExtensions = _configService.ExtraFileExtensions.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(e => e.Trim(' ', '.')
.Insert(0, "."))
.ToList();
var sourceFolder = _diskProvider.GetParentFolder(localEpisode.Path);
var files = _diskProvider.GetFiles(sourceFolder, SearchOption.AllDirectories);
var files = _diskProvider.GetFiles(sourceFolder, folderSearchOption);
var managedFiles = _extraFileManagers.Select((i) => new List<string>()).ToArray();
foreach (var file in files)