From 3cdb933fe1b2df2c741a7082162793969b5fea83 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 13 May 2025 13:40:16 -0400 Subject: [PATCH 1/3] [CI] Add PR validation on macOS This is reverting "Revert "[CI] Add PR validation on macOS (#9175)" (#9208)" commit e5b2802e701ee644049eeb963fbe64f4cd756b15. This is from the original commit message: * [tests] Run tests workflow on macos * Adjust RequiresDocker and RequiresSSLCertificate to skip macos * Disable tests failing on macos * Don't override DOTNET_ROOT when getting list of tests * Skip playground tests on windows and macos .. and add RunOnGithubActionsMacOS * Update runsheet runners * fixup! Update runsheet runners * fixup! Update runsheet runners * Address review feedback from @ russkie * Address review feedback from @ russkie - skip E2E tests on macos as they .. are timing out. Issue: https://github.com/dotnet/aspire/issues/9198 * Add missing CI: false for outerloop test runs Fixes ``` /home/runner/work/aspire/aspire/eng/Versions.targets(49,67): error MSB4057: The target "GitInfo" does not exist in the project. [/home/runner/work/aspire/aspire/src/Microsoft.Extensions.ServiceDiscovery.Abstractions/Microsoft.Extensions.ServiceDiscovery.Abstractions.csproj] /home/runner/work/aspire/aspire/eng/Versions.targets(49,67): error MSB4057: The target "GitInfo" does not exist in the project. [/home/runner/work/aspire/aspire/src/Microsoft.Extensions.ServiceDiscovery.Abstractions/Microsoft.Extensions.ServiceDiscovery.Abstractions.csproj] /home/runner/work/aspire/aspire/eng/Versions.targets(49,67): error MSB4057: The target "GitInfo" does not exist in the project. [/home/runner/work/aspire/aspire/src/Tools/ConfigurationSchemaGenerator/ConfigurationSchemaGenerator.csproj] /home/runner/work/aspire/aspire/eng/Versions.targets(49,67): error MSB4057: The target "GitInfo" does not exist in the project. [/home/runner/work/aspire/aspire/src/Microsoft.Extensions.ServiceDiscovery.Abstractions/Microsoft.Extensions.ServiceDiscovery.Abstractions.csproj] /home/runner/work/aspire/aspire/eng/Versions.targets(49,67): error MSB4057: The target "GitInfo" does not exist in the project. [/home/runner/work/aspire/aspire/src/Tools/ConfigurationSchemaGenerator/ConfigurationSchemaGenerator.csproj] ``` * Add macos to the quarantined tests report generator --------- Co-authored-by: Igor Velikorossov Co-authored-by: Igor Velikorossov --- .github/actions/enumerate-tests/action.yml | 2 +- .github/workflows/run-tests.yml | 4 +- .github/workflows/tests-outerloop.yml | 2 + .github/workflows/tests.yml | 56 ++++++++++++++++++- .../QuarantinedTestRunsheetBuilder.targets | 11 +++- .../TestRunsheetBuilder.targets | 12 ++++ eng/Testing.props | 1 + eng/Testing.targets | 7 ++- .../FormatHelpersTests.cs | 2 + .../Integration/Playwright/AppBarTests.cs | 2 +- .../Aspire.EndToEnd.Tests.csproj | 2 + .../Aspire.Playground.Tests.csproj | 3 +- .../BuildAndRunTemplateTests.cs | 1 + .../Aspire.TestUtilities/PlatformDetection.cs | 1 + .../RequiresDockerAttribute.cs | 3 +- .../RequiresSSLCertificateAttribute.cs | 4 +- tests/Directory.Build.targets | 7 ++- 17 files changed, 102 insertions(+), 18 deletions(-) diff --git a/.github/actions/enumerate-tests/action.yml b/.github/actions/enumerate-tests/action.yml index 9129374ffaa..99324904ab3 100644 --- a/.github/actions/enumerate-tests/action.yml +++ b/.github/actions/enumerate-tests/action.yml @@ -69,7 +69,7 @@ runs: "integrations_tests_matrix=$jsonString" "integrations_tests_matrix=$jsonString" | Out-File -FilePath $env:GITHUB_OUTPUT - - name: Generate tests matrix + - name: Generate templates matrix id: generate_templates_matrix if: ${{ inputs.includeTemplates }} shell: pwsh diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 799f8f312f3..6c0b8d11e28 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -59,7 +59,7 @@ jobs: } - name: Setup vars (Linux) - if: ${{ inputs.os == 'ubuntu-latest' }} + if: ${{ inputs.os == 'ubuntu-latest' || inputs.os == 'macos-latest' }} run: | echo "DOTNET_SCRIPT=./dotnet.sh" >> $GITHUB_ENV echo "BUILD_SCRIPT=./build.sh" >> $GITHUB_ENV @@ -277,7 +277,7 @@ jobs: path: result-*.rst - name: Dump docker info - if: always() + if: ${{ always() && inputs.os == 'ubuntu-latest' }} run: | docker container ls --all docker container ls --all --format json diff --git a/.github/workflows/tests-outerloop.yml b/.github/workflows/tests-outerloop.yml index 2963cb23b69..70b031ab22f 100644 --- a/.github/workflows/tests-outerloop.yml +++ b/.github/workflows/tests-outerloop.yml @@ -103,6 +103,8 @@ jobs: $OS = "ubuntu" } elseif ($trxFile.FullName -match "windows") { $OS = "windows" + } elseif ($trxFile.FullName -match "macos") { + $OS = "macos" } else { $OS = "unknown" } diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e14bdfba4ce..5dbfcf46db7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -36,6 +36,22 @@ jobs: includeIntegrations: true includeTemplates: true + setup_for_tests_macos: + name: Setup for tests (macOS) + if: ${{ github.repository_owner == 'dotnet' }} + runs-on: macos-latest + outputs: + integrations_tests_matrix: ${{ steps.generate_tests_matrix.outputs.integrations_tests_matrix }} + templates_tests_matrix: ${{ steps.generate_tests_matrix.outputs.templates_tests_matrix }} + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - uses: ./.github/actions/enumerate-tests + id: generate_tests_matrix + with: + includeIntegrations: true + includeTemplates: true + setup_for_tests_win: name: Setup for tests (Windows) if: ${{ github.repository_owner == 'dotnet' }} @@ -84,6 +100,19 @@ jobs: os: "ubuntu-latest" extraTestArgs: "--filter-not-trait \"quarantined=true\"" + integrations_test_macos: + uses: ./.github/workflows/run-tests.yml + name: Integrations macos + needs: setup_for_tests_macos + strategy: + fail-fast: false + matrix: + ${{ fromJson(needs.setup_for_tests_macos.outputs.integrations_tests_matrix) }} + with: + testShortName: ${{ matrix.shortname }} + os: "macos-latest" + extraTestArgs: "--filter-not-trait \"quarantined=true\"" + integrations_test_win: uses: ./.github/workflows/run-tests.yml name: Integrations Windows @@ -114,6 +143,23 @@ jobs: requiresNugets: true requiresTestSdk: true + templates_test_macos: + name: Templates macos + uses: ./.github/workflows/run-tests.yml + needs: [setup_for_tests_macos, build_packages] + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.setup_for_tests_macos.outputs.templates_tests_matrix) }} + with: + testShortName: ${{ matrix.shortname }} + os: "macos-latest" + testProjectPath: tests/Aspire.Templates.Tests/Aspire.Templates.Tests.csproj + testSessionTimeout: 20m + testHangTimeout: 12m + extraTestArgs: "--filter-not-trait quarantined=true --filter-class Aspire.Templates.Tests.${{ matrix.shortname }}" + requiresNugets: true + requiresTestSdk: true + templates_test_win: name: Templates Windows uses: ./.github/workflows/run-tests.yml @@ -137,7 +183,7 @@ jobs: needs: build_packages with: testShortName: EndToEnd - # EndToEnd is not run on Windows due to missing Docker support + # EndToEnd is not run on Windows/macOS due to missing Docker support os: ubuntu-latest testProjectPath: tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj requiresNugets: true @@ -146,7 +192,7 @@ jobs: if: ${{ always() && github.repository_owner == 'dotnet' }} runs-on: ubuntu-latest name: Final Results - needs: [ integrations_test_lin, integrations_test_win, templates_test_lin, templates_test_win, endtoend_tests ] + needs: [ integrations_test_lin, integrations_test_win, integrations_test_macos, templates_test_lin, templates_test_win, templates_test_macos, endtoend_tests ] steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -170,6 +216,12 @@ jobs: merge-multiple: true path: ${{ github.workspace }}/testresults/windows-latest + - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4.1.9 + with: + pattern: logs-*-macos-latest + merge-multiple: true + path: testresults/macos-latest + - name: Upload test results if: always() uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 diff --git a/eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets b/eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets index f306761b7d5..ef43eb26694 100644 --- a/eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets +++ b/eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets @@ -131,6 +131,7 @@ <_TestRunnerWindows>./eng/build.ps1 <_TestRunnerLinux>./eng/build.sh + <_TestRunnerMacOS>./eng/build.sh <_TestCommand>-restore -build -test -projects "$(_RelativeTestProjectPath)" /bl:"$(_RelativeTestBinLog)" -c $(Configuration) -ci /p:RunQuarantinedTests=true /p:CI=false @@ -72,11 +74,13 @@ <_TestRunsheetWindows>{ "label": "w: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "windows-latest", "command": "./eng/build.ps1 $(_TestCommand)" } <_TestRunsheetLinux>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "ubuntu-latest", "command": "$(_PreCommand)./eng/build.sh $(_TestCommand)" } + <_TestRunsheetMacOS>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "ubuntu-latest", "command": "$(_PreCommand)./eng/build.sh $(_TestCommand)" } <_OutputFiles Include="$(_TestRunsheetFileNameWindows)" /> <_OutputFiles Include="$(_TestRunsheetFileNameLinux)" /> + <_OutputFiles Include="$(_TestRunsheetFileNameMacOS)" /> @@ -94,6 +98,12 @@ Lines="$(_TestRunsheetLinux)" Overwrite="true" WriteOnlyWhenDifferent="true" /> + true true + true true true true diff --git a/eng/Testing.targets b/eng/Testing.targets index b631ca7b509..60d0faf06af 100644 --- a/eng/Testing.targets +++ b/eng/Testing.targets @@ -11,8 +11,9 @@ - IncludeTestUtilities: indicates whether the test project must not include the TestUtilities project reference; default is false; overridable. Project requirements: - - RunOnGithubActions: indicates whether tests should run on GitHub Actions (either Windows or Linux); computed. + - RunOnGithubActions: indicates whether tests should run on GitHub Actions (either Windows or Linux or macOS); computed. - RunOnGithubActionsWindows: indicates whether tests should run on Windows in GitHub Actions; default is true; overridable. + - RunOnGithubActionsMacOS: indicates whether tests should run on MacOS in GitHub Actions; default is true; overridable. - RunOnGithubActionsLinux: indicates whether tests should run on Linux in GitHub Actions; default is true; overridable. - RunOnAzdoCI: indicates whether tests should run on Azure DevOps (either Windows or Linux); always false, if RunOnAzdoHelix=true; computed. - RunOnAzdoCIWindows: indicates whether tests should run on Windows in Azure DevOps; default is true; overridable. @@ -42,7 +43,7 @@ false - true + true false true @@ -90,7 +91,7 @@ <_Runner Include=" - GitHub Actions: $(_IsGitHubActionsRunner)" /> <_Runner Include=" - Azure DevOps: $(_IsAzdoCIRunner)" /> <_Runner Include=" - Helix: $(_IsAzdoHelixRunner)" /> - <_Requirement Include=" - GitHub Actions: $(RunOnGithubActions) (Windows: $(RunOnGithubActionsWindows) / Linux: $(RunOnGithubActionsLinux))" /> + <_Requirement Include=" - GitHub Actions: $(RunOnGithubActions) (Windows: $(RunOnGithubActionsWindows) / Linux: $(RunOnGithubActionsLinux) / MacOS: $(RunOnGithubActionsMacOS))" /> <_Requirement Include=" - Azure DevOps: $(RunOnAzdoCI) (Windows: $(RunOnAzdoCIWindows) / Linux: $(RunOnAzdoCILinux))" /> <_Requirement Include=" - Helix: $(RunOnAzdoHelix) (Windows: $(RunOnAzdoHelixWindows) / Linux: $(RunOnAzdoHelixLinux))" /> diff --git a/tests/Aspire.Dashboard.Tests/FormatHelpersTests.cs b/tests/Aspire.Dashboard.Tests/FormatHelpersTests.cs index a2d26c7d482..de7c1736b47 100644 --- a/tests/Aspire.Dashboard.Tests/FormatHelpersTests.cs +++ b/tests/Aspire.Dashboard.Tests/FormatHelpersTests.cs @@ -4,6 +4,7 @@ using System.Globalization; using Aspire.Dashboard.Model; using Aspire.Dashboard.Utils; +using Aspire.TestUtilities; using Microsoft.Extensions.Logging.Abstractions; using Xunit; @@ -75,6 +76,7 @@ public void FormatDateTime_WithMilliseconds_FinnishCulture(string expected, Mill [InlineData("15/06/2009 1:45:30.1234567 pm", MillisecondsDisplay.Full, "2009-06-15T13:45:30.1234567Z")] [InlineData("15/06/2009 1:45:30 pm", MillisecondsDisplay.None, "2009-06-15T13:45:30.0000000Z")] [InlineData("15/06/2009 1:45:30 pm", MillisecondsDisplay.None, "2009-06-15T13:45:30.1234567Z")] + [ActiveIssue("https://github.com/dotnet/aspire/issues/9151", typeof(PlatformDetection), nameof(PlatformDetection.IsMacOS))] public void FormatDateTime_WithMilliseconds_NewZealandCulture(string expected, MillisecondsDisplay includeMilliseconds, string value) { var date = GetLocalDateTime(value); diff --git a/tests/Aspire.Dashboard.Tests/Integration/Playwright/AppBarTests.cs b/tests/Aspire.Dashboard.Tests/Integration/Playwright/AppBarTests.cs index cc7dd681c1d..b6e8bf2c782 100644 --- a/tests/Aspire.Dashboard.Tests/Integration/Playwright/AppBarTests.cs +++ b/tests/Aspire.Dashboard.Tests/Integration/Playwright/AppBarTests.cs @@ -65,7 +65,7 @@ await AsyncTestHelpers.AssertIsTrueRetryAsync( } [Fact] - [QuarantinedTest("https://github.com/dotnet/aspire/issues/9152")] + [ActiveIssue("https://github.com/dotnet/aspire/issues/9152", typeof(PlatformDetection), nameof(PlatformDetection.IsMacOS))] public async Task AppBar_Change_Theme_ReloadPage() { // Arrange diff --git a/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj b/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj index a074d720d09..ae826d9bb89 100644 --- a/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj +++ b/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj @@ -4,6 +4,8 @@ $(DefaultTargetFramework) false + + false false false diff --git a/tests/Aspire.Playground.Tests/Aspire.Playground.Tests.csproj b/tests/Aspire.Playground.Tests/Aspire.Playground.Tests.csproj index d9f54b89477..76b55e53ece 100644 --- a/tests/Aspire.Playground.Tests/Aspire.Playground.Tests.csproj +++ b/tests/Aspire.Playground.Tests/Aspire.Playground.Tests.csproj @@ -11,6 +11,7 @@ false + false false false @@ -20,7 +21,7 @@ FIXME: temporary workaround for https://github.com/Azure/azure-functions-dotnet-worker/issues/2969 --> - ./dotnet.sh build "%24(pwd)/playground/AzureFunctionsEndToEnd/AzureFunctionsEndToEnd.Functions/AzureFunctionsEndToEnd.Functions.csproj" -c $(Configuration) /p:SkipUnstableEmulators=true && + ./dotnet.sh build "%24(pwd)/playground/AzureFunctionsEndToEnd/AzureFunctionsEndToEnd.Functions/AzureFunctionsEndToEnd.Functions.csproj" -c $(Configuration) /p:SkipUnstableEmulators=true /p:CI=false && staging-archive\ diff --git a/tests/Aspire.Templates.Tests/BuildAndRunTemplateTests.cs b/tests/Aspire.Templates.Tests/BuildAndRunTemplateTests.cs index 61e2e9a42f2..4e42355c5b0 100644 --- a/tests/Aspire.Templates.Tests/BuildAndRunTemplateTests.cs +++ b/tests/Aspire.Templates.Tests/BuildAndRunTemplateTests.cs @@ -113,6 +113,7 @@ public async Task StarterTemplateNewAndRunWithoutExplicitBuild(string config) } [Fact] + [ActiveIssue("https://github.com/dotnet/aspire/issues/9155", typeof(PlatformDetection), nameof(PlatformDetection.IsMacOS))] public async Task ProjectWithNoHTTPSRequiresExplicitOverrideWithEnvironmentVariable() { string id = GetNewProjectId(prefix: "aspire"); diff --git a/tests/Aspire.TestUtilities/PlatformDetection.cs b/tests/Aspire.TestUtilities/PlatformDetection.cs index 49f949e85ba..42bb9299c68 100644 --- a/tests/Aspire.TestUtilities/PlatformDetection.cs +++ b/tests/Aspire.TestUtilities/PlatformDetection.cs @@ -14,4 +14,5 @@ public static class PlatformDetection public static bool IsWindows => OperatingSystem.IsWindows(); public static bool IsLinux => OperatingSystem.IsLinux(); + public static bool IsMacOS => OperatingSystem.IsMacOS(); } diff --git a/tests/Aspire.TestUtilities/RequiresDockerAttribute.cs b/tests/Aspire.TestUtilities/RequiresDockerAttribute.cs index 1f75bc7c2b5..458c16862a8 100644 --- a/tests/Aspire.TestUtilities/RequiresDockerAttribute.cs +++ b/tests/Aspire.TestUtilities/RequiresDockerAttribute.cs @@ -20,8 +20,7 @@ public class RequiresDockerAttribute : Attribute, ITraitAttribute // - https://github.com/dotnet/aspire/issues/4291 // - Linux - Local, or CI: always assume that docker is installed public static bool IsSupported => - !OperatingSystem.IsWindows() || - !PlatformDetection.IsRunningOnCI; + OperatingSystem.IsLinux() || !PlatformDetection.IsRunningOnCI; // non-linux on CI does not support docker public string? Reason { get; init; } public RequiresDockerAttribute(string? reason = null) diff --git a/tests/Aspire.TestUtilities/RequiresSSLCertificateAttribute.cs b/tests/Aspire.TestUtilities/RequiresSSLCertificateAttribute.cs index d61c6d6231d..5b47477af38 100644 --- a/tests/Aspire.TestUtilities/RequiresSSLCertificateAttribute.cs +++ b/tests/Aspire.TestUtilities/RequiresSSLCertificateAttribute.cs @@ -8,8 +8,8 @@ namespace Aspire.TestUtilities; [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)] public class RequiresSSLCertificateAttribute(string? reason = null) : Attribute, ITraitAttribute { - // Not supported on Windows CI - public static bool IsSupported => !PlatformDetection.IsRunningOnCI || !OperatingSystem.IsWindows(); + // Always supported on linux (local and CI), but only local otherwise + public static bool IsSupported => OperatingSystem.IsLinux() || !PlatformDetection.IsRunningOnCI; public string? Reason { get; init; } = reason; diff --git a/tests/Directory.Build.targets b/tests/Directory.Build.targets index bf1b4461737..64f451b3b42 100644 --- a/tests/Directory.Build.targets +++ b/tests/Directory.Build.targets @@ -36,7 +36,7 @@ - + @@ -61,8 +61,9 @@ - - + + + From 2c008fba5fe3bf3d8699135d891bebb660ea30e2 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 13 May 2025 13:59:31 -0400 Subject: [PATCH 2/3] Fix test-runner.yml --- eng/TestRunsheetBuilder/TestRunsheetBuilder.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/TestRunsheetBuilder/TestRunsheetBuilder.targets b/eng/TestRunsheetBuilder/TestRunsheetBuilder.targets index e2a3c779cfe..0505b855a3f 100644 --- a/eng/TestRunsheetBuilder/TestRunsheetBuilder.targets +++ b/eng/TestRunsheetBuilder/TestRunsheetBuilder.targets @@ -74,7 +74,7 @@ <_TestRunsheetWindows>{ "label": "w: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "windows-latest", "command": "./eng/build.ps1 $(_TestCommand)" } <_TestRunsheetLinux>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "ubuntu-latest", "command": "$(_PreCommand)./eng/build.sh $(_TestCommand)" } - <_TestRunsheetMacOS>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "ubuntu-latest", "command": "$(_PreCommand)./eng/build.sh $(_TestCommand)" } + <_TestRunsheetMacOS>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "macos-latest", "command": "$(_PreCommand)./eng/build.sh $(_TestCommand)" } From bd0bb7229e7f1616517481932d3124fc1cb3706e Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Tue, 13 May 2025 14:04:49 -0400 Subject: [PATCH 3/3] fix labels --- .../QuarantinedTestRunsheetBuilder.targets | 2 +- eng/TestRunsheetBuilder/TestRunsheetBuilder.targets | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets b/eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets index ef43eb26694..4f5f72acadd 100644 --- a/eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets +++ b/eng/QuarantinedTestRunsheetBuilder/QuarantinedTestRunsheetBuilder.targets @@ -145,7 +145,7 @@ <_TestRunsheetWindows>{ "label": "w: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "windows-latest", "command": "./eng/build.ps1 $(_TestCommand)" } <_TestRunsheetLinux>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "ubuntu-latest", "command": "./eng/build.sh $(_TestCommand)" } - <_TestRunsheetMacOS>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "macos-latest", "command": "./eng/build.sh $(_TestCommand)" } + <_TestRunsheetMacOS>{ "label": "m: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "macos-latest", "command": "./eng/build.sh $(_TestCommand)" } { "label": "w: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "windows-latest", "command": "./eng/build.ps1 $(_TestCommand)" } <_TestRunsheetLinux>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "ubuntu-latest", "command": "$(_PreCommand)./eng/build.sh $(_TestCommand)" } - <_TestRunsheetMacOS>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "macos-latest", "command": "$(_PreCommand)./eng/build.sh $(_TestCommand)" } + <_TestRunsheetMacOS>{ "label": "m: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "macos-latest", "command": "$(_PreCommand)./eng/build.sh $(_TestCommand)" }