Skip to content

Add new diagnostic env var names matching renamed CLI options#8388

Merged
Evangelink merged 3 commits into
mainfrom
dev/amauryleve/diagnostic-env-var-rename
May 20, 2026
Merged

Add new diagnostic env var names matching renamed CLI options#8388
Evangelink merged 3 commits into
mainfrom
dev/amauryleve/diagnostic-env-var-rename

Conversation

@Evangelink
Copy link
Copy Markdown
Member

Fixes #7159.

The CLI options were renamed in #6165:

  • --diagnostic-output-fileprefix → --diagnostic-file-prefix
  • --diagnostic-filelogger-synchronouswrite → --diagnostic-synchronous-write

but the matching environment variables kept their old names, so the option and env var names are no longer consistent:

  • TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX
  • TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE

Renaming the env vars outright would be a breaking change, so this PR instead adds new env var names that align with the new CLI option names, while keeping the legacy names working.

Changes

  • EnvironmentVariableConstants.cs: added TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX and TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE. Documented the legacy constants as deprecated (kept for back-compat, to be removed in the next breaking-change version).
  • TestApplication.cs: when reading the diagnostic file prefix / synchronous write env vars, the new name is read first and the legacy name is used as a fallback. This means existing users on the legacy names are not affected, and the new names take precedence when both are set.
  • DiagnosticTests.cs: kept the existing acceptance tests covering the legacy names so we don't lose back-compat coverage, and added three new tests:
    • Diag_EnableWithEnvironmentVariables_CustomPrefix_NewName_Succeeded
    • Diag_EnableWithEnvironmentVariables_SynchronousWrite_NewName_Succeeded
    • Diag_EnableWithEnvironmentVariables_CustomPrefix_NewNameTakesPrecedence

No public API surface area was added — EnvironmentVariableConstants is internal (and is source-linked into the acceptance test project, so the new constants are automatically visible to tests).

The documentation update referenced in the issue lives in dotnet/docs and is tracked separately per the issue comment.

The CLI options `--diagnostic-output-fileprefix` and `--diagnostic-filelogger-synchronouswrite` were renamed to `--diagnostic-file-prefix` and `--diagnostic-synchronous-write`, but the corresponding env vars kept their old names. This adds new env var names that align with the new CLI option names, while keeping the legacy names working for backward compatibility. The new names take precedence; legacy names are documented as deprecated and can be removed in the next breaking-change version.

Fixes #7159

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 20, 2026 13:34
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds new environment variable names for diagnostic settings to match the renamed CLI options, while preserving the legacy env var names for backward compatibility.

Changes:

  • Introduces TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX and TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE constants (legacy constants noted as deprecated).
  • Updates diagnostic env var reading logic to prefer the new names and fall back to legacy names.
  • Adds acceptance tests verifying the new env var names and precedence behavior.
Show a summary per file
File Description
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.cs Adds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.cs Adds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.cs Prefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

Comment thread src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.cs
Comment thread src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.cs Outdated
When the legacy `TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX` or `TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE` environment variables are detected, write a localized warning to the console pointing users at the new `TESTINGPLATFORM_DIAGNOSTIC_FILE_PREFIX` / `TESTINGPLATFORM_DIAGNOSTIC_SYNCHRONOUS_WRITE` names. The legacy names still work; the warning fires whenever they are set (including when overridden by the new name) so callers always know to migrate.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@Evangelink
Copy link
Copy Markdown
Member Author

Added a follow-up commit that emits a deprecation warning when the legacy diagnostic env vars are set.

  • New localized resource DeprecatedEnvironmentVariableWarning in PlatformResources.resx (XLF files regenerated via UpdateXlf):

    Warning: The environment variable '{0}' is deprecated and will be removed in a future major version. Use '{1}' instead.

  • TestApplication.CreateFileLoggerIfDiagnosticIsEnabled writes the warning to the existing SystemConsole whenever TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX or TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE is set — even when the new name is also set and wins. This guarantees migration signal regardless of precedence.
  • Updated the acceptance tests:
    • Legacy-name tests assert the warning is emitted.
    • New-name tests assert the warning is not emitted.
    • ...NewNameTakesPrecedence asserts the warning still fires when both env vars are set.

Copy link
Copy Markdown
Member Author

@Evangelink Evangelink left a comment

Choose a reason for hiding this comment

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

Expert Review — PR #8388

# Dimension Verdict
13 Test Completeness & Coverage 🟢 1 NIT

✅ 20/21 dimensions clean.

  • Test coverage: missing SynchronousWrite_NewNameTakesPrecedence test (symmetric to the existing CustomPrefix_NewNameTakesPrecedence)

Summary

The change is correct and well-structured. The fallback logic in TestApplication.cs correctly prefers the new env var names and falls back to the legacy names when the new ones are absent or empty. The EnvironmentVariableConstants.cs constants are internal, so no PublicAPI.Unshipped.txt update is needed and no [Obsolete] is required by policy (though it would be a helpful internal signal — optional).

The three new acceptance tests cover the happy paths for both new names and the precedence case for the file-prefix pair. The only gap is the missing symmetric precedence test for the synchronous-write pair (filed as a NIT inline comment above).

No blocking or major issues found.

Generated by Expert Code Review (on open) for issue #8388 · ● 5.1M

…c precedence test

- Mark legacy diagnostic env var constants TESTINGPLATFORM_DIAGNOSTIC_OUTPUT_FILEPREFIX and TESTINGPLATFORM_DIAGNOSTIC_FILELOGGER_SYNCHRONOUSWRITE with [Obsolete(error: false)] so any new internal call site fails the build, and suppress the warnings only at the intentional back-compat fallback sites in TestApplication.cs and at the file-wide level in DiagnosticTests.cs which exercises the legacy names on purpose.

- Add Diag_EnableWithEnvironmentVariables_SynchronousWrite_NewNameTakesPrecedence test, symmetric to the existing CustomPrefix_NewNameTakesPrecedence test, to lock in the precedence rule for the synchronous-write env var pair as well.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 20, 2026 15:26
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@Evangelink Evangelink merged commit 63ad229 into main May 20, 2026
55 of 58 checks passed
@Evangelink Evangelink deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
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.

Inconsistent diagnostic option names for command line and environment variable

2 participants