Skip to content

Add target framework to default TRX file name - #15565

Merged
Jakub Jareš (nohwnd) merged 5 commits into
microsoft:mainfrom
nohwnd:fix-trx-tfm
Mar 26, 2026
Merged

Add target framework to default TRX file name#15565
Jakub Jareš (nohwnd) merged 5 commits into
microsoft:mainfrom
nohwnd:fix-trx-tfm

Conversation

@nohwnd

Copy link
Copy Markdown
Member

When running multi-TFM tests, TRX files were overwritten because the default filename did not include the target framework. The TFM was already appended when using the LogFilePrefix parameter, but not for the default auto-generated filename.

This change appends the framework short name (e.g. net10.0) to the default TRX filename, matching the existing behavior for LogFilePrefix.

Before: username_MACHINE_2026-03-24_07_51_08.trx
After: username_MACHINE_2026-03-24_07_51_08_net10.0.trx

Closes #15506

Copilot AI review requested due to automatic review settings March 24, 2026 08:05

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

Prevents TRX files from being overwritten in multi-target (multi-TFM) test runs by including the target framework in the default, auto-generated TRX filename (matching the existing LogFilePrefix behavior).

Changes:

  • Append target framework short name (e.g., net10.0) to the default TRX file base name when TargetFramework is available.
  • Add unit tests to validate default TRX naming with and without a target framework.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs Adds coverage ensuring default TRX filenames include TFM (when provided) and still work without it.
src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs Updates default TRX filename generation to append the framework short name when present.

Comment thread src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs
Comment thread src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs
Comment thread test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs Outdated

@Evangelink Amaury Levé (Evangelink) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM. Small, well-scoped change that correctly aligns the default TRX filename behavior with the existing LogFilePrefix path. The consistency table tells the story:

Path TFM before PR TFM after PR
LogFileName (explicit) n/a n/a
LogFilePrefix
Default (auto-generated)

Left a couple of optional nits (whitespace guard, fallback test) but nothing blocking.

Comment thread src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs
Comment thread test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs Outdated
Comment thread src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs
Copilot AI review requested due to automatic review settings March 24, 2026 12:26

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

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs:3

  • Assert.Contains / Assert.EndsWith are not MSTest string assertions in many MSTest versions (and can even bind to the wrong overloads, e.g., treating the string as IEnumerable). To make these tests robust and unambiguous, use StringAssert.Contains(...) / StringAssert.EndsWith(...) (or Assert.IsTrue(fileName.Contains(...)) / Assert.IsTrue(fileName.EndsWith(...))) with the same messages.

Jakub Jareš (nohwnd) and others added 3 commits March 24, 2026 17:05
When running multi-TFM tests, TRX files were overwritten because the
default filename did not include the target framework. The TFM was
already appended when using the LogFilePrefix parameter, but not for
the default auto-generated filename.

This change appends the framework short name (e.g. net10.0) to the
default TRX filename, matching the existing behavior for LogFilePrefix.

Before: username_MACHINE_2026-03-24_07_51_08.trx
After:  username_MACHINE_2026-03-24_07_51_08_net10.0.trx

