Return decisions when catching exceptions during decision making

Fixed: Manual Import not showing files that failed to process
Closes #1131
This commit is contained in:
Mark McDowall 2016-04-17 14:17:46 -07:00
parent aff6af1806
commit e9248e284e
4 changed files with 43 additions and 0 deletions

View File

@ -270,5 +270,23 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
result.First().RemoteEpisode.DownloadAllowed.Should().BeFalse();
}
[Test]
public void should_return_a_decision_when_exception_is_caught()
{
GivenSpecifications(_pass1);
Mocker.GetMock<IParsingService>().Setup(c => c.Map(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<int>(), It.IsAny<int>(), It.IsAny<SearchCriteriaBase>()))
.Throws<TestException>();
_reports = new List<ReleaseInfo>
{
new ReleaseInfo{Title = "The.Office.S03E115.DVDRip.XviD-OSiTV"},
};
Subject.GetRssDecision(_reports).Should().HaveCount(1);
ExceptionVerification.ExpectedErrors(1);
}
}
}

View File

@ -385,5 +385,24 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport
result.Single().LocalEpisode.Quality.Should().Be(_quality);
}
[Test]
public void should_return_a_decision_when_exception_is_caught()
{
Mocker.GetMock<IParsingService>()
.Setup(c => c.GetLocalEpisode(It.IsAny<string>(), It.IsAny<Series>(), It.IsAny<ParsedEpisodeInfo>(), It.IsAny<bool>()))
.Throws<TestException>();
_videoFiles = new List<string>
{
"The.Office.S03E115.DVDRip.XviD-OSiTV"
};
GivenVideoFiles(_videoFiles);
Subject.GetImportDecisions(_videoFiles, _series).Should().HaveCount(1);
ExceptionVerification.ExpectedErrors(1);
}
}
}

View File

@ -96,6 +96,9 @@ namespace NzbDrone.Core.DecisionEngine
catch (Exception e)
{
_logger.Error(e, "Couldn't process release.");
var remoteEpisode = new RemoteEpisode { Release = report };
decision = new DownloadDecision(remoteEpisode, new Rejection("Unexpected error processing release"));
}
reportNumber++;

View File

@ -112,6 +112,9 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport
catch (Exception e)
{
_logger.Error(e, "Couldn't import file. " + file);
var localEpisode = new LocalEpisode { Path = file };
decision = new ImportDecision(localEpisode, new Rejection("Unexpected error processing file"));
}
return decision;