[Plugin system] Initialize plugin base in tests.

This commit is contained in:
2023-10-05 16:00:38 +01:00
parent e693238a7c
commit b27d0c1f03
23 changed files with 66 additions and 64 deletions

View File

@@ -51,7 +51,6 @@ public static class Filesystems
public static void Identify(IMediaImage imagePlugin, out List<string> idPlugins, Partition partition,
bool getGuid = false)
{
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
idPlugins = new List<string>();

View File

@@ -49,7 +49,6 @@ public static class ImageFormat
{
try
{
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
IBaseImage imageFormat = null;

View File

@@ -50,7 +50,6 @@ public static class Partitions
/// <returns>List of found partitions</returns>
public static List<Partition> GetAll(IMediaImage image)
{
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
List<Partition> foundPartitions = new();
List<Partition> childPartitions = new();

View File

@@ -61,7 +61,6 @@ public sealed partial class Sidecar
/// <summary>Initializes a new instance of this class</summary>
public Sidecar()
{
PluginBase.Init();
_plugins = PluginRegister.Singleton;
_imgChkWorker = new Checksum();
_aborted = false;
@@ -77,8 +76,6 @@ public sealed partial class Sidecar
/// <param name="encoding">Encoding for analysis</param>
public Sidecar(IBaseImage image, string imagePath, Guid filterId, Encoding encoding)
{
PluginBase.Init();
_image = image;
_imagePath = imagePath;
_filterId = filterId;

View File

@@ -36,7 +36,6 @@ using System.Reactive;
using System.Reflection;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Interfaces;
using Aaru.Core;
using Aaru.Gui.Models;
using Aaru.Gui.Views.Dialogs;
using Aaru.Localization;
@@ -61,7 +60,6 @@ public sealed class PluginsViewModel : ViewModelBase
FloppyImages = new ObservableCollection<PluginModel>();
WritableFloppyImages = new ObservableCollection<PluginModel>();
CloseCommand = ReactiveCommand.Create(ExecuteCloseCommand);
PluginBase.Init();
// TODO: Takes too much time
foreach(Type filterType in PluginRegister.Singleton.Filters.Values)

View File

@@ -173,7 +173,6 @@ public sealed class ImageConvertViewModel : ViewModelBase
DriveSerialNumberVisible = !string.IsNullOrWhiteSpace(inputFormat.Info.DriveSerialNumber);
DriveFirmwareRevisionVisible = !string.IsNullOrWhiteSpace(inputFormat.Info.DriveFirmwareRevision);
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
foreach(Type pluginType in plugins.WritableImages.Values)

View File

@@ -168,7 +168,6 @@ public sealed class MediaDumpViewModel : ViewModelBase
}
}
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
foreach(Type pluginType in plugins.WritableImages.Values)

View File

@@ -21,6 +21,10 @@ public abstract class FilesystemTest(string fileSystemType)
public abstract FileSystemTest[] Tests { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Detect()
{
@@ -40,8 +44,7 @@ public abstract class FilesystemTest(string fileSystemType)
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(testFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(testFile);
Assert.IsNotNull(inputFilter, string.Format(Localization.Filter_0, testFile));
@@ -120,8 +123,7 @@ public abstract class FilesystemTest(string fileSystemType)
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(testFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(testFile);
Assert.IsNotNull(inputFilter, string.Format(Localization.Filter_0, testFile));
@@ -160,8 +162,7 @@ public abstract class FilesystemTest(string fileSystemType)
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(testFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(testFile);
Assert.IsNotNull(inputFilter, string.Format(Localization.Filter_0, testFile));

View File

@@ -43,8 +43,7 @@ public abstract class ReadOnlyFilesystemTest : FilesystemTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(testFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(testFile);
Assert.IsNotNull(inputFilter, string.Format(Localization.Filter_0, testFile));
@@ -183,8 +182,7 @@ public abstract class ReadOnlyFilesystemTest : FilesystemTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(testFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(testFile);
if(ImageFormat.Detect(inputFilter) is not IMediaImage image)
continue;

View File

@@ -20,6 +20,9 @@ public abstract class BlockMediaImageTest : BaseMediaImageTest
const uint SECTORS_TO_READ = 256;
public abstract BlockImageTestExpected[] Tests { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Info()
{
@@ -39,8 +42,7 @@ public abstract class BlockMediaImageTest : BaseMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as IMediaImage;
@@ -90,8 +92,7 @@ public abstract class BlockMediaImageTest : BaseMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as IMediaImage;
@@ -135,7 +136,6 @@ public abstract class BlockMediaImageTest : BaseMediaImageTest
public void Contents()
{
Environment.CurrentDirectory = DataFolder;
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
Assert.Multiple(() =>
@@ -155,8 +155,7 @@ public abstract class BlockMediaImageTest : BaseMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as IMediaImage;

View File

@@ -27,6 +27,10 @@ public abstract class OpticalMediaImageTest : BaseMediaImageTest
const uint SECTORS_TO_READ = 256;
public abstract OpticalImageTestExpected[] Tests { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Info()
{
@@ -46,8 +50,7 @@ public abstract class OpticalMediaImageTest : BaseMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as IOpticalMediaImage;
@@ -158,8 +161,7 @@ public abstract class OpticalMediaImageTest : BaseMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as IOpticalMediaImage;
@@ -199,7 +201,6 @@ public abstract class OpticalMediaImageTest : BaseMediaImageTest
for(var i = 0; i < track.FileSystems.Length; i++)
{
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
bool found = plugins.Filesystems.TryGetValue(idPlugins[i], out Type pluginType);
@@ -361,8 +362,7 @@ public abstract class OpticalMediaImageTest : BaseMediaImageTest
if(!exists)
return;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as IOpticalMediaImage;

View File

@@ -4,6 +4,7 @@ using Aaru.Checksums;
using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.Core;
using FluentAssertions;
using FluentAssertions.Execution;
using NUnit.Framework;
@@ -17,6 +18,10 @@ public abstract class TapeMediaImageTest : BaseMediaImageTest
public abstract TapeImageTestExpected[] Tests { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Tape()
{
@@ -36,8 +41,7 @@ public abstract class TapeMediaImageTest : BaseMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as ITapeImage;
@@ -85,8 +89,7 @@ public abstract class TapeMediaImageTest : BaseMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as IMediaImage;
@@ -136,8 +139,7 @@ public abstract class TapeMediaImageTest : BaseMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(Plugin.GetType()) as IMediaImage;

View File

@@ -28,13 +28,16 @@ public abstract class FsExtractHashIssueTest
protected abstract bool ExpectPartitions { get; }
protected abstract string Namespace { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Test()
{
Environment.CurrentDirectory = DataFolder;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(TestFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(TestFile);
Dictionary<string, string> options = ParsedOptions;
options["debug"] = Debug.ToString();
@@ -46,7 +49,6 @@ public abstract class FsExtractHashIssueTest
if(Encoding != null)
encodingClass = Claunia.Encoding.Encoding.GetEncoding(Encoding);
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
var imageFormat = ImageFormat.Detect(inputFilter) as IMediaImage;

View File

@@ -22,13 +22,15 @@ public abstract class FsExtractIssueTest
public abstract bool ExpectPartitions { get; }
public abstract string Namespace { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Test()
{
Environment.CurrentDirectory = DataFolder;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(TestFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(TestFile);
Dictionary<string, string> options = ParsedOptions;
options["debug"] = Debug.ToString();
@@ -40,7 +42,6 @@ public abstract class FsExtractIssueTest
if(Encoding != null)
encodingClass = Claunia.Encoding.Encoding.GetEncoding(Encoding);
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
var imageFormat = ImageFormat.Detect(inputFilter) as IMediaImage;

View File

@@ -16,6 +16,9 @@ public abstract class ImageReadIssueTest
public abstract string DataFolder { get; }
public abstract string TestFile { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Test()
{
@@ -24,8 +27,7 @@ public abstract class ImageReadIssueTest
bool exists = File.Exists(TestFile);
Assert.True(exists, Localization.Test_file_not_found);
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(TestFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(TestFile);
Assert.IsNotNull(inputFilter, Localization.Filter_for_test_file_is_not_detected);

View File

@@ -38,6 +38,9 @@ public abstract class OpticalImageConvertIssueTest
public abstract string Md5 { get; }
public abstract bool UseLong { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Convert()
{
@@ -47,8 +50,7 @@ public abstract class OpticalImageConvertIssueTest
Metadata sidecar = null;
ErrorNumber errno;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(InputPath);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(InputPath);
Assert.IsNotNull(inputFilter, Localization.Cannot_open_specified_file);
@@ -368,11 +370,13 @@ public abstract class OpticalImageConvertIssueTest
if(trackFlags.Count > 0)
{
foreach((byte track, byte flags) in trackFlags)
{
outputOptical.WriteSectorTag(new[]
{
flags
}, track, SectorTagType.CdTrackFlags);
}
}
if(mcn != null)
outputOptical.WriteMediaTag(Encoding.UTF8.GetBytes(mcn), MediaTagType.CD_MCN);

View File

@@ -18,6 +18,9 @@ public abstract class OpticalImageReadIssueTest
public abstract string DataFolder { get; }
public abstract string TestFile { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Test()
{
@@ -26,8 +29,7 @@ public abstract class OpticalImageReadIssueTest
bool exists = File.Exists(TestFile);
Assert.True(exists, Localization.Test_file_not_found);
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(TestFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(TestFile);
Assert.IsNotNull(inputFilter, Localization.Filter_for_test_file_is_not_detected);

View File

@@ -15,6 +15,9 @@ public abstract class PartitionSchemeTest
public abstract string DataFolder { get; }
public abstract PartitionTest[] Tests { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Test()
{
@@ -33,8 +36,7 @@ public abstract class PartitionSchemeTest
// ReSharper disable once HeuristicUnreachableCode
continue;
var filtersList = new FiltersList();
IFilter inputFilter = filtersList.GetFilter(testFile);
IFilter inputFilter = PluginRegister.Singleton.GetFilter(testFile);
Assert.IsNotNull(inputFilter, string.Format(Localization.Filter_0, testFile));

View File

@@ -8,6 +8,7 @@ using Aaru.CommonTypes;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Interfaces;
using Aaru.CommonTypes.Structs;
using Aaru.Core;
using Aaru.Core.Media;
using Aaru.Devices;
using FluentAssertions;
@@ -21,6 +22,9 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
const uint SECTORS_TO_READ = 256;
public abstract OpticalImageTestExpected[] Tests { get; }
[OneTimeSetUp]
public void InitTest() => PluginBase.Init();
[Test]
public void Info()
{
@@ -41,8 +45,7 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var image = Activator.CreateInstance(InputPlugin.GetType()) as IOpticalMediaImage;
@@ -151,8 +154,7 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
if(!exists)
continue;
var filtersList = new FiltersList();
IFilter filter = filtersList.GetFilter(testFile);
IFilter filter = PluginRegister.Singleton.GetFilter(testFile);
filter.Open(testFile);
var inputFormat = Activator.CreateInstance(InputPlugin.GetType()) as IOpticalMediaImage;
@@ -464,11 +466,13 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
if(trackFlags.Count > 0)
{
foreach((byte track, byte flags) in trackFlags)
{
outputFormat.WriteSectorTag(new[]
{
flags
}, track, SectorTagType.CdTrackFlags);
}
}
if(mcn != null)
outputFormat.WriteMediaTag(Encoding.UTF8.GetBytes(mcn), MediaTagType.CD_MCN);
@@ -496,8 +500,7 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
string.Format(Localization.Error_0_closing_output_image_Contents_are_not_correct,
outputFormat.ErrorMessage));
filtersList = new FiltersList();
filter = filtersList.GetFilter(outputPath);
filter = PluginRegister.Singleton.GetFilter(outputPath);
filter.Open(outputPath);
string tmpFolder = Path.GetDirectoryName(outputPath);

View File

@@ -88,7 +88,6 @@ sealed class ListOptionsCommand : Command
AaruConsole.DebugWriteLine(MODULE_NAME, "--verbose={0}", verbose);
Statistics.AddCommand("list-options");
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
AaruConsole.WriteLine(UI.Read_only_filesystems_options);

View File

@@ -88,7 +88,6 @@ sealed class ListOptionsCommand : Command
AaruConsole.DebugWriteLine(MODULE_NAME, "--verbose={0}", verbose);
Statistics.AddCommand("list-options");
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
AaruConsole.WriteLine(UI.Read_Write_media_images_options);

View File

@@ -87,7 +87,6 @@ sealed class ListNamespacesCommand : Command
AaruConsole.DebugWriteLine(MODULE_NAME, "--verbose={0}", verbose);
Statistics.AddCommand("list-namespaces");
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
foreach(KeyValuePair<string, Type> kvp in plugins.ReadOnlyFilesystems)

View File

@@ -370,7 +370,6 @@ sealed class DumpMediaCommand : Command
if(isResponse)
eject = true;
PluginBase.Init();
PluginRegister plugins = PluginRegister.Singleton;
List<IBaseWritableImage> candidates = new();
string extension = Path.GetExtension(outputPath);