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

Merged
Amaury Levé (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
Amaury Levé (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>
CopilotAI review requested due to automatic review settings May 20, 2026 13:34

CopilotAI 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

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
FileDescription
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.csAdds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.csAdds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.csPrefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

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
MemberAuthor

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
MemberAuthor

Choose a reason for hiding this comment

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

Expert Review — PR #8388

#DimensionVerdict
13Test 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>
CopilotAI review requested due to automatic review settings May 20, 2026 15:26

CopilotAI 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.

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

@Evangelink
Amaury Levé (Evangelink) merged commit 63ad229 into mainMay 20, 2026
55 of 58 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
Sign up for freeto 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

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

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

Merged
Amaury Levé (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
Amaury Levé (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>
CopilotAI review requested due to automatic review settings May 20, 2026 13:34

CopilotAI 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

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
FileDescription
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.csAdds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.csAdds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.csPrefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

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
MemberAuthor

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
MemberAuthor

Choose a reason for hiding this comment

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

Expert Review — PR #8388

#DimensionVerdict
13Test 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>
CopilotAI review requested due to automatic review settings May 20, 2026 15:26

CopilotAI 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.

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

@Evangelink
Amaury Levé (Evangelink) merged commit 63ad229 into mainMay 20, 2026
55 of 58 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
Sign up for freeto 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

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
Amaury Levé (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
Amaury Levé (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>
CopilotAI review requested due to automatic review settings May 20, 2026 13:34

CopilotAI 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

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
FileDescription
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.csAdds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.csAdds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.csPrefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

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
MemberAuthor

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
MemberAuthor

Choose a reason for hiding this comment

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

Expert Review — PR #8388

#DimensionVerdict
13Test 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>
CopilotAI review requested due to automatic review settings May 20, 2026 15:26

CopilotAI 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.

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

@Evangelink
Amaury Levé (Evangelink) merged commit 63ad229 into mainMay 20, 2026
55 of 58 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
Sign up for freeto 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

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
Amaury Levé (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
Amaury Levé (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>
CopilotAI review requested due to automatic review settings May 20, 2026 13:34

CopilotAI 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

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
FileDescription
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.csAdds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.csAdds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.csPrefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

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
MemberAuthor

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
MemberAuthor

Choose a reason for hiding this comment

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

Expert Review — PR #8388

#DimensionVerdict
13Test 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>
CopilotAI review requested due to automatic review settings May 20, 2026 15:26

CopilotAI 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.

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

@Evangelink
Amaury Levé (Evangelink) merged commit 63ad229 into mainMay 20, 2026
55 of 58 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
Sign up for freeto 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

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

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

Merged
Amaury Levé (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
Amaury Levé (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>
CopilotAI review requested due to automatic review settings May 20, 2026 13:34

CopilotAI 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

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
FileDescription
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.csAdds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.csAdds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.csPrefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

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
MemberAuthor

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
MemberAuthor

Choose a reason for hiding this comment

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

Expert Review — PR #8388

#DimensionVerdict
13Test 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>
CopilotAI review requested due to automatic review settings May 20, 2026 15:26

CopilotAI 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.

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

@Evangelink
Amaury Levé (Evangelink) merged commit 63ad229 into mainMay 20, 2026
55 of 58 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
Sign up for freeto 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

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
Amaury Levé (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
Amaury Levé (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>
CopilotAI review requested due to automatic review settings May 20, 2026 13:34

CopilotAI 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

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
FileDescription
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.csAdds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.csAdds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.csPrefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

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
MemberAuthor

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
MemberAuthor

Choose a reason for hiding this comment

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

Expert Review — PR #8388

#DimensionVerdict
13Test 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>
CopilotAI review requested due to automatic review settings May 20, 2026 15:26

CopilotAI 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.

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

@Evangelink
Amaury Levé (Evangelink) merged commit 63ad229 into mainMay 20, 2026
55 of 58 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
Sign up for freeto 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

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
Amaury Levé (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
Amaury Levé (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>
CopilotAI review requested due to automatic review settings May 20, 2026 13:34

CopilotAI 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

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
FileDescription
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.csAdds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.csAdds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.csPrefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

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
MemberAuthor

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
MemberAuthor

Choose a reason for hiding this comment

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

Expert Review — PR #8388

#DimensionVerdict
13Test 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>
CopilotAI review requested due to automatic review settings May 20, 2026 15:26

CopilotAI 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.

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

@Evangelink
Amaury Levé (Evangelink) merged commit 63ad229 into mainMay 20, 2026
55 of 58 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
Sign up for freeto 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

@Evangelink
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

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

Merged
Amaury Levé (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
Amaury Levé (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>
CopilotAI review requested due to automatic review settings May 20, 2026 13:34

CopilotAI 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

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
FileDescription
test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/DiagnosticTests.csAdds new acceptance tests for the new env var names and precedence behavior.
src/Platform/Microsoft.Testing.Platform/Helpers/EnvironmentVariableConstants.csAdds new env var constants and annotates legacy constants with deprecation comments.
src/Platform/Microsoft.Testing.Platform/Builder/TestApplication.csPrefers new env vars for diagnostic prefix / synchronous write with legacy fallback.

Copilot's findings

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

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
MemberAuthor

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
MemberAuthor

Choose a reason for hiding this comment

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

Expert Review — PR #8388

#DimensionVerdict
13Test 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>
CopilotAI review requested due to automatic review settings May 20, 2026 15:26

CopilotAI 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.

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

@Evangelink
Amaury Levé (Evangelink) merged commit 63ad229 into mainMay 20, 2026
55 of 58 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/diagnostic-env-var-rename branch May 20, 2026 16:47
Sign up for freeto 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

@Evangelink