From 3aa80fe2f07f4bba1b8f9ec3bbefaf364d672fa6 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 3 Nov 2023 13:55:24 -0400 Subject: [PATCH] chore: Change compile constants confition to improve usability + rely on running platform to check is 2nd app is surppoted instead of compile const --- src/Directory.Build.props | 3 --- .../ExternalRunner/_Private/DevServer.cs | 8 ++++-- .../ExternalRunner/_Private/ProcessHelper.cs | 5 +++- .../ExternalRunner/_Private/SecondaryApp.cs | 27 ++++++++++++------- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 83e847e..23635bc 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -36,9 +36,6 @@ latest AllEnabledByDefault - - - diff --git a/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/DevServer.cs b/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/DevServer.cs index 37bbe4a..2404f62 100644 --- a/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/DevServer.cs +++ b/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/DevServer.cs @@ -1,10 +1,11 @@ -#if !UNO_RUNTIMETESTS_DISABLE_UI && (__SKIA__ || IS_SECONDARY_APP_SUPPORTED) +#if !UNO_RUNTIMETESTS_DISABLE_UI && HAS_UNO_WINUI // HAS_UNO_WINUI: exclude non net7 platforms #nullable enable #if !IS_UNO_RUNTIMETEST_PROJECT #pragma warning disable #endif #pragma warning disable CA1848 // Log perf +#pragma warning disable CS1998 // No await namespace Uno.UI.RuntimeTests.Internal.Helpers; /// @@ -14,6 +15,9 @@ namespace Uno.UI.RuntimeTests.Internal.Helpers; /// This class is intended to be used only by the the test engine itself and should not be used by applications. /// API contract is not guaranteed and might change in future releases. /// +[global::System.Runtime.Versioning.SupportedOSPlatform("windows")] +[global::System.Runtime.Versioning.SupportedOSPlatform("linux")] +[global::System.Runtime.Versioning.SupportedOSPlatform("freeBSD")] internal sealed partial class DevServer : global::System.IAsyncDisposable { private static readonly global::Microsoft.Extensions.Logging.ILogger _log = global::Uno.Extensions.LogExtensionPoint.Log(typeof(DevServer)); @@ -28,7 +32,7 @@ internal sealed partial class DevServer : global::System.IAsyncDisposable public static async global::System.Threading.Tasks.Task Start(global::System.Threading.CancellationToken ct) { #if !HAS_UNO_DEVSERVER - throw new NotSupportedException("Dev server has not been referenced."); + throw new global::System.NotSupportedException("Dev server has not been referenced."); #else var path = await GetDevServer(ct); var port = GetTcpPort(); diff --git a/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/ProcessHelper.cs b/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/ProcessHelper.cs index d5656f6..759dbd1 100644 --- a/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/ProcessHelper.cs +++ b/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/ProcessHelper.cs @@ -1,4 +1,4 @@ -#if !UNO_RUNTIMETESTS_DISABLE_UI && (__SKIA__ || IS_SECONDARY_APP_SUPPORTED) +#if !UNO_RUNTIMETESTS_DISABLE_UI && HAS_UNO_WINUI // HAS_UNO_WINUI: exclude non net7 platforms #nullable enable #if !IS_UNO_RUNTIMETEST_PROJECT @@ -24,6 +24,9 @@ namespace Uno.UI.RuntimeTests.Internal.Helpers; /// This class is intended to be used only by the the test engine itself and should not be used by applications. /// API contract is not guaranteed and might change in future releases. /// +[global::System.Runtime.Versioning.SupportedOSPlatform("windows")] +[global::System.Runtime.Versioning.SupportedOSPlatform("linux")] +[global::System.Runtime.Versioning.SupportedOSPlatform("freeBSD")] internal static partial class ProcessHelper { public static async Task ExecuteAsync( diff --git a/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/SecondaryApp.cs b/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/SecondaryApp.cs index 1c3d225..c0ce19b 100644 --- a/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/SecondaryApp.cs +++ b/src/Uno.UI.RuntimeTests.Engine.Library/Engine/ExternalRunner/_Private/SecondaryApp.cs @@ -1,14 +1,12 @@ -#if !UNO_RUNTIMETESTS_DISABLE_UI +using System; + +#if !UNO_RUNTIMETESTS_DISABLE_UI #nullable enable #if !IS_UNO_RUNTIMETEST_PROJECT #pragma warning disable #endif -#if __SKIA__ -#define IS_SECONDARY_APP_SUPPORTED -#endif - namespace Uno.UI.RuntimeTests.Internal.Helpers; /// @@ -23,9 +21,9 @@ internal static partial class SecondaryApp /// /// Gets a boolean indicating if the current platform supports running tests in a secondary app. /// - public static bool IsSupported => // Note: not as const to avoid "CS0162 unreachable code" warning -#if IS_SECONDARY_APP_SUPPORTED - true; + public static bool IsSupported => +#if HAS_UNO_WINUI // HAS_UNO_WINUI: exclude non net7 platforms + global::System.OperatingSystem.IsWindows() || global::System.OperatingSystem.IsLinux() || global::System.OperatingSystem.IsFreeBSD(); #else false; #endif @@ -39,9 +37,17 @@ internal static partial class SecondaryApp /// The test results. internal static async global::System.Threading.Tasks.Task RunTest(UnitTestEngineConfig config, global::System.Threading.CancellationToken ct, bool isAppVisible = false) { -#if !IS_SECONDARY_APP_SUPPORTED - throw new global::System.NotSupportedException("Secondary app is not supported on this platform."); + if (!IsSupported) + { + throw new global::System.NotSupportedException("Secondary app is not supported on this platform."); + } + +#if !HAS_UNO_WINUI // HAS_UNO_WINUI: exclude non net7 platforms +#pragma warning disable CA1825 // Array.Empty not available on UWP + return new TestCaseResult[0]; // Non reachable code. +#pragma warning restore CA1825 #else +#pragma warning disable CA1416 // Validate platform compatibility => This is checked by the IsSupported property. // First we fetch and start the dev-server (needed to HR tests for instance) await using var devServer = await DevServer.Start(ct); @@ -98,6 +104,7 @@ internal static partial class SecondaryApp await childProcess.ExecuteAndLogAsync(typeof(SecondaryApp).CreateScopedLog($"CHILD_TEST_APP_{(global::System.Threading.Interlocked.Increment(ref _instance)):D2}"), ct); return testOutput; +#pragma warning restore CA1416 // Validate platform compatibility #endif } }