You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Enable affected-test selection in the Windows Release CI lane using Microsoft.Testing.Extensions.AffectedTests18.12.0-preview.26473.3 and its provider-specific Azure DevOps storage package.
The dependency is version-aligned with Microsoft.Testing.Extensions.CodeCoverage. The repository's hand-authored MTP entry points explicitly register the affected-tests hook for every TFM, including .NET Framework through the package's netstandard2.0 assets.
Storage design
global.json selects azureDevOpsArtifact storage for public pipeline definition 209.
Trusted main builds publish versioned per-module shards to the TestFx_AffectedTestsMaps build artifact.
PR builds query successful definition-209 builds and use the newest commit-valid artifact.
Pipeline identity and credentials are supplied through CTS_* environment variables and the scoped System.AccessToken; no secret is stored in global.json.
Missing, stale, incompatible, or inaccessible artifacts conservatively run all tests.
CI behavior
Trusted main Windows Release runs --collect-test-map.
Windows Release pull requests run --affected-tests across all repository test TFMs.
Full-test fallback remains for extension/process failures, scheduled runs, and manual runs.
Selected-test partial coverage is not published as the repository coverage report.
Release build succeeds with 0 errors using the repo-local toolchain and binary logging.
Affected-test rollout validation passes.
18.12.0-preview.26473.3 package contents include matching netstandard2.0 and net8.0 assets for AffectedTests, CodeCoverage, and the Azure DevOps provider.
A rebuilt net48 test application contains the new package assets and exposes both --collect-test-map and --affected-tests.
net8 test applications expose both affected-test commands.
For a multi-targeted project, the outer evaluation has no TargetFramework and its identifier is not .NETCoreApp, so AffectedTestsCoreOnly=true sets both application flags to false before MTP can dispatch to the inner builds. The collect, selected-test, and fallback commands consequently omit every multi-targeted project's net8/net9 tests. Apply this filter only to inner evaluations with a concrete target framework.
Final test-triage resolution — Azure Pipelines build 1610624
This is the final resolution for the completed build (analysis: full), superseding any earlier preliminary comment for this build.
Summary
Affected leg:Windows Release → Test affected changes (the --affected-tests selection step this PR introduces).
Scope: 186 failed CTRF/JUnit records (same count as the prior build 1610333 analysis), covering the same ~90 distinct test methods/TFM combinations across Microsoft.Testing.Platform.Acceptance.IntegrationTests, MSTest.Acceptance.IntegrationTests, plus 3 records (net462/net8.0/net9.0) for DeadlineStateIsIsolatedBetweenServerRequests in Microsoft.Testing.Platform.UnitTests.
Signature (unchanged): 174/186 fail with expected: 8, actual: 0 from AssertExitCodeIs / Assert.AreEqual(exitCode, testHostResult.ExitCode), with captured test-host stdout showing "Test run summary: Zero tests ran" (total: 0) even though the acceptance test expects a specific non-zero outcome. The remaining 12 (FailedThreshold_* controller/coverage-threshold tests) show the related expected: 0, actual: 14 propagation pattern, each recorded across 2 retry attempts with no fail-then-pass recovery (both attempts fail identically — not flakiness).
DeadlineStateIsIsolatedBetweenServerRequests: confirmed pre-existing/unrelated — history.json shows 18/18 prior passing samples across 8 recent main builds, so this is not a regression tied to the affected-tests change; likely incidental noise in this run (single occurrence, no stable new signature isolated in this evidence).
Root cause assessment (confidence: high, unchanged from prior analysis)
This PR's own newly-added builder.AddAffectedTestsProvider() hook in hand-authored MTP Program.cs entry points is inherited by every generated acceptance-test host built at test time. The affected-tests filter (Microsoft.Testing.Extensions.AffectedTests18.12.0-preview.26473.3, ADO artifact storage) is therefore applied inside child test-host processes the acceptance tests spawn, not just the outer dotnet test invocation, causing over-filtering / zero-test discovery in those nested hosts. The commit history since build 1610333 (Prevent affected-test state from leaking to child hosts, Use affected-tests builder extension, Normalize affected-test registrations) shows active work on exactly this leak, but the current head (039bc09d) still reproduces the identical 186-failure signature, so the fix is not yet effective (or not yet covering the Windows Release acceptance-test lane).
history.json remains incomplete (artifact-download-failed, download-budget-exhausted); combined with PR history being limited to failures/retries, I cannot fully re-confirm recurrence depth beyond the DeadlineState check above, but the 8 sampled main builds show 0 occurrences of the expected: 8, actual: 0 signature, consistent with it being introduced/still present only on this PR's branch.
Disposition
Same as the prior resolution for this PR: this is a one-off failure tied only to the current pull request's own newly introduced CI change, with no durable multi-build recurrence outside this PR. It does not meet the persistent-failure, flaky, crash/hang, or slowness issue thresholds. No issue is warranted. No matching open or closed issue was found for this signature.
Next concrete step: the affected-tests-leak mitigation commits on this branch (6017436d, 9d378afb) have not yet eliminated the "Zero tests ran" pattern in the Windows Release acceptance-test lane — verify the child-host suppression (e.g. stripping DOTNET_CLI_ENABLE_AFFECTED_TESTS/related command-line args, or gating AddAffectedTestsProvider()) actually reaches the generated test assets under Microsoft.Testing.Platform.Acceptance.IntegrationTests before re-running CI.
🤖 Automated content by GitHub Copilot. Generated by the Pipeline Test Triage workflow. · copilot · auto · 84.2 AIC · ⌖ 4.86 AIC · ⊞ 8.9K
Only one test method's source changed in this PR: ServerTests.DeadlineStateIsIsolatedBetweenServerRequests (test/UnitTests/Microsoft.Testing.Platform.UnitTests/ServerMode/ServerTests.cs). All other diffs in the PR touch Program.cs entry points, pipeline/MSBuild configuration, docs, and a WellKnownEnvironmentVariables allow-list — none of which are test methods.
Grade
Test
Mutation
Notes
How to improve
A (90–100)
mod ServerTests. DeadlineStateIsIsolatedBetweenServerRequests
2/2 killed
Correctly re-targets assertions to GetProcessExitCodeWithoutIgnore() so the new ignore-exit-code policy (added elsewhere in this PR) doesn't mask the deadline-isolation verdict being tested; both isolated-state equality assertions still fail on the relevant mutations.
—
The diff is a small, surgical adaptation: it casts the exit-code service to the concrete TestApplicationResult so the test can call the internal GetProcessExitCodeWithoutIgnore() instead of the public GetProcessExitCode(), which now applies the new --ignore-exit-code/TESTINGPLATFORM_EXITCODE_IGNORE policy from ExitCodeIgnorePolicy. Since the test asserts per-request deadline-state isolation (not the ignore-policy behavior), bypassing the ignore filter keeps the assertions meaningful and correctly scoped. No anti-patterns, assertion weakening, or structural regressions were introduced by this change.
This advisory comment was generated automatically. Grades are heuristic and informational — they do not block merging. Suggestions on the Files changed tab can be applied with one click. Re-run with /review-tests.
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
github.com
To allow these domains, add them to the network.allowed list in your workflow frontmatter:
🤖 Automated content by GitHub Copilot. Generated by the Test Reviewer on PR (on open / sync) workflow. · copilot · auto · 135.1 AIC · ⌖ 9.74 AIC · ⊞ 17.9K · ◷
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Enable affected-test selection in the Windows Release CI lane using
Microsoft.Testing.Extensions.AffectedTests18.12.0-preview.26473.3and its provider-specific Azure DevOps storage package.The dependency is version-aligned with
Microsoft.Testing.Extensions.CodeCoverage. The repository's hand-authored MTP entry points explicitly register the affected-tests hook for every TFM, including .NET Framework through the package'snetstandard2.0assets.Storage design
global.jsonselectsazureDevOpsArtifactstorage for public pipeline definition 209.TestFx_AffectedTestsMapsbuild artifact.CTS_*environment variables and the scopedSystem.AccessToken; no secret is stored inglobal.json.CI behavior
mainWindows Release runs--collect-test-map.--affected-testsacross all repository test TFMs.eng/validate-affected-tests.ps1validates package alignment, hook registration, Azure DevOps storage configuration, pipeline identity, all-TFM command wiring, and fallbacks.Validation
18.12.0-preview.26473.3package contents include matchingnetstandard2.0andnet8.0assets for AffectedTests, CodeCoverage, and the Azure DevOps provider.--collect-test-mapand--affected-tests.git diff --checkpass.