Skip to content

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038

Merged
Evangelink merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Evangelink merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

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

…gister Ctrf/JUnit providers in AOT test host

Two distinct test failures on main (build 2997792):

1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.

2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 11, 2026 11:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
File Description
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs Registers JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnf Ensures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

@Evangelink Evangelink left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

# Dimension Status Notes
1 Algorithmic Correctness ✅ PASS Both root causes are correctly identified and addressed
2 Threading & Concurrency ✅ N/A No shared mutable state involved
3 Public API Surface & Versioning ✅ N/A No new public API introduced
4 Backward Compatibility ✅ PASS Purely additive changes
5 Test Coverage & Quality ✅ PASS Infrastructure fix; validated by CI passing after the change
6 Error Handling & Resilience ✅ N/A Registration calls are fire-and-forget by design
7 Performance & Memory ✅ N/A No performance-sensitive code paths touched
8 Security ✅ N/A No security surface affected
9 Code Style & Conventions ✅ PASS Provider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10 Localization ✅ N/A No user-facing strings
11 Naming ✅ N/A No new identifiers
12 Documentation ✅ N/A No public API; no misleading comments
13 Scope & Focus ✅ PASS Two closely related CI-fix items; appropriate to batch
14 Cross-TFM Correctness ✅ PASS AOT reflection project targets net8.0 only; change is TFM-agnostic
15 Dependency Management ✅ PASS OpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16 Build & CI Integration ✅ PASS Alphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17 IPC Contract Stability ✅ N/A No wire-format changes
18 Resource Management ✅ N/A No IDisposable / stream usage
19 Test Infrastructure ✅ PASS AOT reflection host now honours every --report-* flag the pipeline passes
20 Configuration & Extensibility ✅ N/A Standard MTP provider registration pattern
21 Pattern Consistency ✅ PASS Registration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22 Simplicity ✅ PASS Minimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
Member Author

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink Evangelink enabled auto-merge (squash) June 11, 2026 13:04
@Evangelink Evangelink merged commit c062a59 into main Jun 11, 2026
42 checks passed
@Evangelink Evangelink deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants