refactor: More TrashLib splitting

spectre-console-remove-di-hacks
Robert Dailey 8 months ago
parent 0b31352c3c
commit a4cfa4706d

@ -7,7 +7,6 @@
<PackageVersion Include="Autofac.Extras.Ordering" Version="4.0.0" /> <PackageVersion Include="Autofac.Extras.Ordering" Version="4.0.0" />
<PackageVersion Include="AutofacSerilogIntegration" Version="5.0.0" /> <PackageVersion Include="AutofacSerilogIntegration" Version="5.0.0" />
<PackageVersion Include="AutoMapper" Version="12.0.1" /> <PackageVersion Include="AutoMapper" Version="12.0.1" />
<PackageVersion Include="AutoMapper.Collection" Version="9.0.0" />
<PackageVersion Include="AutoMapper.Contrib.Autofac.DependencyInjection" Version="7.2.0" /> <PackageVersion Include="AutoMapper.Contrib.Autofac.DependencyInjection" Version="7.2.0" />
<PackageVersion Include="CliWrap" Version="3.6.4" /> <PackageVersion Include="CliWrap" Version="3.6.4" />
<PackageVersion Include="FluentValidation" Version="11.7.1" /> <PackageVersion Include="FluentValidation" Version="11.7.1" />

@ -2,10 +2,10 @@ using System.IO.Abstractions;
using System.Reflection; using System.Reflection;
using System.Text.Json; using System.Text.Json;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Recyclarr.Cli.Console.Helpers;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.Json; using Recyclarr.Json;
using Recyclarr.TrashLib.Interfaces;
namespace Recyclarr.Cli.Cache; namespace Recyclarr.Cli.Cache;

