Skip to content

[release/11.0.1xx-preview7] Add MTP artifact post-processing to dotnet test - #55453

Merged
Evangelink merged 2 commits into
release/11.0.1xx-preview7from
backport/pr-55419-to-release/11.0.1xx-preview7
Jul 24, 2026
Merged

[release/11.0.1xx-preview7] Add MTP artifact post-processing to dotnet test#55453
Evangelink merged 2 commits into
release/11.0.1xx-preview7from
backport/pr-55419-to-release/11.0.1xx-preview7

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Backport of #55419 to release/11.0.1xx-preview7

/cc @Evangelink

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a56f3957-e35c-47df-bad9-c5f342ee302a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a56f3957-e35c-47df-bad9-c5f342ee302a
@github-actions github-actions Bot added the backport PR that has been backported to a servicing branch label Jul 24, 2026
@github-actions
github-actions Bot requested review from a team as code owners July 24, 2026 11:34
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
2 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@Evangelink
Evangelink enabled auto-merge July 24, 2026 15:46
@Evangelink
Evangelink merged commit 5e5d579 into release/11.0.1xx-preview7 Jul 24, 2026
24 checks passed
@Evangelink
Evangelink deleted the backport/pr-55419-to-release/11.0.1xx-preview7 branch July 24, 2026 15:55
@dotnet-milestone-bot dotnet-milestone-bot Bot added this to the 11.0-preview7 milestone Jul 24, 2026
Evangelink added a commit to microsoft/testfx that referenced this pull request Jul 28, 2026
…orts

Bumps global.json (tools.dotnet + sdk.version) to 11.0.100-preview.7.26376.106.
That build carries the SDK-side artifact post-processing orchestration
(dotnet/sdk#55419, backported to release/11.0.1xx-preview7 as dotnet/sdk#55453),
which flowed into the VMR via '[release/11.0.1xx-preview7] Source code updates
from dotnet/sdk' (dotnet/dotnet#7944), so RFC 018 phase 2 now actually runs for
this repo's multi-module 'dotnet test' invocations.

Enabling it surfaced a problem that is not specific to this repo. The SDK points
the processor's output directory at the run's --results-directory, which already
holds the per-module reports the merge consumed, so TrxArtifactPostProcessor was
writing the merged report as a sibling of its own inputs. Collecting a results
directory with a non-recursive '*.trx' glob is near-universal (Arcade's 'Publish
TRX Test Results' step, the PublishTestResults@2 defaults, typical
ReportGenerator setups), and every such consumer would ingest both the merged
report and the reports it summarizes, double-counting every test.

TrxArtifactPostProcessor now writes to '<outputDirectory>/merged/', which keeps
the merged report out of those globs by construction instead of asking each
consumer to special-case the merged file name.

Nesting also keeps the report co-located with its attachments, which a
CI-side move could not. MergeToFileAsync derives the attachment deployment root
from the output path and records it in the TRX as a relative runDeploymentRoot,
so the report and its attachment tree have to stay in the same directory for
those references to resolve; writing the report into the subdirectory moves both
together. Adds a regression test covering that, and asserting nothing of the
merged report is left in the results-directory root.

Verified end to end on this SDK: two MTP modules (23 + 2 tests) run through
'dotnet test' with a shared --results-directory produce
'merged/merged-<runId>.trx' with total=25, reported back over the existing pipe
as an out-of-process file artifact, with the per-module reports left intact at
the root and nothing else matching a non-recursive '*.trx' glob there.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4a6c06b2-7dcb-407e-bb9e-ca0c8302fa93
Evangelink added a commit to microsoft/testfx that referenced this pull request Jul 28, 2026
…orts

Bumps global.json (tools.dotnet + sdk.version) to 11.0.100-preview.7.26376.106.
That build carries the SDK-side artifact post-processing orchestration
(dotnet/sdk#55419, backported to release/11.0.1xx-preview7 as dotnet/sdk#55453),
which flowed into the VMR via '[release/11.0.1xx-preview7] Source code updates
from dotnet/sdk' (dotnet/dotnet#7944), so RFC 018 phase 2 now actually runs for
this repo's multi-module 'dotnet test' invocations.

Enabling it surfaced a problem that is not specific to this repo. The SDK points
the processor's output directory at the run's --results-directory, which already
holds the per-module reports the merge consumed, so TrxArtifactPostProcessor was
writing the merged report as a sibling of its own inputs. Collecting a results
directory with a non-recursive '*.trx' glob is near-universal (Arcade's 'Publish
TRX Test Results' step, the PublishTestResults@2 defaults, typical
ReportGenerator setups), and every such consumer would ingest both the merged
report and the reports it summarizes, double-counting every test.

TrxArtifactPostProcessor now writes to '<outputDirectory>/merged/', which keeps
the merged report out of those globs by construction instead of asking each
consumer to special-case the merged file name.

Nesting also keeps the report co-located with its attachments, which a
CI-side move could not. MergeToFileAsync derives the attachment deployment root
from the output path and records it in the TRX as a relative runDeploymentRoot,
so the report and its attachment tree have to stay in the same directory for
those references to resolve; writing the report into the subdirectory moves both
together. Adds a regression test covering that, and asserting nothing of the
merged report is left in the results-directory root.

Verified end to end on this SDK: two MTP modules (23 + 2 tests) run through
'dotnet test' with a shared --results-directory produce
'merged/merged-<runId>.trx' with total=25, reported back over the existing pipe
as an out-of-process file artifact, with the per-module reports left intact at
the root and nothing else matching a non-recursive '*.trx' glob there.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4a6c06b2-7dcb-407e-bb9e-ca0c8302fa93
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Approved to merge backport PR that has been backported to a servicing branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants