diff --git a/.github/workflows/specialized-test-runner.yml b/.github/workflows/specialized-test-runner.yml index 719cf4da480..d390a68d534 100644 --- a/.github/workflows/specialized-test-runner.yml +++ b/.github/workflows/specialized-test-runner.yml @@ -38,6 +38,7 @@ jobs: outputs: runsheet: ${{ steps.generate_tests_matrix.outputs.runsheet }} requiresNugets: ${{ steps.check_nugets.outputs.requiresNugets }} + requiresCliArchive: ${{ steps.check_cli_archive.outputs.requiresCliArchive }} steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -83,6 +84,16 @@ jobs: echo "requiresNugets=false" >> $GITHUB_OUTPUT fi + - name: Check if any test requires CLI archives + id: check_cli_archive + run: | + RUNSHEET='${{ steps.generate_tests_matrix.outputs.runsheet }}' + if echo "$RUNSHEET" | jq -e 'any(.[]; .requiresCliArchive == true)' > /dev/null 2>&1; then + echo "requiresCliArchive=true" >> $GITHUB_OUTPUT + else + echo "requiresCliArchive=false" >> $GITHUB_OUTPUT + fi + - name: Upload logs, and test results if: ${{ always() }} uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 @@ -104,7 +115,7 @@ jobs: build_cli_archives: name: Build native CLI archives needs: [generate_tests_matrix] - if: ${{ github.repository_owner == 'dotnet' && needs.generate_tests_matrix.outputs.requiresNugets == 'true' }} + if: ${{ github.repository_owner == 'dotnet' && (needs.generate_tests_matrix.outputs.requiresNugets == 'true' || needs.generate_tests_matrix.outputs.requiresCliArchive == 'true') }} uses: ./.github/workflows/build-cli-native-archives.yml run_tests: @@ -124,6 +135,7 @@ jobs: enablePlaywrightInstall: ${{ inputs.enablePlaywrightInstall }} extraTestArgs: ${{ inputs.extraTestArgs }} ignoreTestFailures: ${{ inputs.ignoreTestFailures }} + requiresCliArchive: ${{ matrix.tests.requiresCliArchive == true }} results: if: ${{ always() && github.repository_owner == 'dotnet' }} diff --git a/eng/SpecializedTestRunsheetBuilderBase.targets b/eng/SpecializedTestRunsheetBuilderBase.targets index 866dca2e594..3d27af668e8 100644 --- a/eng/SpecializedTestRunsheetBuilderBase.targets +++ b/eng/SpecializedTestRunsheetBuilderBase.targets @@ -34,12 +34,12 @@ --> <_IsUnsupportedProject>false - <_IsUnsupportedProject Condition="$(MSBuildProjectName.Contains('Templates')) or $(MSBuildProjectName.Contains('Playground')) or $(MSBuildProjectName.Contains('EndToEnd'))">true + <_IsUnsupportedProject Condition="$(MSBuildProjectName.Contains('Playground'))">true $([System.String]::Copy('$(MSBuildProjectFullPath)').Replace('$(RepoRoot)', '%24(pwd)/')) <_RelativeTestBinLog>$([System.String]::Copy('$(_TestBinLog)').Replace('$(RepoRoot)', '%24(pwd)/')) - <_RequiresNugets>false - <_RequiresNugets Condition="$(MSBuildProjectName.Contains('Templates')) or $(MSBuildProjectName.Contains('Playground')) or $(MSBuildProjectName.Contains('EndToEnd'))">true + <_RequiresNugets Condition="'$(RequiresNugets)' == 'true'">true - <_RequiresTestSdk>false - <_RequiresTestSdk Condition="$(MSBuildProjectName.Contains('Templates'))">true + <_RequiresTestSdk Condition="'$(RequiresTestSdk)' == 'true'">true + + <_RequiresCliArchive>false + <_RequiresCliArchive Condition="'$(RequiresCliArchive)' == 'true'">true + + <_GithubActionsRunnerWindows>windows-latest + <_GithubActionsRunnerWindows Condition="'$(GithubActionsRunnerWindows)' != ''">$(GithubActionsRunnerWindows) + + <_GithubActionsRunnerLinux>ubuntu-latest + <_GithubActionsRunnerLinux Condition="'$(GithubActionsRunnerLinux)' != ''">$(GithubActionsRunnerLinux) + + <_GithubActionsRunnerMacOS>macos-latest + <_GithubActionsRunnerMacOS Condition="'$(GithubActionsRunnerMacOS)' != ''">$(GithubActionsRunnerMacOS) <_TestRunnerWindows>./eng/build.ps1 <_TestRunnerLinux>./eng/build.sh @@ -149,9 +153,9 @@ <_TestCommand>$([System.String]::Copy($(_TestCommand)).Replace("\", "/").Replace('"', '\"')) - <_TestRunsheetWindows>{ "label": "w: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "windows-latest", "command": "./eng/build.ps1 $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk) } - <_TestRunsheetLinux>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "ubuntu-latest", "command": "./eng/build.sh $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk) } - <_TestRunsheetMacOS>{ "label": "m: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "macos-latest", "command": "./eng/build.sh $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk) } + <_TestRunsheetWindows>{ "label": "w: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "$(_GithubActionsRunnerWindows)", "command": "./eng/build.ps1 $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk), "requiresCliArchive": $(_RequiresCliArchive) } + <_TestRunsheetLinux>{ "label": "l: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "$(_GithubActionsRunnerLinux)", "command": "./eng/build.sh $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk), "requiresCliArchive": $(_RequiresCliArchive) } + <_TestRunsheetMacOS>{ "label": "m: $(_TestRunsheet)", "project": "$(_TestRunsheet)", "os": "$(_GithubActionsRunnerMacOS)", "command": "./eng/build.sh $(_TestCommand)", "requiresNugets": $(_RequiresNugets), "requiresTestSdk": $(_RequiresTestSdk), "requiresCliArchive": $(_RequiresCliArchive) } true + + true + true true diff --git a/eng/Testing.targets b/eng/Testing.targets index a24b8dd0bd9..9ed87561724 100644 --- a/eng/Testing.targets +++ b/eng/Testing.targets @@ -2,7 +2,6 @@ - - true - true diff --git a/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj b/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj index 7567e9a0d4b..3d3e9ed343b 100644 --- a/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj +++ b/tests/Aspire.Cli.EndToEnd.Tests/Aspire.Cli.EndToEnd.Tests.csproj @@ -8,6 +8,7 @@ true true Exe + true true true diff --git a/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj b/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj index 36a4fe57b93..f99e6f40de9 100644 --- a/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj +++ b/tests/Aspire.EndToEnd.Tests/Aspire.EndToEnd.Tests.csproj @@ -2,6 +2,8 @@ $(DefaultTargetFramework) + true + 8-core-ubuntu-latest false false diff --git a/tests/Aspire.EndToEnd.Tests/AssemblyInfo.cs b/tests/Aspire.EndToEnd.Tests/AssemblyInfo.cs new file mode 100644 index 00000000000..0e79cf6457c --- /dev/null +++ b/tests/Aspire.EndToEnd.Tests/AssemblyInfo.cs @@ -0,0 +1,6 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Aspire.TestUtilities; + +[assembly: OuterloopTest("EndToEnd tests require Docker and are slow")] diff --git a/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs b/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs index 0bd3743eb81..a416a459faf 100644 --- a/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs +++ b/tests/Aspire.EndToEnd.Tests/IntegrationServicesTests.cs @@ -4,6 +4,7 @@ using Xunit; using Aspire.TestProject; using Aspire.Templates.Tests; +using Aspire.TestUtilities; namespace Aspire.EndToEnd.Tests; @@ -19,6 +20,7 @@ public IntegrationServicesTests(ITestOutputHelper testOutput, IntegrationService } [Theory] + [OuterloopTest("EndToEnd tests require Docker and are slow")] [Trait("scenario", "basicservices")] [InlineData(TestResourceNames.postgres)] [InlineData(TestResourceNames.efnpgsql)] @@ -42,6 +44,7 @@ public Task VerifyComponentWorks(TestResourceNames resourceName) }); [Fact] + [OuterloopTest("EndToEnd tests require Docker and are slow")] [Trait("scenario", "basicservices")] public Task VerifyHealthyOnIntegrationServiceA() => RunTestAsync(async (cancellationToken) =>