@ -3,7 +3,6 @@ using System.Reflection;
using Autofac; using Autofac;
using Autofac.Extras.Ordering; using Autofac.Extras.Ordering;
using AutoMapper.Contrib.Autofac.DependencyInjection; using AutoMapper.Contrib.Autofac.DependencyInjection;
using AutoMapper.EquivalencyExpression;
using Recyclarr.Cli.Cache; using Recyclarr.Cli.Cache;
using Recyclarr.Cli.Console.Helpers; using Recyclarr.Cli.Console.Helpers;
using Recyclarr.Cli.Console.Setup; using Recyclarr.Cli.Console.Setup;
@ -17,11 +16,15 @@ using Recyclarr.Cli.Pipelines.ReleaseProfile;
using Recyclarr.Cli.Pipelines.Tags; using Recyclarr.Cli.Pipelines.Tags;
using Recyclarr.Cli.Processors; using Recyclarr.Cli.Processors;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Platform; using Recyclarr.Compatibility;
using Recyclarr.TrashLib;
using Recyclarr.Config; using Recyclarr.Config;
using Recyclarr.Json;
using Recyclarr.Platform;
using Recyclarr.Repo;
using Recyclarr.ServarrApi;
using Recyclarr.Settings;
using Recyclarr.TrashGuide; using Recyclarr.TrashGuide;
using Recyclarr.TrashLib.Interfaces; using Recyclarr.VersionControl;
using Recyclarr.Yaml; using Recyclarr.Yaml;
using Serilog.Core; using Serilog.Core;
using Spectre.Console.Cli; using Spectre.Console.Cli;
@ -34,21 +37,31 @@ public static class CompositionRoot
{ {
var thisAssembly = typeof(CompositionRoot).Assembly; var thisAssembly = typeof(CompositionRoot).Assembly;
// Needed for Autofac.Extras.Ordering
builder.RegisterSource<OrderedRegistrationSource>();
RegisterLogger(builder); RegisterLogger(builder);
builder.RegisterModule<MigrationAutofacModule>(); builder.RegisterModule<MigrationAutofacModule>();
builder.RegisterModule<TrashLibAutofacModule>();
builder.RegisterModule<ConfigAutofacModule>(); builder.RegisterModule<ConfigAutofacModule>();
builder.RegisterModule<GuideAutofacModule>(); builder.RegisterModule<GuideAutofacModule>();
builder.RegisterModule<YamlAutofacModule>(); builder.RegisterModule<YamlAutofacModule>();
builder.RegisterModule<ServiceProcessorsAutofacModule>(); builder.RegisterModule<ServiceProcessorsAutofacModule>();
builder.RegisterModule<CacheAutofacModule>(); builder.RegisterModule<CacheAutofacModule>();
builder.RegisterModule<SettingsAutofacModule>();
builder.RegisterModule<ApiServicesAutofacModule>();
builder.RegisterModule<VersionControlAutofacModule>();
builder.RegisterModule<RepoAutofacModule>();
builder.RegisterModule<CompatibilityAutofacModule>();
builder.RegisterModule<JsonAutofacModule>();
builder.RegisterModule<PlatformAutofacModule>();
builder.RegisterModule<CommonAutofacModule>();
builder.RegisterType<CacheStoragePath>().As<ICacheStoragePath>(); builder.RegisterType<CacheStoragePath>().As<ICacheStoragePath>();
builder.RegisterType<FileSystem>().As<IFileSystem>(); builder.RegisterType<FileSystem>().As<IFileSystem>();
builder.Register(_ => new ResourceDataReader(thisAssembly)).As<IResourceDataReader>(); builder.Register(_ => new ResourceDataReader(thisAssembly)).As<IResourceDataReader>();
builder.RegisterAutoMapper(c => c.AddCollectionMappers(), thisAssembly); builder.RegisterAutoMapper(thisAssembly);
CommandRegistrations(builder); CommandRegistrations(builder);
PipelineRegistrations(builder); PipelineRegistrations(builder);

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.ExceptionTypes; namespace Recyclarr.Cli.Console;
public class CommandException : Exception public class CommandException : Exception
{ {

@ -4,7 +4,6 @@ using JetBrains.Annotations;
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Processors.Config; using Recyclarr.Cli.Processors.Config;
using Recyclarr.Repo; using Recyclarr.Repo;
using Recyclarr.TrashLib.ExceptionTypes;
using Spectre.Console.Cli; using Spectre.Console.Cli;
namespace Recyclarr.Cli.Console.Commands; namespace Recyclarr.Cli.Console.Commands;

@ -4,7 +4,6 @@ using System.IO.Abstractions;
using System.Text; using System.Text;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.Platform; using Recyclarr.Platform;
using Recyclarr.TrashLib.Interfaces;
namespace Recyclarr.Cli.Console.Helpers; namespace Recyclarr.Cli.Console.Helpers;

@ -1,7 +1,7 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
namespace Recyclarr.TrashLib.Interfaces; namespace Recyclarr.Cli.Console.Helpers;
public interface ICacheStoragePath public interface ICacheStoragePath
{ {

@ -1,5 +1,4 @@
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.Cli.Processors.Config; namespace Recyclarr.Cli.Processors.Config;

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.ExceptionTypes; namespace Recyclarr.Cli.Processors.Config;
public class FileExistsException : Exception public class FileExistsException : Exception
{ {

@ -3,7 +3,6 @@ using Recyclarr.Cli.Console.Settings;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Platform; using Recyclarr.Platform;
using Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.Cli.Processors.Config; namespace Recyclarr.Cli.Processors.Config;

@ -2,7 +2,6 @@ using System.IO.Abstractions;
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Platform; using Recyclarr.Platform;
using Recyclarr.TrashLib.ExceptionTypes;
using Recyclarr.TrashGuide; using Recyclarr.TrashGuide;
namespace Recyclarr.Cli.Processors.Config; namespace Recyclarr.Cli.Processors.Config;

@ -1,10 +1,11 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Console;
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.TrashLib.Compatibility.Sonarr; using Recyclarr.Compatibility;
using Recyclarr.Compatibility.Sonarr;
using Recyclarr.Config; using Recyclarr.Config;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services; using Recyclarr.ServarrApi.Services;
using Recyclarr.TrashLib.ExceptionTypes;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
using Spectre.Console; using Spectre.Console;

@ -1,8 +1,8 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Cli.Console;
using Recyclarr.Config.ExceptionTypes; using Recyclarr.Config.ExceptionTypes;
using Recyclarr.Config.Parsing.ErrorHandling; using Recyclarr.Config.Parsing.ErrorHandling;
using Recyclarr.ServarrApi.Http; using Recyclarr.ServarrApi.Http;
using Recyclarr.TrashLib.ExceptionTypes;
using Recyclarr.VersionControl; using Recyclarr.VersionControl;
namespace Recyclarr.Cli.Processors.ErrorHandling; namespace Recyclarr.Cli.Processors.ErrorHandling;

@ -1,7 +1,7 @@
using System.Runtime.Serialization; using System.Runtime.Serialization;
using JetBrains.Annotations; using JetBrains.Annotations;
namespace Recyclarr.TrashLib.ExceptionTypes; namespace Recyclarr.Cli.Processors;
[Serializable] [Serializable]
public class FatalException : Exception public class FatalException : Exception

@ -2,7 +2,7 @@ using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Processors.ErrorHandling; using Recyclarr.Cli.Processors.ErrorHandling;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.TrashLib.Compatibility; using Recyclarr.Compatibility;
using Recyclarr.Config; using Recyclarr.Config;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Spectre.Console; using Spectre.Console;

@ -31,9 +31,9 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Recyclarr.Common\Recyclarr.Common.csproj" /> <ProjectReference Include="..\Recyclarr.Common\Recyclarr.Common.csproj" />
<ProjectReference Include="..\Recyclarr.Compatibility\Recyclarr.Compatibility.csproj" />
<ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" /> <ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" />
<ProjectReference Include="..\Recyclarr.TrashGuide\Recyclarr.TrashGuide.csproj" /> <ProjectReference Include="..\Recyclarr.TrashGuide\Recyclarr.TrashGuide.csproj" />
<ProjectReference Include="..\Recyclarr.TrashLib\Recyclarr.TrashLib.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -0,0 +1,14 @@
using Autofac;
using Recyclarr.Common.FluentValidation;
namespace Recyclarr.Common;
public class CommonAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.RegisterType<DefaultEnvironment>().As<IEnvironment>();
builder.RegisterType<RuntimeValidationService>().As<IRuntimeValidationService>();
}
}

@ -1,8 +1,8 @@
using Autofac; using Autofac;
using Recyclarr.TrashLib.Compatibility.Radarr; using Recyclarr.Compatibility.Radarr;
using Recyclarr.TrashLib.Compatibility.Sonarr; using Recyclarr.Compatibility.Sonarr;
namespace Recyclarr.TrashLib.Compatibility; namespace Recyclarr.Compatibility;
public class CompatibilityAutofacModule : Module public class CompatibilityAutofacModule : Module
{ {

@ -1,6 +1,6 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
namespace Recyclarr.TrashLib.Compatibility; namespace Recyclarr.Compatibility;
public interface IServiceInformation public interface IServiceInformation
{ {

@ -1,6 +1,6 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
namespace Recyclarr.TrashLib.Compatibility.Radarr; namespace Recyclarr.Compatibility.Radarr;
public interface IRadarrCapabilityFetcher public interface IRadarrCapabilityFetcher
{ {

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.Compatibility.Radarr; namespace Recyclarr.Compatibility.Radarr;
// ReSharper disable once NotAccessedPositionalProperty.Global // ReSharper disable once NotAccessedPositionalProperty.Global
// //

@ -1,6 +1,6 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
namespace Recyclarr.TrashLib.Compatibility.Radarr; namespace Recyclarr.Compatibility.Radarr;
public class RadarrCapabilityEnforcer public class RadarrCapabilityEnforcer
{ {

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.Compatibility.Radarr; namespace Recyclarr.Compatibility.Radarr;
public class RadarrCapabilityFetcher : ServiceCapabilityFetcher<RadarrCapabilities>, IRadarrCapabilityFetcher public class RadarrCapabilityFetcher : ServiceCapabilityFetcher<RadarrCapabilities>, IRadarrCapabilityFetcher
{ {

@ -1,10 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" /> <PackageReference Include="Autofac" />
<ProjectReference Include="..\Recyclarr.ServarrApi\Recyclarr.ServarrApi.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Autofac.Extras.Ordering" /> <ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" />
<PackageReference Include="JetBrains.Annotations" /> <ProjectReference Include="..\Recyclarr.ServarrApi\Recyclarr.ServarrApi.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>

@ -1,8 +1,8 @@
using Recyclarr.Compatibility.Radarr;
using Recyclarr.Compatibility.Sonarr;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.Compatibility.Radarr;
using Recyclarr.TrashLib.Compatibility.Sonarr;
namespace Recyclarr.TrashLib.Compatibility; namespace Recyclarr.Compatibility;
public class ServiceAgnosticCapabilityEnforcer public class ServiceAgnosticCapabilityEnforcer
{ {

@ -1,6 +1,6 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
namespace Recyclarr.TrashLib.Compatibility; namespace Recyclarr.Compatibility;
public abstract class ServiceCapabilityFetcher<T> where T : class public abstract class ServiceCapabilityFetcher<T> where T : class
{ {

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.ExceptionTypes; namespace Recyclarr.Compatibility;
public class ServiceIncompatibilityException : Exception public class ServiceIncompatibilityException : Exception
{ {

@ -1,8 +1,9 @@
using Flurl.Http; using Flurl.Http;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services; using Recyclarr.ServarrApi.Services;
using Serilog;
namespace Recyclarr.TrashLib.Compatibility; namespace Recyclarr.Compatibility;
public class ServiceInformation : IServiceInformation public class ServiceInformation : IServiceInformation
{ {

@ -1,6 +1,6 @@
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
namespace Recyclarr.TrashLib.Compatibility.Sonarr; namespace Recyclarr.Compatibility.Sonarr;
public interface ISonarrCapabilityFetcher public interface ISonarrCapabilityFetcher
{ {

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.Compatibility.Sonarr; namespace Recyclarr.Compatibility.Sonarr;
public record SonarrCapabilities public record SonarrCapabilities
{ {

@ -1,8 +1,7 @@
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.TrashLib.Compatibility.Sonarr; namespace Recyclarr.Compatibility.Sonarr;
public class SonarrCapabilityEnforcer public class SonarrCapabilityEnforcer
{ {

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.Compatibility.Sonarr; namespace Recyclarr.Compatibility.Sonarr;
public class SonarrCapabilityFetcher : ServiceCapabilityFetcher<SonarrCapabilities>, ISonarrCapabilityFetcher public class SonarrCapabilityFetcher : ServiceCapabilityFetcher<SonarrCapabilities>, ISonarrCapabilityFetcher
{ {

@ -1,6 +1,5 @@
using Autofac; using Autofac;
using AutoMapper.Contrib.Autofac.DependencyInjection; using AutoMapper.Contrib.Autofac.DependencyInjection;
using AutoMapper.EquivalencyExpression;
using FluentValidation; using FluentValidation;
using Recyclarr.Config.Parsing; using Recyclarr.Config.Parsing;
using Recyclarr.Config.Parsing.PostProcessing; using Recyclarr.Config.Parsing.PostProcessing;
@ -14,7 +13,7 @@ public class ConfigAutofacModule : Module
{ {
protected override void Load(ContainerBuilder builder) protected override void Load(ContainerBuilder builder)
{ {
builder.RegisterAutoMapper(c => c.AddCollectionMappers(), ThisAssembly); builder.RegisterAutoMapper(ThisAssembly);
builder.RegisterAssemblyTypes(ThisAssembly) builder.RegisterAssemblyTypes(ThisAssembly)
.AssignableTo<IYamlBehavior>() .AssignableTo<IYamlBehavior>()

@ -1,4 +1,4 @@
namespace Recyclarr.TrashLib.ExceptionTypes; namespace Recyclarr.Config.Parsing.ErrorHandling;
public class PostProcessingException : Exception public class PostProcessingException : Exception
{ {

@ -2,7 +2,6 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Autofac" /> <PackageReference Include="Autofac" />
<PackageReference Include="AutoMapper" /> <PackageReference Include="AutoMapper" />
<PackageReference Include="AutoMapper.Collection" />
<PackageReference Include="AutoMapper.Contrib.Autofac.DependencyInjection" /> <PackageReference Include="AutoMapper.Contrib.Autofac.DependencyInjection" />
<PackageReference Include="FluentValidation" /> <PackageReference Include="FluentValidation" />
<PackageReference Include="JetBrains.Annotations" /> <PackageReference Include="JetBrains.Annotations" />

@ -0,0 +1,26 @@
using Autofac;
namespace Recyclarr.Platform;
public class PlatformAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
RegisterAppPaths(builder);
}
private static void RegisterAppPaths(ContainerBuilder builder)
{
builder.RegisterType<DefaultAppDataSetup>();
builder.Register(c =>
{
var appData = c.Resolve<AppDataPathProvider>();
var dataSetup = c.Resolve<DefaultAppDataSetup>();
return dataSetup.CreateAppPaths(appData.AppDataPath);
})
.As<IAppPaths>()
.SingleInstance();
}
}

@ -0,0 +1,12 @@
using Autofac;
namespace Recyclarr.Settings;
public class SettingsAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.RegisterType<SettingsProvider>().As<ISettingsProvider>().SingleInstance();
}
}

@ -1,17 +0,0 @@
using System.Runtime.Serialization;
namespace Recyclarr.TrashLib.ExceptionTypes;
[Serializable]
public class VersionException : Exception
{
public VersionException(string msg)
: base(msg)
{
}
protected VersionException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}

@ -1,2 +0,0 @@
global using SuperLinq;
global using Serilog;

@ -1,55 +0,0 @@
using Autofac;
using Autofac.Extras.Ordering;
using Recyclarr.Common;
using Recyclarr.Common.FluentValidation;
using Recyclarr.Json;
using Recyclarr.Platform;
using Recyclarr.Repo;
using Recyclarr.ServarrApi;
using Recyclarr.Settings;
using Recyclarr.TrashLib.Compatibility;
using Recyclarr.VersionControl;
namespace Recyclarr.TrashLib;
public class TrashLibAutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
RegisterAppPaths(builder);
CommonRegistrations(builder);
// Needed for Autofac.Extras.Ordering
builder.RegisterSource<OrderedRegistrationSource>();
builder.RegisterModule<VersionControlAutofacModule>();
builder.RegisterModule<RepoAutofacModule>();
builder.RegisterModule<CompatibilityAutofacModule>();
builder.RegisterModule<ApiServicesAutofacModule>();
builder.RegisterModule<JsonAutofacModule>();
builder.RegisterType<SettingsProvider>().As<ISettingsProvider>().SingleInstance();
}
private static void CommonRegistrations(ContainerBuilder builder)
{
builder.RegisterType<DefaultEnvironment>().As<IEnvironment>();
builder.RegisterType<RuntimeValidationService>().As<IRuntimeValidationService>();
}
private static void RegisterAppPaths(ContainerBuilder builder)
{
builder.RegisterType<DefaultAppDataSetup>();
builder.Register(c =>
{
var appData = c.Resolve<AppDataPathProvider>();
var dataSetup = c.Resolve<DefaultAppDataSetup>();
return dataSetup.CreateAppPaths(appData.AppDataPath);
})
.As<IAppPaths>()
.SingleInstance();
}
}

@ -5,12 +5,8 @@ VisualStudioVersion = 17.3.32825.248
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli", "Recyclarr.Cli\Recyclarr.Cli.csproj", "{CD5C6F99-C587-4B7C-86AE-550FA4A5594A}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli", "Recyclarr.Cli\Recyclarr.Cli.csproj", "{CD5C6F99-C587-4B7C-86AE-550FA4A5594A}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli.Tests", "tests\Recyclarr.Cli.Tests\Recyclarr.Cli.Tests.csproj", "{217D5972-4BB7-4343-9043-C30BD9A1811E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TestLibrary", "tests\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj", "{49F28A82-468F-4C48-9A59-D41B8FE26D6E}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TestLibrary", "tests\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj", "{49F28A82-468F-4C48-9A59-D41B8FE26D6E}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TestLibrary.Tests", "tests\Recyclarr.TestLibrary.Tests\Recyclarr.TestLibrary.Tests.csproj", "{BF105B2F-8E13-48AD-BF72-DF7EFEB018B6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{305C2AC5-803F-41B3-92D8-4AD2B2E3E130}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{305C2AC5-803F-41B3-92D8-4AD2B2E3E130}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
.editorconfig = ..\.editorconfig .editorconfig = ..\.editorconfig
@ -21,20 +17,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{305C2AC5
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common", "Recyclarr.Common\Recyclarr.Common.csproj", "{18CF1FCA-7983-4423-8B7E-4A830108C624}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common", "Recyclarr.Common\Recyclarr.Common.csproj", "{18CF1FCA-7983-4423-8B7E-4A830108C624}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common.Tests", "tests\Recyclarr.Common.Tests\Recyclarr.Common.Tests.csproj", "{0720939D-1CA6-43D7-BBED-F8F894C4F562}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Tests", "tests\Recyclarr.Tests\Recyclarr.Tests.csproj", "{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TrashLib.TestLibrary", "tests\Recyclarr.TrashLib.TestLibrary\Recyclarr.TrashLib.TestLibrary.csproj", "{33226068-65E3-4890-8671-59A56BA3F6F0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TrashLib", "Recyclarr.TrashLib\Recyclarr.TrashLib.csproj", "{4F6ACBA6-9A7D-487C-ACC1-787CCC90A381}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.TrashLib.Tests", "tests\Recyclarr.TrashLib.Tests\Recyclarr.TrashLib.Tests.csproj", "{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli.TestLibrary", "tests\Recyclarr.Cli.TestLibrary\Recyclarr.Cli.TestLibrary.csproj", "{77D1C695-94D4-46A9-8F12-41E54AF97750}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Gui", "Recyclarr.Gui\Recyclarr.Gui.csproj", "{53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Gui", "Recyclarr.Gui\Recyclarr.Gui.csproj", "{53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common.TestLibrary", "tests\Recyclarr.Common.TestLibrary\Recyclarr.Common.TestLibrary.csproj", "{A92321B5-2796-467B-B5A5-2BFC41167A25}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{18E17C53-F600-40AE-82C1-3CD1E547C307}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{18E17C53-F600-40AE-82C1-3CD1E547C307}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
tests\Directory.Build.props = tests\Directory.Build.props tests\Directory.Build.props = tests\Directory.Build.props
@ -46,20 +32,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Yaml", "Recyclarr
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.TrashGuide", "Recyclarr.TrashGuide\Recyclarr.TrashGuide.csproj", "{37220364-7C1E-4561-A369-C32BA195A0C3}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.TrashGuide", "Recyclarr.TrashGuide\Recyclarr.TrashGuide.csproj", "{37220364-7C1E-4561-A369-C32BA195A0C3}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.TrashGuide.Tests", "tests\Recyclarr.TrashGuide.Tests\Recyclarr.TrashGuide.Tests.csproj", "{0E5C6E86-F899-4743-8DCF-7812E717C604}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Config.Tests", "tests\Recyclarr.Config.Tests\Recyclarr.Config.Tests.csproj", "{2B4CAFB7-02D7-4909-98C4-7393C1366C39}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Config.TestLibrary", "tests\Recyclarr.Config.TestLibrary\Recyclarr.Config.TestLibrary.csproj", "{533299C5-71A9-4461-90BB-05C3404F2143}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.TrashGuide.TestLibrary", "tests\Recyclarr.TrashGuide.TestLibrary\Recyclarr.TrashGuide.TestLibrary.csproj", "{B3FC265C-36EF-4815-9EB1-CB878FBEE6D6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Json", "Recyclarr.Json\Recyclarr.Json.csproj", "{A9E2F11E-73F8-48CC-8770-0AFD41E80141}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Json", "Recyclarr.Json\Recyclarr.Json.csproj", "{A9E2F11E-73F8-48CC-8770-0AFD41E80141}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Json.Tests", "tests\Recyclarr.Json.Tests\Recyclarr.Json.Tests.csproj", "{737A1B22-F3A5-4920-AED7-77E756D14113}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Json.TestLibrary", "tests\Recyclarr.Json.TestLibrary\Recyclarr.Json.TestLibrary.csproj", "{59B75C08-F144-4190-A7D0-C027044147D2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Platform", "Recyclarr.Platform\Recyclarr.Platform.csproj", "{CB296D81-813B-48C3-9D4B-A52951EF26BF}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Platform", "Recyclarr.Platform\Recyclarr.Platform.csproj", "{CB296D81-813B-48C3-9D4B-A52951EF26BF}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.VersionControl", "Recyclarr.VersionControl\Recyclarr.VersionControl.csproj", "{0495507A-0307-43EA-B97F-EDF2C0241839}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.VersionControl", "Recyclarr.VersionControl\Recyclarr.VersionControl.csproj", "{0495507A-0307-43EA-B97F-EDF2C0241839}"
@ -70,6 +44,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Settings", "Recyc
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.ServarrApi", "Recyclarr.ServarrApi\Recyclarr.ServarrApi.csproj", "{5B48995A-1181-46AA-AC38-C040BDD3D7B7}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.ServarrApi", "Recyclarr.ServarrApi\Recyclarr.ServarrApi.csproj", "{5B48995A-1181-46AA-AC38-C040BDD3D7B7}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Compatibility", "Recyclarr.Compatibility\Recyclarr.Compatibility.csproj", "{03B4A46E-234D-47C9-8078-0B749800229A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Tests.TestLibrary", "tests\Recyclarr.Tests.TestLibrary\Recyclarr.Tests.TestLibrary.csproj", "{DE198BA1-2906-43BB-9CDB-977B9218A670}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.IntegrationTests", "tests\Recyclarr.IntegrationTests\Recyclarr.IntegrationTests.csproj", "{0D472E9E-81D9-4E33-8542-A973CF9E4EA8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Cli.IntegrationTests", "tests\Recyclarr.Cli.IntegrationTests\Recyclarr.Cli.IntegrationTests.csproj", "{CB14F77E-1457-41E9-8BA2-B059A11105AE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Cli.Tests", "tests\Recyclarr.Cli.Tests\Recyclarr.Cli.Tests.csproj", "{59886A2A-338F-4864-9735-1633433B1F8F}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -80,50 +64,22 @@ Global
{CD5C6F99-C587-4B7C-86AE-550FA4A5594A}.Debug|Any CPU.Build.0 = Debug|Any CPU {CD5C6F99-C587-4B7C-86AE-550FA4A5594A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CD5C6F99-C587-4B7C-86AE-550FA4A5594A}.Release|Any CPU.ActiveCfg = Release|Any CPU {CD5C6F99-C587-4B7C-86AE-550FA4A5594A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CD5C6F99-C587-4B7C-86AE-550FA4A5594A}.Release|Any CPU.Build.0 = Release|Any CPU {CD5C6F99-C587-4B7C-86AE-550FA4A5594A}.Release|Any CPU.Build.0 = Release|Any CPU
{217D5972-4BB7-4343-9043-C30BD9A1811E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{217D5972-4BB7-4343-9043-C30BD9A1811E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{217D5972-4BB7-4343-9043-C30BD9A1811E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{217D5972-4BB7-4343-9043-C30BD9A1811E}.Release|Any CPU.Build.0 = Release|Any CPU
{49F28A82-468F-4C48-9A59-D41B8FE26D6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {49F28A82-468F-4C48-9A59-D41B8FE26D6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{49F28A82-468F-4C48-9A59-D41B8FE26D6E}.Debug|Any CPU.Build.0 = Debug|Any CPU {49F28A82-468F-4C48-9A59-D41B8FE26D6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{49F28A82-468F-4C48-9A59-D41B8FE26D6E}.Release|Any CPU.ActiveCfg = Release|Any CPU {49F28A82-468F-4C48-9A59-D41B8FE26D6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{49F28A82-468F-4C48-9A59-D41B8FE26D6E}.Release|Any CPU.Build.0 = Release|Any CPU {49F28A82-468F-4C48-9A59-D41B8FE26D6E}.Release|Any CPU.Build.0 = Release|Any CPU
{BF105B2F-8E13-48AD-BF72-DF7EFEB018B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF105B2F-8E13-48AD-BF72-DF7EFEB018B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF105B2F-8E13-48AD-BF72-DF7EFEB018B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF105B2F-8E13-48AD-BF72-DF7EFEB018B6}.Release|Any CPU.Build.0 = Release|Any CPU
{18CF1FCA-7983-4423-8B7E-4A830108C624}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {18CF1FCA-7983-4423-8B7E-4A830108C624}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{18CF1FCA-7983-4423-8B7E-4A830108C624}.Debug|Any CPU.Build.0 = Debug|Any CPU {18CF1FCA-7983-4423-8B7E-4A830108C624}.Debug|Any CPU.Build.0 = Debug|Any CPU
{18CF1FCA-7983-4423-8B7E-4A830108C624}.Release|Any CPU.ActiveCfg = Release|Any CPU {18CF1FCA-7983-4423-8B7E-4A830108C624}.Release|Any CPU.ActiveCfg = Release|Any CPU
{18CF1FCA-7983-4423-8B7E-4A830108C624}.Release|Any CPU.Build.0 = Release|Any CPU {18CF1FCA-7983-4423-8B7E-4A830108C624}.Release|Any CPU.Build.0 = Release|Any CPU
{0720939D-1CA6-43D7-BBED-F8F894C4F562}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0720939D-1CA6-43D7-BBED-F8F894C4F562}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0720939D-1CA6-43D7-BBED-F8F894C4F562}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0720939D-1CA6-43D7-BBED-F8F894C4F562}.Release|Any CPU.Build.0 = Release|Any CPU
{33226068-65E3-4890-8671-59A56BA3F6F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{33226068-65E3-4890-8671-59A56BA3F6F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{33226068-65E3-4890-8671-59A56BA3F6F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{33226068-65E3-4890-8671-59A56BA3F6F0}.Release|Any CPU.Build.0 = Release|Any CPU
{4F6ACBA6-9A7D-487C-ACC1-787CCC90A381}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F6ACBA6-9A7D-487C-ACC1-787CCC90A381}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F6ACBA6-9A7D-487C-ACC1-787CCC90A381}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F6ACBA6-9A7D-487C-ACC1-787CCC90A381}.Release|Any CPU.Build.0 = Release|Any CPU
{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}.Debug|Any CPU.Build.0 = Debug|Any CPU {A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}.Release|Any CPU.ActiveCfg = Release|Any CPU {A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}.Release|Any CPU.Build.0 = Release|Any CPU {A4EC7E0D-C591-4874-B9AC-EB12A96F3E83}.Release|Any CPU.Build.0 = Release|Any CPU
{77D1C695-94D4-46A9-8F12-41E54AF97750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{77D1C695-94D4-46A9-8F12-41E54AF97750}.Debug|Any CPU.Build.0 = Debug|Any CPU
{77D1C695-94D4-46A9-8F12-41E54AF97750}.Release|Any CPU.ActiveCfg = Release|Any CPU
{77D1C695-94D4-46A9-8F12-41E54AF97750}.Release|Any CPU.Build.0 = Release|Any CPU
{53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}.Debug|Any CPU.Build.0 = Debug|Any CPU {53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}.Debug|Any CPU.Build.0 = Debug|Any CPU
{53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}.Release|Any CPU.ActiveCfg = Release|Any CPU {53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}.Release|Any CPU.ActiveCfg = Release|Any CPU
{53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}.Release|Any CPU.Build.0 = Release|Any CPU {53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}.Release|Any CPU.Build.0 = Release|Any CPU
{A92321B5-2796-467B-B5A5-2BFC41167A25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A92321B5-2796-467B-B5A5-2BFC41167A25}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A92321B5-2796-467B-B5A5-2BFC41167A25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A92321B5-2796-467B-B5A5-2BFC41167A25}.Release|Any CPU.Build.0 = Release|Any CPU
{7B8F0720-A6E1-48FF-BD60-8B6964366B7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7B8F0720-A6E1-48FF-BD60-8B6964366B7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B8F0720-A6E1-48FF-BD60-8B6964366B7F}.Debug|Any CPU.Build.0 = Debug|Any CPU {7B8F0720-A6E1-48FF-BD60-8B6964366B7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B8F0720-A6E1-48FF-BD60-8B6964366B7F}.Release|Any CPU.ActiveCfg = Release|Any CPU {7B8F0720-A6E1-48FF-BD60-8B6964366B7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -136,34 +92,10 @@ Global
{37220364-7C1E-4561-A369-C32BA195A0C3}.Debug|Any CPU.Build.0 = Debug|Any CPU {37220364-7C1E-4561-A369-C32BA195A0C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37220364-7C1E-4561-A369-C32BA195A0C3}.Release|Any CPU.ActiveCfg = Release|Any CPU {37220364-7C1E-4561-A369-C32BA195A0C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{37220364-7C1E-4561-A369-C32BA195A0C3}.Release|Any CPU.Build.0 = Release|Any CPU {37220364-7C1E-4561-A369-C32BA195A0C3}.Release|Any CPU.Build.0 = Release|Any CPU
{0E5C6E86-F899-4743-8DCF-7812E717C604}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E5C6E86-F899-4743-8DCF-7812E717C604}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E5C6E86-F899-4743-8DCF-7812E717C604}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E5C6E86-F899-4743-8DCF-7812E717C604}.Release|Any CPU.Build.0 = Release|Any CPU
{2B4CAFB7-02D7-4909-98C4-7393C1366C39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2B4CAFB7-02D7-4909-98C4-7393C1366C39}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2B4CAFB7-02D7-4909-98C4-7393C1366C39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2B4CAFB7-02D7-4909-98C4-7393C1366C39}.Release|Any CPU.Build.0 = Release|Any CPU
{533299C5-71A9-4461-90BB-05C3404F2143}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{533299C5-71A9-4461-90BB-05C3404F2143}.Debug|Any CPU.Build.0 = Debug|Any CPU
{533299C5-71A9-4461-90BB-05C3404F2143}.Release|Any CPU.ActiveCfg = Release|Any CPU
{533299C5-71A9-4461-90BB-05C3404F2143}.Release|Any CPU.Build.0 = Release|Any CPU
{B3FC265C-36EF-4815-9EB1-CB878FBEE6D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B3FC265C-36EF-4815-9EB1-CB878FBEE6D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B3FC265C-36EF-4815-9EB1-CB878FBEE6D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B3FC265C-36EF-4815-9EB1-CB878FBEE6D6}.Release|Any CPU.Build.0 = Release|Any CPU
{A9E2F11E-73F8-48CC-8770-0AFD41E80141}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A9E2F11E-73F8-48CC-8770-0AFD41E80141}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A9E2F11E-73F8-48CC-8770-0AFD41E80141}.Debug|Any CPU.Build.0 = Debug|Any CPU {A9E2F11E-73F8-48CC-8770-0AFD41E80141}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A9E2F11E-73F8-48CC-8770-0AFD41E80141}.Release|Any CPU.ActiveCfg = Release|Any CPU {A9E2F11E-73F8-48CC-8770-0AFD41E80141}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A9E2F11E-73F8-48CC-8770-0AFD41E80141}.Release|Any CPU.Build.0 = Release|Any CPU {A9E2F11E-73F8-48CC-8770-0AFD41E80141}.Release|Any CPU.Build.0 = Release|Any CPU
{737A1B22-F3A5-4920-AED7-77E756D14113}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{737A1B22-F3A5-4920-AED7-77E756D14113}.Debug|Any CPU.Build.0 = Debug|Any CPU
{737A1B22-F3A5-4920-AED7-77E756D14113}.Release|Any CPU.ActiveCfg = Release|Any CPU
{737A1B22-F3A5-4920-AED7-77E756D14113}.Release|Any CPU.Build.0 = Release|Any CPU
{59B75C08-F144-4190-A7D0-C027044147D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{59B75C08-F144-4190-A7D0-C027044147D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{59B75C08-F144-4190-A7D0-C027044147D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59B75C08-F144-4190-A7D0-C027044147D2}.Release|Any CPU.Build.0 = Release|Any CPU
{CB296D81-813B-48C3-9D4B-A52951EF26BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CB296D81-813B-48C3-9D4B-A52951EF26BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB296D81-813B-48C3-9D4B-A52951EF26BF}.Debug|Any CPU.Build.0 = Debug|Any CPU {CB296D81-813B-48C3-9D4B-A52951EF26BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB296D81-813B-48C3-9D4B-A52951EF26BF}.Release|Any CPU.ActiveCfg = Release|Any CPU {CB296D81-813B-48C3-9D4B-A52951EF26BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -184,6 +116,26 @@ Global
{5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU {5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU {5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Release|Any CPU.Build.0 = Release|Any CPU {5B48995A-1181-46AA-AC38-C040BDD3D7B7}.Release|Any CPU.Build.0 = Release|Any CPU
{03B4A46E-234D-47C9-8078-0B749800229A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03B4A46E-234D-47C9-8078-0B749800229A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03B4A46E-234D-47C9-8078-0B749800229A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{03B4A46E-234D-47C9-8078-0B749800229A}.Release|Any CPU.Build.0 = Release|Any CPU
{DE198BA1-2906-43BB-9CDB-977B9218A670}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE198BA1-2906-43BB-9CDB-977B9218A670}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE198BA1-2906-43BB-9CDB-977B9218A670}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE198BA1-2906-43BB-9CDB-977B9218A670}.Release|Any CPU.Build.0 = Release|Any CPU
{0D472E9E-81D9-4E33-8542-A973CF9E4EA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0D472E9E-81D9-4E33-8542-A973CF9E4EA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0D472E9E-81D9-4E33-8542-A973CF9E4EA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0D472E9E-81D9-4E33-8542-A973CF9E4EA8}.Release|Any CPU.Build.0 = Release|Any CPU
{CB14F77E-1457-41E9-8BA2-B059A11105AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB14F77E-1457-41E9-8BA2-B059A11105AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB14F77E-1457-41E9-8BA2-B059A11105AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB14F77E-1457-41E9-8BA2-B059A11105AE}.Release|Any CPU.Build.0 = Release|Any CPU
{59886A2A-338F-4864-9735-1633433B1F8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{59886A2A-338F-4864-9735-1633433B1F8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{59886A2A-338F-4864-9735-1633433B1F8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59886A2A-338F-4864-9735-1633433B1F8F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -192,19 +144,11 @@ Global
SolutionGuid = {AFBE3E4F-DA4D-4EBD-8700-C3C42B59D6AB} SolutionGuid = {AFBE3E4F-DA4D-4EBD-8700-C3C42B59D6AB}
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution GlobalSection(NestedProjects) = preSolution
{77D1C695-94D4-46A9-8F12-41E54AF97750} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{217D5972-4BB7-4343-9043-C30BD9A1811E} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{A92321B5-2796-467B-B5A5-2BFC41167A25} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{0720939D-1CA6-43D7-BBED-F8F894C4F562} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{49F28A82-468F-4C48-9A59-D41B8FE26D6E} = {18E17C53-F600-40AE-82C1-3CD1E547C307} {49F28A82-468F-4C48-9A59-D41B8FE26D6E} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{BF105B2F-8E13-48AD-BF72-DF7EFEB018B6} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{33226068-65E3-4890-8671-59A56BA3F6F0} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{A4EC7E0D-C591-4874-B9AC-EB12A96F3E83} = {18E17C53-F600-40AE-82C1-3CD1E547C307} {A4EC7E0D-C591-4874-B9AC-EB12A96F3E83} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{0E5C6E86-F899-4743-8DCF-7812E717C604} = {18E17C53-F600-40AE-82C1-3CD1E547C307} {DE198BA1-2906-43BB-9CDB-977B9218A670} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{2B4CAFB7-02D7-4909-98C4-7393C1366C39} = {18E17C53-F600-40AE-82C1-3CD1E547C307} {0D472E9E-81D9-4E33-8542-A973CF9E4EA8} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{533299C5-71A9-4461-90BB-05C3404F2143} = {18E17C53-F600-40AE-82C1-3CD1E547C307} {CB14F77E-1457-41E9-8BA2-B059A11105AE} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{B3FC265C-36EF-4815-9EB1-CB878FBEE6D6} = {18E17C53-F600-40AE-82C1-3CD1E547C307} {59886A2A-338F-4864-9735-1633433B1F8F} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{737A1B22-F3A5-4920-AED7-77E756D14113} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{59B75C08-F144-4190-A7D0-C027044147D2} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

@ -3,6 +3,7 @@
<PropertyGroup> <PropertyGroup>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
<DefaultItemExcludes>$(DefaultItemExcludes);TestResults\*\**</DefaultItemExcludes>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

@ -1,11 +1,10 @@
using AutoMapper; using AutoMapper;
using Recyclarr.Cli.TestLibrary;
namespace Recyclarr.Cli.Tests; namespace Recyclarr.Cli.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class AutoMapperConfigurationTest : CliIntegrationFixture internal class AutoMapperConfigurationTest : CliIntegrationFixture
{ {
[Test] [Test]
public void Automapper_config_is_valid() public void Automapper_config_is_valid()

@ -1,14 +1,13 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Cli.Console.Setup; using Recyclarr.Cli.Console.Setup;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Common.TestLibrary;
using Recyclarr.Settings; using Recyclarr.Settings;
using Recyclarr.TestLibrary;
namespace Recyclarr.Cli.Tests; namespace Recyclarr.Cli.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class BaseCommandSetupIntegrationTest : CliIntegrationFixture internal class BaseCommandSetupIntegrationTest : CliIntegrationFixture
{ {
[Test] [Test]
public void Base_command_startup_tasks_are_registered() public void Base_command_startup_tasks_are_registered()

@ -1,10 +1,10 @@
using Autofac; using Autofac;
using Recyclarr.TrashLib.TestLibrary; using Recyclarr.IntegrationTests;
namespace Recyclarr.Cli.TestLibrary; namespace Recyclarr.Cli.IntegrationTests;
[FixtureLifeCycle(LifeCycle.InstancePerTestCase)] [FixtureLifeCycle(LifeCycle.InstancePerTestCase)]
public abstract class CliIntegrationFixture : TrashLibIntegrationFixture internal abstract class CliIntegrationFixture : IntegrationTestFixture
{ {
protected override void RegisterTypes(ContainerBuilder builder) protected override void RegisterTypes(ContainerBuilder builder)
{ {

@ -8,7 +8,7 @@ using Recyclarr.TestLibrary.Autofac;
using Serilog.Core; using Serilog.Core;
using Spectre.Console; using Spectre.Console;
namespace Recyclarr.Cli.Tests; namespace Recyclarr.Cli.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]

@ -2,15 +2,13 @@ using System.IO.Abstractions;
using Recyclarr.Cli.Console.Commands; using Recyclarr.Cli.Console.Commands;
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Processors.Config; using Recyclarr.Cli.Processors.Config;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Repo; using Recyclarr.Repo;
using Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.Cli.Tests.Processors; namespace Recyclarr.Cli.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigCreationProcessorIntegrationTest : CliIntegrationFixture internal class ConfigCreationProcessorIntegrationTest : CliIntegrationFixture
{ {
[Test] [Test]
public void Config_file_created_when_using_default_path() public void Config_file_created_when_using_default_path()

@ -1,13 +1,12 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Cli.Processors.Config; using Recyclarr.Cli.Processors.Config;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
namespace Recyclarr.Cli.Tests.Processors.Config; namespace Recyclarr.Cli.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigManipulatorTest : CliIntegrationFixture internal class ConfigManipulatorTest : CliIntegrationFixture
{ {
[Test] [Test]
public void Create_file_when_no_file_already_exists() public void Create_file_when_no_file_already_exists()

@ -2,15 +2,14 @@ using Recyclarr.Cli.Cache;
using Recyclarr.Cli.Pipelines.CustomFormat; using Recyclarr.Cli.Pipelines.CustomFormat;
using Recyclarr.Cli.Pipelines.CustomFormat.Models; using Recyclarr.Cli.Pipelines.CustomFormat.Models;
using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases; using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;
using Recyclarr.Cli.TestLibrary; using Recyclarr.Tests.TestLibrary;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
using Recyclarr.TrashLib.TestLibrary;
namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat.PipelinePhases; namespace Recyclarr.Cli.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class CustomFormatTransactionPhaseTest : CliIntegrationFixture internal class CustomFormatTransactionPhaseTest : CliIntegrationFixture
{ {
[Test] [Test]
public void Add_new_cf() public void Add_new_cf()

@ -0,0 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\..\Recyclarr.Cli\Recyclarr.Cli.csproj" />
<ProjectReference Include="..\Recyclarr.IntegrationTests\Recyclarr.IntegrationTests.csproj" />
</ItemGroup>
</Project>

@ -1,12 +1,11 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Settings; using Recyclarr.Settings;
namespace Recyclarr.Cli.Tests; namespace Recyclarr.Cli.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ServiceCompatibilityIntegrationTest : CliIntegrationFixture internal class ServiceCompatibilityIntegrationTest : CliIntegrationFixture
{ {
[Test] [Test]
public void Load_settings_yml_correctly_when_file_exists() public void Load_settings_yml_correctly_when_file_exists()

@ -1,14 +1,13 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Processors.Config; using Recyclarr.Cli.Processors.Config;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Repo; using Recyclarr.Repo;
namespace Recyclarr.Cli.Tests.Processors.Config; namespace Recyclarr.Cli.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class TemplateConfigCreatorIntegrationTest : CliIntegrationFixture internal class TemplateConfigCreatorIntegrationTest : CliIntegrationFixture
{ {
[Test] [Test]
public void Template_id_matching_works() public void Template_id_matching_works()

@ -1,30 +0,0 @@
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Common;
namespace Recyclarr.Cli.TestLibrary;
public static class MockSyncSettings
{
private static ISyncSettings MakeSyncSettings(SupportedServices? service, params string[] instances)
{
var settings = Substitute.For<ISyncSettings>();
settings.Service.Returns(service);
settings.Instances.Returns(instances);
return settings;
}
public static ISyncSettings Radarr(params string[] instances)
{
return MakeSyncSettings(SupportedServices.Radarr, instances);
}
public static ISyncSettings Sonarr(params string[] instances)
{
return MakeSyncSettings(SupportedServices.Sonarr, instances);
}
public static ISyncSettings AnyService(params string[] instances)
{
return MakeSyncSettings(null, instances);
}
}

@ -1,8 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\Recyclarr.Common.TestLibrary\Recyclarr.Common.TestLibrary.csproj" />
<ProjectReference Include="..\..\Recyclarr.Cli\Recyclarr.Cli.csproj" />
<ProjectReference Include="..\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj" />
<ProjectReference Include="..\Recyclarr.TrashLib.TestLibrary\Recyclarr.TrashLib.TestLibrary.csproj" />
</ItemGroup>
</Project>

@ -1,6 +1,6 @@
using Recyclarr.Cli.Cache; using Recyclarr.Cli.Cache;
using Recyclarr.Cli.Pipelines.CustomFormat; using Recyclarr.Cli.Pipelines.CustomFormat;
using Recyclarr.TrashLib.TestLibrary; using Recyclarr.Tests.TestLibrary;
namespace Recyclarr.Cli.Tests.Cache; namespace Recyclarr.Cli.Tests.Cache;

@ -1,8 +1,8 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Recyclarr.Cli.Cache; using Recyclarr.Cli.Cache;
using Recyclarr.Cli.Console.Helpers;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.Interfaces;
namespace Recyclarr.Cli.Tests.Cache; namespace Recyclarr.Cli.Tests.Cache;

@ -1,12 +1,11 @@
using Recyclarr.Cli.Console.Commands; using Recyclarr.Cli.Console.Commands;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Repo; using Recyclarr.Repo;
namespace Recyclarr.Cli.Tests.Console.Commands; namespace Recyclarr.Cli.Tests.Console.Commands;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigCommandsIntegrationTest : CliIntegrationFixture public class ConfigCommandsTest
{ {
[Test, AutoMockData] [Test, AutoMockData]
public async Task Repo_update_is_called_on_config_list( public async Task Repo_update_is_called_on_config_list(

@ -1,12 +1,11 @@
using Recyclarr.Cli.Console.Commands; using Recyclarr.Cli.Console.Commands;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Repo; using Recyclarr.Repo;
namespace Recyclarr.Cli.Tests.Console.Commands; namespace Recyclarr.Cli.Tests.Console.Commands;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ListCommandsIntegrationTest : CliIntegrationFixture public class ListCommandsTest
{ {
[Test, AutoMockData] [Test, AutoMockData]
public async Task Repo_update_is_called_on_list_custom_formats( public async Task Repo_update_is_called_on_list_custom_formats(

@ -1 +1,3 @@
// Global using directives
global using Recyclarr.TestLibrary.AutoFixture; global using Recyclarr.TestLibrary.AutoFixture;

@ -1,6 +1,6 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Cli.Logging; using Recyclarr.Cli.Logging;
using Recyclarr.TrashLib.TestLibrary; using Recyclarr.Tests.TestLibrary;
namespace Recyclarr.Cli.Tests; namespace Recyclarr.Cli.Tests;

@ -1,13 +1,12 @@
using Recyclarr.Cli.Migration; using Recyclarr.Cli.Migration;
using Recyclarr.Cli.Migration.Steps; using Recyclarr.Cli.Migration.Steps;
using Recyclarr.Cli.TestLibrary;
using Spectre.Console.Testing; using Spectre.Console.Testing;
namespace Recyclarr.Cli.Tests.Migration; namespace Recyclarr.Cli.Tests.Migration;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class MigrationExecutorTest : CliIntegrationFixture public class MigrationExecutorTest
{ {
[Test] [Test]
public void Step_not_executed_if_check_returns_false() public void Step_not_executed_if_check_returns_false()

@ -4,7 +4,7 @@ using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto; using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.TestLibrary; namespace Recyclarr.Cli.Tests;
public static class NewQp public static class NewQp
{ {

@ -1,7 +1,7 @@
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.CustomFormat; using Recyclarr.Cli.Pipelines.CustomFormat;
using Recyclarr.Tests.TestLibrary;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
using Recyclarr.TrashLib.TestLibrary;
using Spectre.Console.Testing; using Spectre.Console.Testing;
namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat; namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat;

@ -1,7 +1,7 @@
using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases; using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.Tests.TestLibrary;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
using Recyclarr.TrashLib.TestLibrary;
namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat.PipelinePhases; namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat.PipelinePhases;

@ -1,4 +1,3 @@
using Recyclarr.Cli.TestLibrary;
using Recyclarr.ServarrApi.Dto; using Recyclarr.ServarrApi.Dto;
namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile.Api; namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile.Api;

@ -1,8 +1,7 @@
using Recyclarr.Cli.Pipelines.CustomFormat.Models; using Recyclarr.Cli.Pipelines.CustomFormat.Models;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.TestLibrary; using Recyclarr.Tests.TestLibrary;
namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile.PipelinePhases; namespace Recyclarr.Cli.Tests.Pipelines.QualityProfile.PipelinePhases;

@ -1,6 +1,5 @@
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto; using Recyclarr.ServarrApi.Dto;

@ -1,5 +1,4 @@
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto; using Recyclarr.ServarrApi.Dto;

@ -1,5 +1,4 @@
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.ServarrApi.Dto; using Recyclarr.ServarrApi.Dto;
using Recyclarr.ServarrApi.Extensions; using Recyclarr.ServarrApi.Extensions;

@ -1,6 +1,5 @@
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto; using Recyclarr.ServarrApi.Dto;

@ -1,7 +1,6 @@
using FluentValidation.TestHelper; using FluentValidation.TestHelper;
using Recyclarr.Cli.Pipelines.QualityProfile; using Recyclarr.Cli.Pipelines.QualityProfile;
using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases; using Recyclarr.Cli.Pipelines.QualityProfile.PipelinePhases;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Dto; using Recyclarr.ServarrApi.Dto;

@ -1,6 +1,6 @@
using Recyclarr.Cli.Pipelines.Tags.PipelinePhases; using Recyclarr.Cli.Pipelines.Tags.PipelinePhases;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TrashLib.TestLibrary; using Recyclarr.Tests.TestLibrary;
namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases; namespace Recyclarr.Cli.Tests.Pipelines.Tags.PipelinePhases;

@ -1,7 +1,6 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Cli.Console.Settings; using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Processors.Config; using Recyclarr.Cli.Processors.Config;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Platform; using Recyclarr.Platform;
using Recyclarr.TrashGuide; using Recyclarr.TrashGuide;
@ -9,7 +8,7 @@ namespace Recyclarr.Cli.Tests.Processors.Config;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class TemplateConfigCreatorTest : CliIntegrationFixture public class TemplateConfigCreatorTest
{ {
[Test, AutoMockData] [Test, AutoMockData]
public void Can_handle_returns_true_with_templates( public void Can_handle_returns_true_with_templates(

@ -2,8 +2,8 @@ using System.Diagnostics.CodeAnalysis;
using Autofac.Extras.Ordering; using Autofac.Extras.Ordering;
using AutoFixture; using AutoFixture;
using Recyclarr.Cli.Console.Commands; using Recyclarr.Cli.Console.Commands;
using Recyclarr.Cli.Processors;
using Recyclarr.Cli.Processors.Config; using Recyclarr.Cli.Processors.Config;
using Recyclarr.TrashLib.ExceptionTypes;
namespace Recyclarr.Cli.Tests.Processors; namespace Recyclarr.Cli.Tests.Processors;

@ -3,14 +3,13 @@ using Recyclarr.Cli.Console.Commands;
using Recyclarr.Cli.Processors.Config; using Recyclarr.Cli.Processors.Config;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.TrashGuide; using Recyclarr.TrashGuide;
using Recyclarr.TrashLib.TestLibrary;
using Spectre.Console.Testing; using Spectre.Console.Testing;
namespace Recyclarr.Cli.Tests.Processors; namespace Recyclarr.Cli.Tests.Processors;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigTemplateListerTest : TrashLibIntegrationFixture public class ConfigTemplateListerTest
{ {
[Test, AutoMockData] [Test, AutoMockData]
public void Hidden_templates_are_not_rendered( public void Hidden_templates_are_not_rendered(

@ -1,11 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Recyclarr.Cli.TestLibrary\Recyclarr.Cli.TestLibrary.csproj" />
<ProjectReference Include="..\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj" />
<ProjectReference Include="..\..\Recyclarr.Cli\Recyclarr.Cli.csproj" /> <ProjectReference Include="..\..\Recyclarr.Cli\Recyclarr.Cli.csproj" />
<ProjectReference Include="..\Recyclarr.TrashLib.TestLibrary\Recyclarr.TrashLib.TestLibrary.csproj" /> <ProjectReference Include="..\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj" />
</ItemGroup> <ProjectReference Include="..\Recyclarr.Tests.TestLibrary\Recyclarr.Tests.TestLibrary.csproj" />
<ItemGroup>
<PackageReference Include="JetBrains.Annotations" />
</ItemGroup> </ItemGroup>
</Project> </Project>

@ -1,5 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\..\Recyclarr.Common\Recyclarr.Common.csproj" />
</ItemGroup>
</Project>

@ -1,11 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj" />
<ProjectReference Include="..\..\Recyclarr.Common\Recyclarr.Common.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="DefaultDataFile.txt" />
<EmbeddedResource Include="TestData\DataFile.txt" />
</ItemGroup>
</Project>

@ -1,20 +0,0 @@
using Autofac;
using Recyclarr.TrashGuide;
using Recyclarr.TrashLib.TestLibrary;
using Recyclarr.Yaml;
namespace Recyclarr.Config.TestLibrary;
[FixtureLifeCycle(LifeCycle.InstancePerTestCase)]
public abstract class ConfigIntegrationFixture : TrashLibIntegrationFixture
{
protected override void RegisterTypes(ContainerBuilder builder)
{
base.RegisterTypes(builder);
builder.RegisterModule<ConfigAutofacModule>();
// dependencies
builder.RegisterModule<GuideAutofacModule>();
builder.RegisterModule<YamlAutofacModule>();
}
}

@ -1,6 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\..\Recyclarr.Config\Recyclarr.Config.csproj" />
<ProjectReference Include="..\Recyclarr.TrashLib.TestLibrary\Recyclarr.TrashLib.TestLibrary.csproj" />
</ItemGroup>
</Project>

@ -1,6 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\..\Recyclarr.Config\Recyclarr.Config.csproj" />
<ProjectReference Include="..\Recyclarr.Config.TestLibrary\Recyclarr.Config.TestLibrary.csproj" />
</ItemGroup>
</Project>

@ -1,13 +1,12 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Json.Loading; using Recyclarr.Json.Loading;
using Recyclarr.Json.TestLibrary;
namespace Recyclarr.Json.Tests; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class BulkJsonLoaderIntegrationTest : JsonIntegrationFixture public class BulkJsonLoaderIntegrationTest : IntegrationTestFixture
{ {
[SuppressMessage("ReSharper", "NotAccessedPositionalProperty.Local")] [SuppressMessage("ReSharper", "NotAccessedPositionalProperty.Local")]
private sealed record TestGuideObject(string TrashId, int TrashScore, string Name); private sealed record TestGuideObject(string TrashId, int TrashScore, string Name);

@ -1,13 +1,12 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Config.Parsing; using Recyclarr.Config.Parsing;
using Recyclarr.Config.TestLibrary;
namespace Recyclarr.Config.Tests.Parsing; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigSaverTest : ConfigIntegrationFixture public class ConfigSaverTest : IntegrationTestFixture
{ {
[Test] [Test]
public void Replace_file_when_already_exists() public void Replace_file_when_already_exists()

@ -1,15 +1,15 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Common.TestLibrary;
using Recyclarr.Repo; using Recyclarr.Repo;
using Recyclarr.TestLibrary;
using Recyclarr.TestLibrary.AutoFixture;
using Recyclarr.TrashGuide; using Recyclarr.TrashGuide;
using Recyclarr.Config.TestLibrary;
namespace Recyclarr.Config.Tests.Services; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigTemplateGuideServiceTest : ConfigIntegrationFixture public class ConfigTemplateGuideServiceIntegrationTest : IntegrationTestFixture
{ {
[Test, AutoMockData] [Test, AutoMockData]
public void Throw_when_templates_dir_does_not_exist( public void Throw_when_templates_dir_does_not_exist(
@ -25,7 +25,7 @@ public class ConfigTemplateGuideServiceTest : ConfigIntegrationFixture
{ {
var repo = Resolve<IConfigTemplatesRepo>(); var repo = Resolve<IConfigTemplatesRepo>();
var templateDir = repo.Path; var templateDir = repo.Path;
Fs.AddSameFileFromEmbeddedResource(templateDir.File("templates.json"), typeof(ConfigTemplateGuideServiceTest)); Fs.AddSameFileFromEmbeddedResource(templateDir.File("templates.json"), typeof(ConfigTemplateGuideServiceIntegrationTest));
TemplatePath MakeTemplatePath(SupportedServices service, string id, string path) TemplatePath MakeTemplatePath(SupportedServices service, string id, string path)
{ {

@ -1,12 +1,11 @@
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Config.Parsing; using Recyclarr.Config.Parsing;
using Recyclarr.Config.TestLibrary;
namespace Recyclarr.Config.Tests.Parsing; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigurationLoaderEnvVarTest : ConfigIntegrationFixture public class ConfigurationLoaderEnvVarTest : IntegrationTestFixture
{ {
[Test] [Test]
public void Test_successful_environment_variable_loading() public void Test_successful_environment_variable_loading()

@ -1,13 +1,13 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Config;
using Recyclarr.Config.Parsing; using Recyclarr.Config.Parsing;
using Recyclarr.Config.TestLibrary;
namespace Recyclarr.Config.Tests.Parsing; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigurationLoaderSecretsTest : ConfigIntegrationFixture public class ConfigurationLoaderSecretsTest : IntegrationTestFixture
{ {
[Test] [Test]
public void Test_secret_loading() public void Test_secret_loading()

@ -5,16 +5,16 @@ using Autofac;
using FluentValidation; using FluentValidation;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Config;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.TestLibrary.Autofac;
using Recyclarr.Config.Parsing; using Recyclarr.Config.Parsing;
using Recyclarr.Config.TestLibrary; using Recyclarr.TestLibrary.Autofac;
namespace Recyclarr.Config.Tests.Parsing; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigurationLoaderTest : ConfigIntegrationFixture public class ConfigurationLoaderTest : IntegrationTestFixture
{ {
private static Func<TextReader> GetResourceData(string file) private static Func<TextReader> GetResourceData(string file)
{ {

@ -1,13 +1,13 @@
using Recyclarr.Config;
using Recyclarr.Config.ExceptionTypes; using Recyclarr.Config.ExceptionTypes;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.Config.Parsing.ErrorHandling; using Recyclarr.Config.Parsing.ErrorHandling;
using Recyclarr.Config.TestLibrary;
namespace Recyclarr.Config.Tests; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class ConfigurationRegistryTest : ConfigIntegrationFixture public class ConfigurationRegistryTest : IntegrationTestFixture
{ {
[Test] [Test]
public void Use_explicit_paths_instead_of_default() public void Use_explicit_paths_instead_of_default()

@ -1,14 +1,13 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using System.Text.Json; using System.Text.Json;
using Recyclarr.Tests.TestLibrary;
using Recyclarr.TrashGuide.CustomFormat; using Recyclarr.TrashGuide.CustomFormat;
using Recyclarr.TrashGuide.TestLibrary;
using Recyclarr.TrashLib.TestLibrary;
namespace Recyclarr.TrashGuide.Tests.CustomFormat; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class CustomFormatLoaderIntegrationTest : GuideIntegrationFixture public class CustomFormatLoaderIntegrationTest : IntegrationTestFixture
{ {
[Test] [Test]
public void Get_custom_format_json_works() public void Get_custom_format_json_works()

@ -1,17 +1,16 @@
using Flurl.Http.Testing; using Flurl.Http.Testing;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Config.Models; using Recyclarr.Config.Models;
using Recyclarr.ServarrApi.Services; using Recyclarr.ServarrApi.Services;
namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat.Api; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class CustomFormatServiceTest : CliIntegrationFixture public class CustomFormatServiceTest : IntegrationTestFixture
{ {
[Test, AutoMockData] [Test]
public async Task Get_can_parse_json(IServiceConfiguration config) public async Task Get_can_parse_json()
{ {
var resourceData = new ResourceDataReader(typeof(CustomFormatServiceTest), "Data"); var resourceData = new ResourceDataReader(typeof(CustomFormatServiceTest), "Data");
var jsonBody = resourceData.ReadData("issue_178.json"); var jsonBody = resourceData.ReadData("issue_178.json");
@ -20,7 +19,7 @@ public class CustomFormatServiceTest : CliIntegrationFixture
http.RespondWith(jsonBody); http.RespondWith(jsonBody);
var sut = Resolve<CustomFormatService>(); var sut = Resolve<CustomFormatService>();
var result = await sut.GetCustomFormats(config); var result = await sut.GetCustomFormats(Substitute.ForPartsOf<ServiceConfiguration>());
result.Should().HaveCountGreaterThan(5); result.Should().HaveCountGreaterThan(5);
} }

@ -2,13 +2,12 @@ using System.IO.Abstractions;
using Recyclarr.Config.Parsing; using Recyclarr.Config.Parsing;
using Recyclarr.Config.Parsing.PostProcessing; using Recyclarr.Config.Parsing.PostProcessing;
using Recyclarr.Config.Parsing.PostProcessing.ConfigMerging; using Recyclarr.Config.Parsing.PostProcessing.ConfigMerging;
using Recyclarr.Config.TestLibrary;
namespace Recyclarr.Config.Tests.Parsing.PostProcessing; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class IncludePostProcessorIntegrationTest : ConfigIntegrationFixture public class IncludePostProcessorIntegrationTest : IntegrationTestFixture
{ {
[Test] [Test]
public void No_change_when_no_includes() public void No_change_when_no_includes()

@ -1,12 +1,24 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Autofac; using Autofac;
using Autofac.Extras.Ordering;
using Autofac.Features.ResolveAnything; using Autofac.Features.ResolveAnything;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Compatibility;
using Recyclarr.Config;
using Recyclarr.Json;
using Recyclarr.Platform;
using Recyclarr.Repo;
using Recyclarr.ServarrApi;
using Recyclarr.Settings;
using Recyclarr.TestLibrary;
using Recyclarr.TestLibrary.Autofac; using Recyclarr.TestLibrary.Autofac;
using Recyclarr.TrashGuide;
using Recyclarr.VersionControl;
using Recyclarr.Yaml;
using Spectre.Console; using Spectre.Console;
using Spectre.Console.Testing; using Spectre.Console.Testing;
namespace Recyclarr.TestLibrary; namespace Recyclarr.IntegrationTests;
[FixtureLifeCycle(LifeCycle.InstancePerTestCase)] [FixtureLifeCycle(LifeCycle.InstancePerTestCase)]
public abstract class IntegrationTestFixture : IDisposable public abstract class IntegrationTestFixture : IDisposable
@ -16,6 +28,7 @@ public abstract class IntegrationTestFixture : IDisposable
protected MockFileSystem Fs { get; } protected MockFileSystem Fs { get; }
protected TestConsole Console { get; } = new(); protected TestConsole Console { get; } = new();
protected TestableLogger Logger { get; } = new(); protected TestableLogger Logger { get; } = new();
protected IAppPaths Paths { get; }
protected IntegrationTestFixture() protected IntegrationTestFixture()
{ {
@ -24,6 +37,8 @@ public abstract class IntegrationTestFixture : IDisposable
CreateDefaultTempDir = false CreateDefaultTempDir = false
}); });
Paths = new AppPaths(Fs.CurrentDirectory().SubDirectory("test").SubDirectory("recyclarr"));
// Use Lazy because we shouldn't invoke virtual methods at construction time // Use Lazy because we shouldn't invoke virtual methods at construction time
_container = new Lazy<ILifetimeScope>(() => _container = new Lazy<ILifetimeScope>(() =>
{ {
@ -42,6 +57,20 @@ public abstract class IntegrationTestFixture : IDisposable
/// </summary> /// </summary>
protected virtual void RegisterTypes(ContainerBuilder builder) protected virtual void RegisterTypes(ContainerBuilder builder)
{ {
// Needed for Autofac.Extras.Ordering
builder.RegisterSource<OrderedRegistrationSource>();
builder.RegisterModule<ConfigAutofacModule>();
builder.RegisterModule<GuideAutofacModule>();
builder.RegisterModule<YamlAutofacModule>();
builder.RegisterModule<SettingsAutofacModule>();
builder.RegisterModule<ApiServicesAutofacModule>();
builder.RegisterModule<VersionControlAutofacModule>();
builder.RegisterModule<RepoAutofacModule>();
builder.RegisterModule<CompatibilityAutofacModule>();
builder.RegisterModule<JsonAutofacModule>();
builder.RegisterModule<PlatformAutofacModule>();
builder.RegisterModule<CommonAutofacModule>();
} }
/// <summary> /// <summary>
@ -53,8 +82,16 @@ public abstract class IntegrationTestFixture : IDisposable
builder.RegisterInstance(Fs).As<IFileSystem>(); builder.RegisterInstance(Fs).As<IFileSystem>();
builder.RegisterInstance(Console).As<IAnsiConsole>(); builder.RegisterInstance(Console).As<IAnsiConsole>();
builder.RegisterInstance(Logger).As<ILogger>(); builder.RegisterInstance(Logger).As<ILogger>();
builder.RegisterInstance(Paths).As<IAppPaths>();
builder.RegisterMockFor<IEnvironment>(); builder.RegisterMockFor<IEnvironment>();
builder.RegisterMockFor<IGitRepository>();
builder.RegisterMockFor<IGitRepositoryFactory>();
builder.RegisterMockFor<IServiceInformation>(m =>
{
// By default, choose some extremely high number so that all the newest features are enabled.
m.GetVersion(default!).ReturnsForAnyArgs(_ => new Version("99.0.0.0"));
});
} }
protected T Resolve<T>() where T : notnull protected T Resolve<T>() where T : notnull
@ -65,12 +102,7 @@ public abstract class IntegrationTestFixture : IDisposable
// ReSharper disable once VirtualMemberNeverOverridden.Global // ReSharper disable once VirtualMemberNeverOverridden.Global
protected virtual void Dispose(bool disposing) protected virtual void Dispose(bool disposing)
{ {
if (!disposing) if (!disposing || !_container.IsValueCreated)
{
return;
}
if (!_container.IsValueCreated)
{ {
return; return;
} }

@ -1,14 +1,13 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Common.TestLibrary; using Recyclarr.TestLibrary;
using Recyclarr.TrashGuide.QualitySize; using Recyclarr.TrashGuide.QualitySize;
using Recyclarr.TrashGuide.TestLibrary;
namespace Recyclarr.TrashGuide.Tests.QualitySize; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class QualitySizeGuideParserTest : GuideIntegrationFixture public class QualitySizeGuideParserTest : IntegrationTestFixture
{ {
[Test] [Test]
public void Get_valid_data() public void Get_valid_data()

@ -1,16 +1,15 @@
using System.IO.Abstractions; using System.IO.Abstractions;
using Recyclarr.Common; using Recyclarr.Common;
using Recyclarr.Common.Extensions; using Recyclarr.Common.Extensions;
using Recyclarr.Common.TestLibrary;
using Recyclarr.Repo; using Recyclarr.Repo;
using Recyclarr.TestLibrary;
using Recyclarr.TrashGuide.QualitySize; using Recyclarr.TrashGuide.QualitySize;
using Recyclarr.TrashGuide.TestLibrary;
namespace Recyclarr.TrashGuide.Tests.QualitySize; namespace Recyclarr.IntegrationTests;
[TestFixture] [TestFixture]
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class QualitySizeGuideServiceTest : GuideIntegrationFixture public class QualitySizeGuideServiceTest : IntegrationTestFixture
{ {
[TestCase(SupportedServices.Sonarr, "sonarr")] [TestCase(SupportedServices.Sonarr, "sonarr")]
[TestCase(SupportedServices.Radarr, "radarr")] [TestCase(SupportedServices.Radarr, "radarr")]

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\..\Recyclarr.Common\Recyclarr.Common.csproj" />
<ProjectReference Include="..\..\Recyclarr.Compatibility\Recyclarr.Compatibility.csproj" />
<ProjectReference Include="..\..\Recyclarr.Platform\Recyclarr.Platform.csproj" />
<ProjectReference Include="..\..\Recyclarr.VersionControl\Recyclarr.VersionControl.csproj" />
<ProjectReference Include="..\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj" />
<ProjectReference Include="..\Recyclarr.Tests.TestLibrary\Recyclarr.Tests.TestLibrary.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac.Extras.Ordering" />
</ItemGroup>
</Project>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save