diff --git a/Duplicati/Library/DynamicLoader/BackendLoader.cs b/Duplicati/Library/DynamicLoader/BackendLoader.cs index 592bb9706..2185179a5 100644 --- a/Duplicati/Library/DynamicLoader/BackendLoader.cs +++ b/Duplicati/Library/DynamicLoader/BackendLoader.cs @@ -183,5 +183,14 @@ namespace Duplicati.Library.DynamicLoader return _backendLoader.GetBackend(url, options); } #endregion + + /// + /// Adds a backend to the loader + /// + /// The backend to add + public static void AddBackend(IBackend backend) + { + _backendLoader.AddModule(backend); + } } } diff --git a/Duplicati/Library/DynamicLoader/DynamicLoader.cs b/Duplicati/Library/DynamicLoader/DynamicLoader.cs index 4a6e8d4ee..56b9af9b8 100644 --- a/Duplicati/Library/DynamicLoader/DynamicLoader.cs +++ b/Duplicati/Library/DynamicLoader/DynamicLoader.cs @@ -233,5 +233,16 @@ namespace Duplicati.Library.DynamicLoader return m_supportedCommands[type] = item.SupportedCommands.ToList().AsReadOnly(); } } + + /// + /// Helper method to register a module + /// + /// The module to register + public void AddModule(T module) + { + LoadInterfaces(); + lock (m_lock) + m_interfaces[GetInterfaceKey(module)] = module; + } } } diff --git a/Duplicati/UnitTest/GeneralBlackBoxTesting.cs b/Duplicati/UnitTest/GeneralBlackBoxTesting.cs index c87dfd331..3c67d8a6b 100644 --- a/Duplicati/UnitTest/GeneralBlackBoxTesting.cs +++ b/Duplicati/UnitTest/GeneralBlackBoxTesting.cs @@ -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); }