1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-09-17 15:02:34 +02:00

Fixed: Better error messaging when import fails due to inaccessible path

This commit is contained in:
Mark McDowall 2015-04-14 07:06:08 -07:00
parent c3d15015fe
commit 2a4fd2bbde
2 changed files with 37 additions and 6 deletions

View File

@ -202,6 +202,9 @@ public void should_return_importresult_on_unknown_series()
Mocker.GetMock<IDiskProvider>().Setup(c => c.FolderExists(It.IsAny<string>()))
.Returns(false);
Mocker.GetMock<IDiskProvider>().Setup(c => c.FileExists(It.IsAny<string>()))
.Returns(true);
var fileName = @"C:\folder\file.mkv".AsOsAgnostic();
var result = Subject.ProcessPath(fileName);
@ -275,7 +278,7 @@ public void should_use_folder_if_folder_import()
imported.Add(new ImportDecision(localEpisode));
var result = Subject.ProcessPath(fileName);
Subject.ProcessPath(fileName);
Mocker.GetMock<IMakeImportDecision>()
.Verify(s => s.GetImportDecisions(It.IsAny<List<String>>(), It.IsAny<Series>(), It.Is<ParsedEpisodeInfo>(v => v.AbsoluteEpisodeNumbers.First() == 9), true), Times.Once());
@ -291,6 +294,9 @@ public void should_not_use_folder_if_file_import()
Mocker.GetMock<IDiskProvider>().Setup(c => c.FolderExists(fileName))
.Returns(false);
Mocker.GetMock<IDiskProvider>().Setup(c => c.FileExists(fileName))
.Returns(true);
var localEpisode = new LocalEpisode();
var imported = new List<ImportDecision>();
@ -302,6 +308,25 @@ public void should_not_use_folder_if_file_import()
.Verify(s => s.GetImportDecisions(It.IsAny<List<String>>(), It.IsAny<Series>(), null, true), Times.Once());
}
[Test]
public void should_not_process_if_file_and_folder_do_not_exist()
{
var folderName = @"C:\media\ba09030e-1234-1234-1234-123456789abc\[HorribleSubs] Maria the Virgin Witch - 09 [720p]".AsOsAgnostic();
Mocker.GetMock<IDiskProvider>().Setup(c => c.FolderExists(folderName))
.Returns(false);
Mocker.GetMock<IDiskProvider>().Setup(c => c.FileExists(folderName))
.Returns(false);
Subject.ProcessPath(folderName).Should().BeEmpty();
Mocker.GetMock<IParsingService>()
.Verify(v => v.GetSeries(It.IsAny<string>()), Times.Never());
ExceptionVerification.ExpectedErrors(1);
}
private void VerifyNoImport()
{
Mocker.GetMock<IImportApprovedEpisodes>().Verify(c => c.Import(It.IsAny<List<ImportDecision>>(), true, null),

View File

@ -82,14 +82,20 @@ public List<ImportResult> ProcessPath(string path, Series series = null, Downloa
return ProcessFolder(directoryInfo, series, downloadClientItem);
}
var fileInfo = new FileInfo(path);
if (series == null)
if (_diskProvider.FileExists(path))
{
return ProcessFile(fileInfo, downloadClientItem);
var fileInfo = new FileInfo(path);
if (series == null)
{
return ProcessFile(fileInfo, downloadClientItem);
}
return ProcessFile(fileInfo, series, downloadClientItem);
}
return ProcessFile(fileInfo, series, downloadClientItem);
_logger.Error("Import failed, path does not exist or is not accessible by Sonarr: {0}", path);
return new List<ImportResult>();
}
private List<ImportResult> ProcessFolder(DirectoryInfo directoryInfo, DownloadClientItem downloadClientItem = null)