refactor: More TrashLib splitting

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

@ -7,7 +7,6 @@
<PackageVersion Include="Autofac.Extras.Ordering" Version="4.0.0" />
<PackageVersion Include="AutofacSerilogIntegration" Version="5.0.0" />
<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="CliWrap" Version="3.6.4" />
<PackageVersion Include="FluentValidation" Version="11.7.1" />

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -31,9 +31,9 @@
<ItemGroup>
<ProjectReference Include="..\Recyclarr.Common\Recyclarr.Common.csproj" />
<ProjectReference Include="..\Recyclarr.Compatibility\Recyclarr.Compatibility.csproj" />
<ProjectReference Include="..\Recyclarr.Config\Recyclarr.Config.csproj" />
<ProjectReference Include="..\Recyclarr.TrashGuide\Recyclarr.TrashGuide.csproj" />
<ProjectReference Include="..\Recyclarr.TrashLib\Recyclarr.TrashLib.csproj" />
</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 Recyclarr.TrashLib.Compatibility.Radarr;
using Recyclarr.TrashLib.Compatibility.Sonarr;
using Recyclarr.Compatibility.Radarr;
using Recyclarr.Compatibility.Sonarr;
namespace Recyclarr.TrashLib.Compatibility;
namespace Recyclarr.Compatibility;
public class CompatibilityAutofacModule : Module
{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -2,7 +2,6 @@
<ItemGroup>
<PackageReference Include="Autofac" />
<PackageReference Include="AutoMapper" />
<PackageReference Include="AutoMapper.Collection" />
<PackageReference Include="AutoMapper.Contrib.Autofac.DependencyInjection" />
<PackageReference Include="FluentValidation" />
<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
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Cli", "Recyclarr.Cli\Recyclarr.Cli.csproj", "{CD5C6F99-C587-4B7C-86AE-550FA4A5594A}"
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}"
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}"
ProjectSection(SolutionItems) = preProject
.editorconfig = ..\.editorconfig
@ -21,20 +17,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{305C2AC5
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common", "Recyclarr.Common\Recyclarr.Common.csproj", "{18CF1FCA-7983-4423-8B7E-4A830108C624}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Recyclarr.Common.Tests", "tests\Recyclarr.Common.Tests\Recyclarr.Common.Tests.csproj", "{0720939D-1CA6-43D7-BBED-F8F894C4F562}"
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}"
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.Gui", "Recyclarr.Gui\Recyclarr.Gui.csproj", "{53EECBC0-E0EA-4D6C-925C-5DB8C42CCB85}"
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}"
ProjectSection(SolutionItems) = preProject
tests\Directory.Build.props = tests\Directory.Build.props
@ -46,20 +32,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.Yaml", "Recyclarr
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.TrashGuide", "Recyclarr.TrashGuide\Recyclarr.TrashGuide.csproj", "{37220364-7C1E-4561-A369-C32BA195A0C3}"
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}"
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}"
EndProject
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
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Recyclarr.ServarrApi", "Recyclarr.ServarrApi\Recyclarr.ServarrApi.csproj", "{5B48995A-1181-46AA-AC38-C040BDD3D7B7}"
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
GlobalSection(SolutionConfigurationPlatforms) = preSolution
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}.Release|Any CPU.ActiveCfg = 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.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.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.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.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.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.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.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.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.Build.0 = Debug|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}.Release|Any CPU.ActiveCfg = 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.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.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.Build.0 = Debug|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}.Release|Any CPU.ActiveCfg = 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
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -192,19 +144,11 @@ Global
SolutionGuid = {AFBE3E4F-DA4D-4EBD-8700-C3C42B59D6AB}
EndGlobalSection
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}
{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}
{0E5C6E86-F899-4743-8DCF-7812E717C604} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{2B4CAFB7-02D7-4909-98C4-7393C1366C39} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{533299C5-71A9-4461-90BB-05C3404F2143} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{B3FC265C-36EF-4815-9EB1-CB878FBEE6D6} = {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}
{DE198BA1-2906-43BB-9CDB-977B9218A670} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{0D472E9E-81D9-4E33-8542-A973CF9E4EA8} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{CB14F77E-1457-41E9-8BA2-B059A11105AE} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
{59886A2A-338F-4864-9735-1633433B1F8F} = {18E17C53-F600-40AE-82C1-3CD1E547C307}
EndGlobalSection
EndGlobal

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

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

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

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

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

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

