using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Wabbajack.DTOs; using Wabbajack.Paths.IO; using Wabbajack.RateLimiter; using Xunit.DependencyInjection; using Xunit.DependencyInjection.Logging; namespace Wabbajack.VFS.Test; public class Startup { public void ConfigureServices(IServiceCollection service) { service.AddSingleton<TemporaryFileManager, TemporaryFileManager>(); service .AddAllSingleton<IResource, IResource<FileExtractor.FileExtractor>, Resource<FileExtractor.FileExtractor>>( s => new Resource<FileExtractor.FileExtractor>("File Extractor", 2)); service .AddAllSingleton<IResource, IResource<Context>, Resource<Context>>( s => new ("VFS Context", 2)); service .AddAllSingleton<IResource, IResource<FileHashCache>, Resource<FileHashCache>>( s => new ("File Hash Cache", 2)); // Keep this fixed at 2 so that we can detect deadlocks in the VFS parallelOptions service.AddSingleton(new ParallelOptions {MaxDegreeOfParallelism = 2}); service.AddSingleton(new FileHashCache(KnownFolders.EntryPoint.Combine("hashcache.sqlite"), new Resource<FileHashCache>("File Hashing", 10))); service.AddSingleton(new VFSCache(KnownFolders.EntryPoint.Combine("vfscache.sqlite"))); service.AddTransient<Context>(); service.AddSingleton<FileExtractor.FileExtractor>(); } public void Configure(ILoggerFactory loggerFactory, ITestOutputHelperAccessor accessor) { loggerFactory.AddProvider(new XunitTestOutputLoggerProvider(accessor, delegate { return true; })); } }