diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7c97bf1892..8cc6e62358 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -124,6 +124,19 @@ stages: - script: dotnet test -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig)\TestStep.binlog --no-progress --output detailed -p:UsingDotNetTest=true name: Test displayName: Test + condition: and(succeeded(), eq(variables._BuildConfig, 'Debug')) + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 + + # Integration tests are redundant in Release—they spawn child processes that already cover + # both Debug and Release configurations. Use --test-modules to run only unit tests. + # Use *.exe to cover both net4x (native exe) and net8+/net9+ (apphost exe) in a single glob. + - script: dotnet test --no-build --test-modules "artifacts/bin/*UnitTests*/$(_BuildConfig)/**/*UnitTests.exe" --results-directory $(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig) --no-progress --output detailed + name: TestRelease + displayName: Test (unit tests only) + condition: and(succeeded(), eq(variables._BuildConfig, 'Release')) env: DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages @@ -143,14 +156,14 @@ stages: Contents: | **/*.binlog TargetFolder: '$(Build.ArtifactStagingDirectory)/binlogs' - condition: always() + condition: and(always(), eq(variables._BuildConfig, 'Debug')) - task: PublishBuildArtifacts@1 displayName: 'Publish integration tests binlogs' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/binlogs' ArtifactName: Integration_Tests_Windows_Binlogs_$(_BuildConfig) - condition: always() + condition: and(always(), eq(variables._BuildConfig, 'Debug')) # Upload code coverage to codecov.io - script: dotnet msbuild -restore @@ -195,6 +208,18 @@ stages: - script: dotnet test --solution NonWindowsTests.slnf -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)/artifacts/TestResults/$(_BuildConfig)/TestStep.binlog --no-progress --output detailed -p:UsingDotNetTest=true name: Test displayName: Test + condition: and(succeeded(), eq(variables._BuildConfig, 'Debug')) + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 + + # Integration tests are redundant in Release—they spawn child processes that already cover + # both Debug and Release configurations. Use --test-modules to run only unit tests. + - script: dotnet test --no-build --test-modules "artifacts/bin/*UnitTests*/$(_BuildConfig)/**/*UnitTests.dll" --results-directory $(BUILD.SOURCESDIRECTORY)/artifacts/TestResults/$(_BuildConfig) --no-progress --output detailed + name: TestRelease + displayName: Test (unit tests only) + condition: and(succeeded(), eq(variables._BuildConfig, 'Release')) env: DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages @@ -214,14 +239,14 @@ stages: Contents: | **/*.binlog TargetFolder: '$(Build.ArtifactStagingDirectory)/binlogs' - condition: always() + condition: and(always(), eq(variables._BuildConfig, 'Debug')) - task: PublishBuildArtifacts@1 displayName: 'Publish integration tests binlogs' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/binlogs' ArtifactName: Integration_Tests_Linux_Binlogs_$(_BuildConfig) - condition: always() + condition: and(always(), eq(variables._BuildConfig, 'Debug')) - job: MacOS timeoutInMinutes: 90 @@ -252,6 +277,18 @@ stages: - script: dotnet test --solution NonWindowsTests.slnf -c $(_BuildConfig) --no-build -bl:$(BUILD.SOURCESDIRECTORY)/artifacts/TestResults/$(_BuildConfig)/TestStep.binlog --no-progress --output detailed -p:UsingDotNetTest=true name: Test displayName: Test + condition: and(succeeded(), eq(variables._BuildConfig, 'Debug')) + env: + DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet + NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages + DOTNET_CLI_CONTEXT_VERBOSE: 1 + + # Integration tests are redundant in Release—they spawn child processes that already cover + # both Debug and Release configurations. Use --test-modules to run only unit tests. + - script: dotnet test --no-build --test-modules "artifacts/bin/*UnitTests*/$(_BuildConfig)/**/*UnitTests.dll" --results-directory $(BUILD.SOURCESDIRECTORY)/artifacts/TestResults/$(_BuildConfig) --no-progress --output detailed + name: TestRelease + displayName: Test (unit tests only) + condition: and(succeeded(), eq(variables._BuildConfig, 'Release')) env: DOTNET_ROOT: $(Build.SourcesDirectory)/.dotnet NUGET_PACKAGES: $(Build.SourcesDirectory)/.packages @@ -271,14 +308,14 @@ stages: Contents: | **/*.binlog TargetFolder: '$(Build.ArtifactStagingDirectory)/binlogs' - condition: always() + condition: and(always(), eq(variables._BuildConfig, 'Debug')) - task: PublishBuildArtifacts@1 displayName: 'Publish integration tests binlogs' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/binlogs' ArtifactName: Integration_Tests_MacOS_Binlogs_$(_BuildConfig) - condition: always() + condition: and(always(), eq(variables._BuildConfig, 'Debug')) - template: /eng/common/templates/jobs/jobs.yml parameters: