From b56bf1c52751d3bca6ccecb1ce634999c92df7e1 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Mon, 29 May 2023 15:05:22 +0600 Subject: [PATCH] More scoping for tests --- src/Avalonia.Base/Threading/Dispatcher.Queue.cs | 5 +++++ .../Rendering/CompositorTestsBase.cs | 2 +- tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs | 12 +++++++----- tests/Avalonia.UnitTests/ScopedTestBase.cs | 4 ++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Base/Threading/Dispatcher.Queue.cs b/src/Avalonia.Base/Threading/Dispatcher.Queue.cs index 78a0740e56..829ab4cf87 100644 --- a/src/Avalonia.Base/Threading/Dispatcher.Queue.cs +++ b/src/Avalonia.Base/Threading/Dispatcher.Queue.cs @@ -83,6 +83,11 @@ public partial class Dispatcher { } } + + internal static void ResetBeforeUnitTests() + { + s_uiThread = null; + } internal static void ResetForUnitTests() { diff --git a/tests/Avalonia.Base.UnitTests/Rendering/CompositorTestsBase.cs b/tests/Avalonia.Base.UnitTests/Rendering/CompositorTestsBase.cs index fed193e973..2cb181778b 100644 --- a/tests/Avalonia.Base.UnitTests/Rendering/CompositorTestsBase.cs +++ b/tests/Avalonia.Base.UnitTests/Rendering/CompositorTestsBase.cs @@ -22,7 +22,7 @@ using Xunit; namespace Avalonia.Base.UnitTests.Rendering; -public class CompositorTestsBase +public class CompositorTestsBase : ScopedTestBase { protected class CompositorCanvas : CompositorTestServices { diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs b/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs index 5531f5e878..0e0893fe8d 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/XamlTestBase.cs @@ -17,6 +17,13 @@ namespace Avalonia.Markup.Xaml.UnitTests { var _ = typeof(Binding); GC.KeepAlive(typeof(ItemsRepeater).Assembly); + } + } + + public class XamlTestBase : ScopedTestBase + { + public XamlTestBase() + { if (AvaloniaLocator.Current.GetService() == null) AvaloniaLocator.CurrentMutable.Bind() .ToConstant(new TestXamlLoaderShim()); @@ -28,9 +35,4 @@ namespace Avalonia.Markup.Xaml.UnitTests => AvaloniaRuntimeXamlLoader.Load(document, configuration); } } - - public class XamlTestBase : ScopedTestBase - { - - } } diff --git a/tests/Avalonia.UnitTests/ScopedTestBase.cs b/tests/Avalonia.UnitTests/ScopedTestBase.cs index 1e597e8e89..c319a9ba84 100644 --- a/tests/Avalonia.UnitTests/ScopedTestBase.cs +++ b/tests/Avalonia.UnitTests/ScopedTestBase.cs @@ -1,4 +1,5 @@ using System; +using Avalonia.Threading; namespace Avalonia.UnitTests; @@ -8,11 +9,14 @@ public class ScopedTestBase : IDisposable public ScopedTestBase() { + AvaloniaLocator.Current = AvaloniaLocator.CurrentMutable = new AvaloniaLocator(); + Dispatcher.ResetBeforeUnitTests(); _scope = AvaloniaLocator.EnterScope(); } public virtual void Dispose() { + Dispatcher.ResetForUnitTests(); _scope.Dispose(); } } \ No newline at end of file