Added option to register custom backends for testing

This commit is contained in:
Kenneth Skovhede
2024-04-27 14:57:41 +02:00
parent 8e25c6e2ab
commit 2d7e89407c
3 changed files with 22 additions and 0 deletions
@@ -183,5 +183,14 @@ namespace Duplicati.Library.DynamicLoader
return _backendLoader.GetBackend(url, options);
}
#endregion
/// <summary>
/// Adds a backend to the loader
/// </summary>
/// <param name="backend">The backend to add</param>
public static void AddBackend(IBackend backend)
{
_backendLoader.AddModule(backend);
}
}
}
@@ -233,5 +233,16 @@ namespace Duplicati.Library.DynamicLoader
return m_supportedCommands[type] = item.SupportedCommands.ToList().AsReadOnly();
}
}
/// <summary>
/// Helper method to register a module
/// </summary>
/// <param name="module">The module to register</param>
public void AddModule(T module)
{
LoadInterfaces();
lock (m_lock)
m_interfaces[GetInterfaceKey(module)] = module;
}
}
}
@@ -147,6 +147,7 @@ namespace Duplicati.UnitTest
var u = new Library.Utility.Uri(TestUtils.GetDefaultTarget());
RandomErrorBackend.WrappedBackend = u.Scheme;
var target = u.SetScheme(new RandomErrorBackend().ProtocolKey).ToString();
Library.DynamicLoader.BackendLoader.AddBackend(new RandomErrorBackend());
SVNCheckoutTest.RunTest(TestFolders.Take(5).ToArray(), TestOptions, target);
}
@@ -158,6 +159,7 @@ namespace Duplicati.UnitTest
var u = new Library.Utility.Uri(TestUtils.GetDefaultTarget());
SizeOmittingBackend.WrappedBackend = u.Scheme;
var target = u.SetScheme(new SizeOmittingBackend().ProtocolKey).ToString();
Library.DynamicLoader.BackendLoader.AddBackend(new SizeOmittingBackend());
SVNCheckoutTest.RunTest(TestFolders.Take(5).ToArray(), TestOptions, target);
}