@ -1,13 +1,12 @@
using System.IO.Abstractions;
using Recyclarr.Cli.Processors.Config;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Common.Extensions;
namespace Recyclarr.Cli.Tests.Processors.Config;
namespace Recyclarr.Cli.IntegrationTests;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class ConfigManipulatorTest : CliIntegrationFixture
internal class ConfigManipulatorTest : CliIntegrationFixture
{
[Test]
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.Models;
using Recyclarr.Cli.Pipelines.CustomFormat.PipelinePhases;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Tests.TestLibrary;
using Recyclarr.TrashGuide.CustomFormat;
using Recyclarr.TrashLib.TestLibrary;
namespace Recyclarr.Cli.Tests.Pipelines.CustomFormat.PipelinePhases;
namespace Recyclarr.Cli.IntegrationTests;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class CustomFormatTransactionPhaseTest : CliIntegrationFixture
internal class CustomFormatTransactionPhaseTest : CliIntegrationFixture
{
[Test]
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 Recyclarr.Cli.TestLibrary;
using Recyclarr.Settings;
namespace Recyclarr.Cli.Tests;
namespace Recyclarr.Cli.IntegrationTests;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class ServiceCompatibilityIntegrationTest : CliIntegrationFixture
internal class ServiceCompatibilityIntegrationTest : CliIntegrationFixture
{
[Test]
public void Load_settings_yml_correctly_when_file_exists()

@ -1,14 +1,13 @@
using System.IO.Abstractions;
using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Processors.Config;
using Recyclarr.Cli.TestLibrary;
using Recyclarr.Repo;
namespace Recyclarr.Cli.Tests.Processors.Config;
namespace Recyclarr.Cli.IntegrationTests;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class TemplateConfigCreatorIntegrationTest : CliIntegrationFixture
internal class TemplateConfigCreatorIntegrationTest : CliIntegrationFixture
{
[Test]
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.Pipelines.CustomFormat;
using Recyclarr.TrashLib.TestLibrary;
using Recyclarr.Tests.TestLibrary;
namespace Recyclarr.Cli.Tests.Cache;

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

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

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

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

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

@ -1,13 +1,12 @@
using Recyclarr.Cli.Migration;
using Recyclarr.Cli.Migration.Steps;
using Recyclarr.Cli.TestLibrary;
using Spectre.Console.Testing;
namespace Recyclarr.Cli.Tests.Migration;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class MigrationExecutorTest : CliIntegrationFixture
public class MigrationExecutorTest
{
[Test]
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.ServarrApi.Dto;
namespace Recyclarr.Cli.TestLibrary;
namespace Recyclarr.Cli.Tests;
public static class NewQp
{

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -1,11 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<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.TrashLib.TestLibrary\Recyclarr.TrashLib.TestLibrary.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="JetBrains.Annotations" />
<ProjectReference Include="..\Recyclarr.TestLibrary\Recyclarr.TestLibrary.csproj" />
<ProjectReference Include="..\Recyclarr.Tests.TestLibrary\Recyclarr.Tests.TestLibrary.csproj" />
</ItemGroup>
</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.IO.Abstractions;
using Recyclarr.Json.Loading;
using Recyclarr.Json.TestLibrary;
namespace Recyclarr.Json.Tests;
namespace Recyclarr.IntegrationTests;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class BulkJsonLoaderIntegrationTest : JsonIntegrationFixture
public class BulkJsonLoaderIntegrationTest : IntegrationTestFixture
{
[SuppressMessage("ReSharper", "NotAccessedPositionalProperty.Local")]
private sealed record TestGuideObject(string TrashId, int TrashScore, string Name);

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

@ -1,15 +1,15 @@
using System.IO.Abstractions;
using Recyclarr.Common;
using Recyclarr.Common.TestLibrary;
using Recyclarr.Repo;
using Recyclarr.TestLibrary;
using Recyclarr.TestLibrary.AutoFixture;
using Recyclarr.TrashGuide;
using Recyclarr.Config.TestLibrary;
namespace Recyclarr.Config.Tests.Services;
namespace Recyclarr.IntegrationTests;
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class ConfigTemplateGuideServiceTest : ConfigIntegrationFixture
public class ConfigTemplateGuideServiceIntegrationTest : IntegrationTestFixture
{
[Test, AutoMockData]
public void Throw_when_templates_dir_does_not_exist(
@ -25,7 +25,7 @@ public class ConfigTemplateGuideServiceTest : ConfigIntegrationFixture
{
var repo = Resolve<IConfigTemplatesRepo>();
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)
{

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

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

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

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

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

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

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

@ -1,12 +1,24 @@
using System.IO.Abstractions;
using Autofac;
using Autofac.Extras.Ordering;
using Autofac.Features.ResolveAnything;
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.TrashGuide;
using Recyclarr.VersionControl;
using Recyclarr.Yaml;
using Spectre.Console;
using Spectre.Console.Testing;
namespace Recyclarr.TestLibrary;
namespace Recyclarr.IntegrationTests;
[FixtureLifeCycle(LifeCycle.InstancePerTestCase)]
public abstract class IntegrationTestFixture : IDisposable
@ -16,6 +28,7 @@ public abstract class IntegrationTestFixture : IDisposable
protected MockFileSystem Fs { get; }
protected TestConsole Console { get; } = new();
protected TestableLogger Logger { get; } = new();
protected IAppPaths Paths { get; }
protected IntegrationTestFixture()
{
@ -24,6 +37,8 @@ public abstract class IntegrationTestFixture : IDisposable
CreateDefaultTempDir = false
});
Paths = new AppPaths(Fs.CurrentDirectory().SubDirectory("test").SubDirectory("recyclarr"));
// Use Lazy because we shouldn't invoke virtual methods at construction time
_container = new Lazy<ILifetimeScope>(() =>
{
@ -42,6 +57,20 @@ public abstract class IntegrationTestFixture : IDisposable
/// </summary>
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>
@ -53,8 +82,16 @@ public abstract class IntegrationTestFixture : IDisposable
builder.RegisterInstance(Fs).As<IFileSystem>();
builder.RegisterInstance(Console).As<IAnsiConsole>();
builder.RegisterInstance(Logger).As<ILogger>();
builder.RegisterInstance(Paths).As<IAppPaths>();
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
@ -65,12 +102,7 @@ public abstract class IntegrationTestFixture : IDisposable
// ReSharper disable once VirtualMemberNeverOverridden.Global
protected virtual void Dispose(bool disposing)
{
if (!disposing)
{
return;
}
if (!_container.IsValueCreated)
if (!disposing || !_container.IsValueCreated)
{
return;
}

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

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