1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-16 11:37:58 +02:00

Broken ExtraFiles migration due to extentionless files

Fixed: Prevent extensionless files from being imported
Fixed: Broken migration due to extensionless extra files
This commit is contained in:
Mark McDowall 2017-03-06 11:00:38 -08:00
parent 47915d5e05
commit 081c5fc332
3 changed files with 35 additions and 1 deletions

View File

@ -10,6 +10,28 @@ namespace NzbDrone.Core.Test.Datastore.Migration
[TestFixture]
public class fix_extra_file_extensionsFixture : MigrationTest<fix_extra_file_extension>
{
[Test]
public void should_extra_files_that_do_not_have_an_extension()
{
var db = WithMigrationTestDb(c =>
{
c.Insert.IntoTable("ExtraFiles").Row(new
{
SeriesId = 1,
SeasonNumber = 1,
EpisodeFileId = 1,
RelativePath = "Series.Title.S01E01",
Added = "2016-05-30 20:23:02.3725923",
LastUpdated = "2016-05-30 20:23:02.3725923",
Extension = ""
});
});
var items = db.Query("Select * from ExtraFiles");
items.Should().BeEmpty();
}
[Test]
public void should_fix_double_extension()
{

View File

@ -10,6 +10,10 @@ public class fix_extra_file_extension : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
// Delete extraneous files without extensions that Sonarr found previously,
// these will be blocked from importing as well.
Execute.Sql("DELETE FROM ExtraFiles WHERE TRIM(Extension) = ''");
Execute.WithConnection(FixExtraFileExtension);
}

View File

@ -36,6 +36,14 @@ public override IEnumerable<ExtraFile> ProcessFiles(Series series, List<string>
foreach (var possibleExtraFile in filterResult.FilesOnDisk)
{
var extension = Path.GetExtension(possibleExtraFile);
if (extension.IsNullOrWhiteSpace())
{
_logger.Debug("No extension for file: {0}", possibleExtraFile);
continue;
}
var localEpisode = _parsingService.GetLocalEpisode(possibleExtraFile, series);
if (localEpisode == null)
@ -62,7 +70,7 @@ public override IEnumerable<ExtraFile> ProcessFiles(Series series, List<string>
SeasonNumber = localEpisode.SeasonNumber,
EpisodeFileId = localEpisode.Episodes.First().EpisodeFileId,
RelativePath = series.Path.GetRelativePath(possibleExtraFile),
Extension = Path.GetExtension(possibleExtraFile)
Extension = extension
};
extraFiles.Add(extraFile);