Closes microsoft#15506

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Guard against empty/whitespace framework with IsNullOrWhiteSpace
- Add test for custom framework string fallback (SomeCustomFramework)

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

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

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment on lines +662 to +666
public void DefaultTrxFileNameShouldUseRawStringWhenFrameworkCannotBeParsed()
{
_parameters.Remove(TrxLoggerConstants.LogFileNameKey);
_parameters[DefaultLoggerParameterNames.TargetFramework] = "SomeCustomFramework";
_testableTrxLogger.Initialize(_events.Object, _parameters);

Copilot AI Mar 24, 2026

Copy link

Choose a reason for hiding this comment

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

New behavior uses the raw TargetFramework string when parsing fails, but there’s no test coverage for raw values containing characters that are invalid in filenames or path separators (e.g., Some/Framework, ..\\x, net10.0:custom). Adding a unit test for sanitization (or expected failure behavior) would prevent regressions and validate safe filename handling.

Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 25, 2026 21:44

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

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

[TestMethod]
public void DefaultTrxFileNameShouldWorkWithoutFramework()
{
_parameters.Remove(TrxLoggerConstants.LogFileNameKey);

Copilot AI Mar 25, 2026

Copy link

Choose a reason for hiding this comment

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

This test is intended to verify behavior when no framework is available, but it doesn’t explicitly clear DefaultLoggerParameterNames.TargetFramework. If _parameters is reused across tests (or pre-populated in setup), the test may not actually exercise the no-framework path. Consider removing DefaultLoggerParameterNames.TargetFramework (and/or asserting the filename does NOT contain a _<tfm> suffix) to make the scenario deterministic.

Suggested change
_parameters.Remove(TrxLoggerConstants.LogFileNameKey);
_parameters.Remove(TrxLoggerConstants.LogFileNameKey);
_parameters.Remove(DefaultLoggerParameterNames.TargetFramework);

Copilot uses AI. Check for mistakes.
@nohwnd
Jakub Jareš (nohwnd) merged commit 029ccca into microsoft:main Mar 26, 2026
2 of 4 checks passed
João Raimundo (Raimundo82) pushed a commit to Raimundo82/pessoas-integracao that referenced this pull request May 27, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) | `18.5.1` → `18.6.0` | ![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.NET.Test.Sdk/18.6.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.NET.Test.Sdk/18.5.1/18.6.0?slim=true) |

---

### Release Notes

<details>
<summary>microsoft/vstest (Microsoft.NET.Test.Sdk)</summary>

### [`v18.6.0`](https://github.com/microsoft/vstest/releases/tag/v18.6.0)

#### What's Changed

- Revert removal of Video Recorder by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15336](microsoft/vstest#15336)
- Speed up blame by filtering non-.NET processes from dump collection by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15518](microsoft/vstest#15518)
- Add README.md to NuGet packages by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15550](microsoft/vstest#15550)
- Report child process info on connection timeout by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15603](microsoft/vstest#15603)

##### Changes to tests and infra

- Brand as 18.6 by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15423](microsoft/vstest#15423)
- Upgrading code coverage version to 18.5.1, by [@&#8203;fhnaseer](https://github.com/fhnaseer) in [#&#8203;15422](microsoft/vstest#15422)
- Updating System.Collections.Immutable to 9.0.11 by [@&#8203;MSLukeWest](https://github.com/MSLukeWest) in [#&#8203;15425](microsoft/vstest#15425)
- Fix attachVS when used for debugging integration tests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15451](microsoft/vstest#15451)
- Replace dotnet.config, with global.json by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15449](microsoft/vstest#15449)
- Document debugging integration tests with AttachVS by [@&#8203;Copilot](https://github.com/Copilot) in [#&#8203;15452](microsoft/vstest#15452)
- Fix stack overflow tests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15461](microsoft/vstest#15461)
- Make TestAssets.sln buildable locally by [@&#8203;Youssef1313](https://github.com/Youssef1313) in [#&#8203;15466](microsoft/vstest#15466)
- Try filtering out tests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15463](microsoft/vstest#15463)
- Build just once when tfms run in parallel by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15465](microsoft/vstest#15465)
- Review simplify compatibility sources, deduplicate tests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15472](microsoft/vstest#15472)
- Cleanup dead TRX code by [@&#8203;Youssef1313](https://github.com/Youssef1313) in [#&#8203;15474](microsoft/vstest#15474)
- Update .NET runtimes to 8.0.25, 9.0.14, and 10.0.4 by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15481](microsoft/vstest#15481)
- Compat matrix checker by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15480](microsoft/vstest#15480)
- Add trx analysis skill by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15486](microsoft/vstest#15486)
- Split integration tests to single tfm and multi tfm project by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15484](microsoft/vstest#15484)
- Update matrix by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15477](microsoft/vstest#15477)
- Break infinite restore loop in VS by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15503](microsoft/vstest#15503)
- Use global package cache for build, and local for running integration tests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15500](microsoft/vstest#15500)
- Update contributing by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15505](microsoft/vstest#15505)
- Reduce test wall-clock time by increasing minThreads by [@&#8203;drognanar](https://github.com/drognanar) in [#&#8203;15502](microsoft/vstest#15502)
- Indicator flakiness by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15513](microsoft/vstest#15513)
- Fix ci build by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15515](microsoft/vstest#15515)
- Fix thread safety issues by [@&#8203;Evangelink](https://github.com/Evangelink) in [#&#8203;15512](microsoft/vstest#15512)
- Optimize DotnetSDKSimulation\_PostProcessing test (163s → 61s) by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15516](microsoft/vstest#15516)
- Build isolated test assets for single TFM instead of 7 by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15517](microsoft/vstest#15517)
- Remove unused dependencies from Library.IntegrationTests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15527](microsoft/vstest#15527)
- Remove printing \_attachments content to console by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15520](microsoft/vstest#15520)
- Add Linux/macOS test filtering guide to CONTRIBUTING.md by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15521](microsoft/vstest#15521)
- Change integration test parallelization from ClassLevel to MethodLevel by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15526](microsoft/vstest#15526)
- Unify target framework checks with IsNetFrameworkTarget/IsNetTarget by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15523](microsoft/vstest#15523)
- Add unattended work instructions to copilot-instructions.md by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15531](microsoft/vstest#15531)
- Reduce code style rule severity from warning to suggestion by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15522](microsoft/vstest#15522)
- Remove Debug/Release line number branching from tests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15519](microsoft/vstest#15519)
- Revise unattended work instructions in copilot-instructions.md by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15532](microsoft/vstest#15532)
- Improve CompatibilityRowsBuilder error message with diagnostic details by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15529](microsoft/vstest#15529)
- docs: add git worktree and upstream sync workflow to copilot-instructions.md by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15538](microsoft/vstest#15538)
- Add VSIX runner to smoke tests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15541](microsoft/vstest#15541)
- Remove deprecated WebTest and TMI test methods by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15525](microsoft/vstest#15525)
- Fix compatibility test failures for legacy vstest.console and MSTest adapter by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15534](microsoft/vstest#15534)
- Convert TestPlatform.sln to slnx format by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15551](microsoft/vstest#15551)
- Convert test/TestAssets .sln files to .slnx format by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15557](microsoft/vstest#15557)
- Enable parallelization for blame data collector tests by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15552](microsoft/vstest#15552)
- Fix CI failure when GeneratedTestAssets directory doesn't exist by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15556](microsoft/vstest#15556)
- Set DOTNET\_ROOT in test.sh for local Linux usage by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15559](microsoft/vstest#15559)
- Use MSTest recommended analyzers by [@&#8203;Evangelink](https://github.com/Evangelink) in [#&#8203;15539](microsoft/vstest#15539)
- Document semicolon handling in RunSettings test parameters by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15561](microsoft/vstest#15561)
- Enable CA1067 analyzer and fix violations by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15560](microsoft/vstest#15560)
- Fix HTML logger parallel file collision with atomic file creation by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15562](microsoft/vstest#15562)
- Deduplicate package extraction between verify-nupkgs and IntegrationTestBuild by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15554](microsoft/vstest#15554)
- Fix MSTEST0046: use Assert.MatchesRegex instead of StringAssert.Matches by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15575](microsoft/vstest#15575)
- Attach diagnostic logs to acceptance test runs by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15572](microsoft/vstest#15572)
- Deprecate EnableShutdownAfterTestRun which is no-op by [@&#8203;Youssef1313](https://github.com/Youssef1313) in [#&#8203;15576](microsoft/vstest#15576)
- Skip VideoRecorder test on CI due to access denied errors by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15587](microsoft/vstest#15587)
- Fix integration test build collision with mutex + EventWaitHandle by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15568](microsoft/vstest#15568)
- Reduce blame test flakiness: increase hang dump timeout to 10s by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15590](microsoft/vstest#15590)
- Fix concurrent modification in MetricsCollection by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15581](microsoft/vstest#15581)
- Fix PassingNoArguments test: disable --diag to preserve help output by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15583](microsoft/vstest#15583)
- perf: fix dictionary double-lookups, Collection.Contains, and LINQ allocations by [@&#8203;Evangelink](https://github.com/Evangelink) in [#&#8203;15533](microsoft/vstest#15533)
- Replace VSSDK-sourced DLLs with proper package references by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15567](microsoft/vstest#15567)
- Add target framework to default TRX file name by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15565](microsoft/vstest#15565)
- Update post-build template parameters by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15591](microsoft/vstest#15591)
- Fix path for post-build template and adjust validation by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15592](microsoft/vstest#15592)
- Add azure-pipelines-official.yml to pipeline files by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15594](microsoft/vstest#15594)
- Update comment formatting for signing validation by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15597](microsoft/vstest#15597)
- Fix enable-auto-merge for maestro by [@&#8203;Youssef1313](https://github.com/Youssef1313) in [#&#8203;15595](microsoft/vstest#15595)
- Auto-approve maestro PRs by [@&#8203;Youssef1313](https://github.com/Youssef1313) in [#&#8203;15598](microsoft/vstest#15598)
- Update enable-auto-merge to squash by [@&#8203;Youssef1313](https://github.com/Youssef1313) in [#&#8203;15602](microsoft/vstest#15602)
- Update enable-auto-merge.yml for the correct permissions by [@&#8203;Youssef1313](https://github.com/Youssef1313) in [#&#8203;15606](microsoft/vstest#15606)
- Add 365 regression tests for untested bug fixes by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15615](microsoft/vstest#15615)
- Fix typos and add comments to empty catch blocks by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15609](microsoft/vstest#15609)
- Fix flaky EventLogCollector test: ensure deterministic event log entries by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15607](microsoft/vstest#15607)
- Mark PathConverter tests as Windows-only by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15617](microsoft/vstest#15617)
- Fix HangDumpOnTimeout flakiness and ignore VideoRecorder test by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15616](microsoft/vstest#15616)
- Add copilot-setup-steps.yml by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15604](microsoft/vstest#15604)
- Add CreateNoNewWindow RunConfiguration setting by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15585](microsoft/vstest#15585)
- Add preview packages documentation by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15628](microsoft/vstest#15628)
- Cleanup filter implementation by [@&#8203;Youssef1313](https://github.com/Youssef1313) in [#&#8203;15629](microsoft/vstest#15629)
- Fix SCI binding failure in DTA hosts (rel/18.6) by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15722](microsoft/vstest#15722)
- Remove DiagnosticSource binding redirect (rel/18.6) by [@&#8203;nohwnd](https://github.com/nohwnd) in [#&#8203;15776](microsoft/vstest#15776)

**Full Changelog**: <microsoft/vstest@v18.5.1...v18.6.0>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Lisbon)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNjguNiIsInVwZGF0ZWRJblZlciI6IjQzLjE2OC42IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbInJlbm92YXRlYm90Il19-->

Reviewed-on: https://devops-01.marinha.pt/marinha-si/pessoas-integracao/pulls/603
Reviewed-by: João Raimundo <pacheco.raimundo@marinha.pt>
Co-authored-by: Renovate Bot <renovate-bot@marinha.pt>
Co-committed-by: Renovate Bot <renovate-bot@marinha.pt>
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.

add tfm to the default format of trx file

3 participants