Your ROOT_URL in app.ini is https://git.cloudchain.link/ but you are visiting https://dash.bss.nz/open-source-mirrors/Lidarr/commit/da5713688d3fa3e69d0cf9004251397a3e2ea862
You should set ROOT_URL correctly, otherwise the web may not work correctly.
9 changed files with
109 additions and
89 deletions
@ -0,0 +1,70 @@
using FizzWare.NBuilder ;
using FluentAssertions ;
using NUnit.Framework ;
using NzbDrone.Core.Housekeeping.Housekeepers ;
using NzbDrone.Core.MediaFiles ;
using NzbDrone.Core.Metadata ;
using NzbDrone.Core.Metadata.Files ;
using NzbDrone.Core.Test.Framework ;
using NzbDrone.Core.Tv ;
namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
{
[TestFixture]
public class CleanupDuplicateMetadataFilesFixture : DbTest < CleanupDuplicateMetadataFiles , MetadataFile >
{
[Test]
public void should_not_delete_metadata_files_when_they_are_for_the_same_series_but_different_consumers ( )
{
var files = Builder < MetadataFile > . CreateListOfSize ( 2 )
. All ( )
. With ( m = > m . Type = MetadataType . SeriesMetadata )
. With ( m = > m . SeriesId = 1 )
. BuildListOfNew ( ) ;
Db . InsertMany ( files ) ;
Subject . Clean ( ) ;
AllStoredModels . Count . Should ( ) . Be ( files . Count ) ;
}
[Test]
public void should_not_delete_metadata_files_for_different_series ( )
{
var files = Builder < MetadataFile > . CreateListOfSize ( 2 )
. All ( )
. With ( m = > m . Type = MetadataType . SeriesMetadata )
. With ( m = > m . Consumer = "XbmcMetadata" )
. BuildListOfNew ( ) ;
Db . InsertMany ( files ) ;
Subject . Clean ( ) ;
AllStoredModels . Count . Should ( ) . Be ( files . Count ) ;
}
[Test]
public void should_delete_metadata_files_when_they_are_for_the_same_series_and_consumer ( )
{
var files = Builder < MetadataFile > . CreateListOfSize ( 2 )
. All ( )
. With ( m = > m . Type = MetadataType . SeriesMetadata )
. With ( m = > m . SeriesId = 1 )
. With ( m = > m . Consumer = "XbmcMetadata" )
. BuildListOfNew ( ) ;
Db . InsertMany ( files ) ;
Subject . Clean ( ) ;
AllStoredModels . Count . Should ( ) . Be ( 1 ) ;
}
[Test]
public void should_not_delete_metadata_files_when_there_is_only_one_for_that_series_and_consumer ( )
{
var file = Builder < MetadataFile > . CreateNew ( )
. BuildNew ( ) ;
Db . Insert ( file ) ;
Subject . Clean ( ) ;
AllStoredModels . Count . Should ( ) . Be ( 1 ) ;
}
}
}
@ -1,12 +1,10 @@
using System ;
using System.Linq ;
using FizzWare.NBuilder ;
using FluentAssertions ;
using Microsoft.Practices.ObjectBuilder2 ;
using NUnit.Framework ;
using NzbDrone.Core.Housekeeping.Housekeepers ;
using NzbDrone.Core.Jobs ;
using NzbDrone.Core.Organizer ;
using NzbDrone.Core.Test.Framework ;
namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
@ -136,6 +136,7 @@
<Compile Include= "Housekeeping\Housekeepers\CleanupOrphanedEpisodeFilesFixture.cs" />
<Compile Include= "Housekeeping\Housekeepers\CleanupAdditionalNamingSpecsFixture.cs" />
<Compile Include= "Housekeeping\Housekeepers\CleanupOrphanedMetadataFilesFixture.cs" />
<Compile Include= "Housekeeping\Housekeepers\CleanupDuplicateMetadataFilesFixture.cs" />
<Compile Include= "Housekeeping\Housekeepers\FixFutureRunScheduledTasksFixture.cs" />
<Compile Include= "IndexerSearchTests\SearchDefinitionFixture.cs" />
<Compile Include= "IndexerTests\BasicRssParserFixture.cs" />
@ -0,0 +1,37 @@
using NLog ;
using NzbDrone.Core.Datastore ;
namespace NzbDrone.Core.Housekeeping.Housekeepers
{
public class CleanupDuplicateMetadataFiles : IHousekeepingTask
{
private readonly IDatabase _database ;
private readonly Logger _logger ;
public CleanupDuplicateMetadataFiles ( IDatabase database , Logger logger )
{
_database = database ;
_logger = logger ;
}
public void Clean ( )
{
_logger . Debug ( "Running cleanup of duplicate metadata files" ) ;
DeleteDuplicateSeriesMetadata ( ) ;
}
private void DeleteDuplicateSeriesMetadata ( )
{
var mapper = _database . GetDataMapper ( ) ;
mapper . ExecuteNonQuery ( @ "DELETE FROM MetadataFiles
WHERE Id IN (
SELECT Id FROM MetadataFiles
WHERE Type = 1
GROUP BY SeriesId , Consumer
HAVING COUNT ( SeriesId ) > 1
) ");
}
}
}
@ -1,39 +0,0 @@
using System ;
using System.Collections.Generic ;
using NLog ;
using NzbDrone.Common ;
using NzbDrone.Common.Disk ;
using NzbDrone.Core.MediaFiles ;
using NzbDrone.Core.Metadata.Files ;
using NzbDrone.Core.Tv ;
namespace NzbDrone.Core.Metadata.Consumers.Fake
{
public class FakeMetadata : MetadataBase < FakeMetadataSettings >
{
public FakeMetadata ( IDiskProvider diskProvider , IHttpProvider httpProvider , Logger logger )
: base ( diskProvider , httpProvider , logger )
{
}
public override void OnSeriesUpdated ( Series series , List < MetadataFile > existingMetadataFiles , List < EpisodeFile > episodeFiles )
{
throw new NotImplementedException ( ) ;
}
public override void OnEpisodeImport ( Series series , EpisodeFile episodeFile , bool newDownload )
{
throw new NotImplementedException ( ) ;
}
public override void AfterRename ( Series series , List < MetadataFile > existingMetadataFiles , List < EpisodeFile > episodeFiles )
{
throw new NotImplementedException ( ) ;
}
public override MetadataFile FindMetadataFile ( Series series , string path )
{
return null ;
}
}
}
@ -1,41 +0,0 @@
using System ;
using FluentValidation ;
using FluentValidation.Results ;
using NzbDrone.Core.Annotations ;
using NzbDrone.Core.ThingiProvider ;
namespace NzbDrone.Core.Metadata.Consumers.Fake
{
public class FakeMetadataSettingsValidator : AbstractValidator < FakeMetadataSettings >
{
public FakeMetadataSettingsValidator ( )
{
}
}
public class FakeMetadataSettings : IProviderConfig
{
private static readonly FakeMetadataSettingsValidator Validator = new FakeMetadataSettingsValidator ( ) ;
public FakeMetadataSettings ( )
{
FakeSetting = true ;
}
[FieldDefinition(0, Label = "Fake Setting", Type = FieldType.Checkbox)]
public Boolean FakeSetting { get ; set ; }
public bool IsValid
{
get
{
return true ;
}
}
public ValidationResult Validate ( )
{
return Validator . Validate ( this ) ;
}
}
}
@ -2,7 +2,6 @@
using System.Collections.Generic ;
using System.IO ;
using System.Linq ;
using System.Runtime.Remoting.Messaging ;
using System.Text ;
using System.Text.RegularExpressions ;
using System.Xml ;
@ -10,7 +9,6 @@ using System.Xml.Linq;
using NLog ;
using NzbDrone.Common ;
using NzbDrone.Common.Disk ;
using NzbDrone.Core.Datastore ;
using NzbDrone.Core.MediaCover ;
using NzbDrone.Core.MediaFiles ;
using NzbDrone.Core.Messaging.Events ;
@ -4,7 +4,6 @@ using System.Linq;
using NLog ;
using NzbDrone.Common.Composition ;
using NzbDrone.Core.Messaging.Events ;
using NzbDrone.Core.Metadata.Consumers.Fake ;
using NzbDrone.Core.ThingiProvider ;
namespace NzbDrone.Core.Metadata
@ -30,8 +29,6 @@ namespace NzbDrone.Core.Metadata
foreach ( var provider in _providers )
{
if ( provider . GetType ( ) = = typeof ( FakeMetadata ) ) continue ; ;
definitions . Add ( new MetadataDefinition
{
Enable = false ,
@ -282,6 +282,7 @@
<Compile Include= "Housekeeping\Housekeepers\CleanupOrphanedMetadataFiles.cs" />
<Compile Include= "Housekeeping\Housekeepers\CleanupAdditionalNamingSpecs.cs" />
<Compile Include= "Housekeeping\Housekeepers\CleanupOrphanedBlacklist.cs" />
<Compile Include= "Housekeeping\Housekeepers\CleanupDuplicateMetadataFiles.cs" />
<Compile Include= "Housekeeping\Housekeepers\UpdateCleanTitleForSeries.cs" />
<Compile Include= "Housekeeping\Housekeepers\CleanupOrphanedEpisodeFiles.cs" />
<Compile Include= "Housekeeping\Housekeepers\FixFutureRunScheduledTasks.cs" />
@ -350,8 +351,6 @@
<Compile Include= "Metadata\Consumers\Wdtv\WdtvMetadata.cs" />
<Compile Include= "Metadata\Consumers\Wdtv\WdtvMetadataSettings.cs" />
<Compile Include= "Metadata\Files\CleanMetadataService.cs" />
<Compile Include= "Metadata\Consumers\Fake\Fake.cs" />
<Compile Include= "Metadata\Consumers\Fake\FakeSettings.cs" />
<Compile Include= "Metadata\Consumers\Xbmc\XbmcMetadata.cs" />
<Compile Include= "Metadata\Consumers\Xbmc\XbmcMetadataSettings.cs" />
<Compile Include= "Metadata\ExistingMetadataService.cs" />