Browse Source

Enable turning off the setup check for appbuilder tests.

Jeremy Koritzinsky 8 years ago
parent
commit
ba481365f6

+ 12 - 1
src/Avalonia.Controls/AppBuilderBase.cs

@@ -209,6 +209,17 @@ namespace Avalonia.Controls
 
         public TAppBuilder UseAvaloniaModules() => AfterSetup(builder => SetupAvaloniaModules());
 
+        private bool CheckSetup { get; set; } = true;
+
+        /// <summary>
+        /// Set this AppBuilder to ignore the setup check. Used for testing purposes.
+        /// </summary>
+        internal TAppBuilder IgnoreSetupCheck()
+        {
+            CheckSetup = false;
+            return Self;
+        }
+
         private void SetupAvaloniaModules()
         {
             var moduleInitializers = from assembly in AvaloniaLocator.Current.GetService<IRuntimePlatform>().GetLoadedAssemblies()
@@ -254,7 +265,7 @@ namespace Avalonia.Controls
                 throw new InvalidOperationException("No rendering system configured.");
             }
 
-            if (s_setupWasAlreadyCalled)
+            if (s_setupWasAlreadyCalled && CheckSetup)
             {
                 throw new InvalidOperationException("Setup was already called on one of AppBuilder instances");
             }

+ 5 - 1
tests/Avalonia.Controls.UnitTests/AppBuilderTests.cs

@@ -65,6 +65,7 @@ namespace Avalonia.Controls.UnitTests
             {
                 ResetModuleLoadStates();
                 AppBuilder.Configure<App>()
+                    .IgnoreSetupCheck()
                     .UseWindowingSubsystem(() => { })
                     .UseRenderingSubsystem(() => { })
                     .UseAvaloniaModules()
@@ -81,6 +82,7 @@ namespace Avalonia.Controls.UnitTests
             {
                 ResetModuleLoadStates();
                 var builder = AppBuilder.Configure<App>()
+                    .IgnoreSetupCheck()
                     .UseWindowingSubsystem(() => { })
                     .UseRenderingSubsystem(() => { }, "Direct2D1");
                 builder.UseAvaloniaModules().SetupWithoutStarting();
@@ -90,6 +92,7 @@ namespace Avalonia.Controls.UnitTests
 
                 ResetModuleLoadStates();
                 builder = AppBuilder.Configure<App>()
+                    .IgnoreSetupCheck()
                     .UseWindowingSubsystem(() => { })
                     .UseRenderingSubsystem(() => { }, "Skia");
                 builder.UseAvaloniaModules().SetupWithoutStarting();
@@ -99,13 +102,14 @@ namespace Avalonia.Controls.UnitTests
             }
         }
 
-        [Fact (Skip = "We don't have rendering modules with dependencies right now")]
+        [Fact]
         public void LoadsRenderingModuleWithoutDependenciesWhenNoModuleMatches()
         {
             using (AvaloniaLocator.EnterScope())
             {
                 ResetModuleLoadStates();
                 var builder = AppBuilder.Configure<App>()
+                    .IgnoreSetupCheck()
                     .UseWindowingSubsystem(() => { })
                     .UseRenderingSubsystem(() => { }, "TBD");
                 builder.UseAvaloniaModules().SetupWithoutStarting();