Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up) - #8328

Merged
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup
May 18, 2026
Merged

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up)#8328
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Follow-up to #8191 addressing the one remaining review item that genuinely needed a code change.

Background

Discussion r3258181945 pointed out that when --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch of the new banner switch and emits the generic CrashDumpProcessCrashed message (Test host process with PID 'X' crashed). The per-artifact CannotFindExpected* messages are still printed below, but a quick skim of the output gave no banner-level signal that an expected diagnostic artifact was missing.

Change

IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update CrashDumpProcessCrashed to reflect that explicitly:

Test host process with PID '{0}' crashed but the expected diagnostic artifact(s) were not produced

No code-side changes — only the resource value and the regenerated XLF files. The (false, false) branch already uses CrashDumpProcessCrashed, so the new wording flows through automatically.

Other PR review items

All other open review comments on #8191 (10 of them) were already addressed in the merge — replies sent on each thread acknowledging the existing fix with file:line citations. The two remaining "discussion-only" items (option naming and --help/--info release-notes mention) were replied to in-thread explaining the rationale.

Validation

.\build.cmd -c Release0 warnings, 0 errors.

… follow-up)
When --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch and prints CrashDumpProcessCrashed alongside the per-artifact CannotFindExpected* message. The banner itself was generic (Test host process with PID 'X' crashed), which understated the failure: a quick skim of the output gave no indication that an expected diagnostic artifact was missing.
IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update the banner text to reflect that explicitly so the per-artifact diagnostic isn't the only signal.
Addresses #8191 (comment). XLF files regenerated via /t:UpdateXlf.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings May 18, 2026 15:22

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

Follow-up to #8191. When --crashdump or --crash-report is requested but no diagnostic artifact lands on disk, the crash banner falls through to the generic CrashDumpProcessCrashed message. This PR updates that resource string to explicitly call out that the expected artifact was not produced, giving users a banner-level signal that something is wrong with diagnostic capture.

Changes:

  • Update CrashDumpProcessCrashed value in CrashDumpResources.resx to mention missing diagnostic artifacts.
  • Regenerate all 13 localized *.xlf files with the new <source> and <target state="new"> (target left in English for translation).
Show a summary per file
FileDescription
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/CrashDumpResources.resxUpdated English value for CrashDumpProcessCrashed.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.cs.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.de.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.es.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.fr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.it.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ja.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ko.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pl.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pt-BR.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ru.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.tr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hans.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hant.xlfRegenerated source + new target placeholder.

Copilot's findings

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

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.

Review: PR #8328 — Update generic-crash banner to flag missing diagnostic artifacts

#DimensionStatusNotes
1Algorithmic Correctness(false, false) branch is the only caller of CrashDumpProcessCrashed; IsEnabledAsync guarantees at least one flag is set, so that branch is correctly the "artifact(s) not produced" case.
2Threading & Concurrency✅ N/ANo code changes.
3Security & IPC Contract Safety✅ N/ANo code changes; message text only.
4Public API & Binary CompatibilityResource strings are not public API surface; no PublicAPI.Unshipped.txt entry needed.
5Performance & Allocations✅ N/ANo code changes.
6Cross-TFM Compatibility✅ N/ANo code changes.
7Resource & IDisposable Management✅ N/ANo code changes.
8Defensive Coding at Boundaries✅ N/ANo code changes.
9Localization & Resources⚠️Two findings — see inline comments: (a) missing comma in English source string; (b) verify XLF files were auto-generated by the build rather than hand-edited.
10Test Isolation✅ N/ANo test changes.
11Assertion QualityNo existing integration tests assert on the old CrashDumpProcessCrashed message text directly; no test regression risk found.
12Flakiness Patterns✅ N/ANo test changes.
13Test CompletenessMessage-only change; integration test coverage for the (false, false) path (missing artifact) would be a separate concern pre-existing this PR.
14Data-Driven Test Coverage✅ N/ANo test changes.
15Code Structure✅ N/ANo code changes.
16Naming & ConventionsResource key CrashDumpProcessCrashed is retained; naming is consistent with sibling keys.
17Documentation AccuracyPR description accurately describes the change and the reasoning.
18Analyzer Quality✅ N/ANo analyzer changes.
19IPC Wire Compatibility✅ N/ANo serialized types changed.
20Build Infrastructure & DependenciesOnly .resx and .xlf files changed; no build infrastructure impact.
21Scope & PR DisciplineSingle focused concern; references the parent PR #8191.

✅ 19/21 dimensions clean.


Summary of findings

Grammar — missing comma (NIT) · CrashDumpResources.resx line 151
The new string "crashed but the expected..." should be "crashed, but the expected..." to match the comma-before-conjunction style used in every other message in this file ("crashed, a dump file and crash report were generated", etc.).

XLF auto-generation policy (MODERATE) · all 13 .xlf files
Per .github/copilot-instructions.md, XLF files must never be manually edited — they must be generated by the build. The content looks correct (state="new", English text as target), but please confirm these were produced by running the build and not hand-authored. If hand-authored, revert and let the build regenerate them.

Generated by Expert Code Review (on open) for issue #8328 · ● 5.4M

@Evangelink

Copy link
Copy Markdown
MemberAuthor

Copilot address review comments

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

CopilotAI commented May 18, 2026

Copy link
Copy Markdown
Contributor

Copilot address review comments

Done in 2f7223e: addressed the review feedback by fixing the punctuation in CrashDumpResources.resx, regenerating all CrashDump XLF files through the build target, and validating with targeted build/tests plus final validation checks.

@Evangelink
Amaury Levé (Evangelink) merged commit a30cd53 into mainMay 18, 2026
10 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/crashreport-followup branch May 18, 2026 18:30
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.

4 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

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up) - #8328

Merged
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup
May 18, 2026
Merged

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up)#8328
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Follow-up to #8191 addressing the one remaining review item that genuinely needed a code change.

Background

Discussion r3258181945 pointed out that when --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch of the new banner switch and emits the generic CrashDumpProcessCrashed message (Test host process with PID 'X' crashed). The per-artifact CannotFindExpected* messages are still printed below, but a quick skim of the output gave no banner-level signal that an expected diagnostic artifact was missing.

Change

IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update CrashDumpProcessCrashed to reflect that explicitly:

Test host process with PID '{0}' crashed but the expected diagnostic artifact(s) were not produced

No code-side changes — only the resource value and the regenerated XLF files. The (false, false) branch already uses CrashDumpProcessCrashed, so the new wording flows through automatically.

Other PR review items

All other open review comments on #8191 (10 of them) were already addressed in the merge — replies sent on each thread acknowledging the existing fix with file:line citations. The two remaining "discussion-only" items (option naming and --help/--info release-notes mention) were replied to in-thread explaining the rationale.

Validation

.\build.cmd -c Release0 warnings, 0 errors.

… follow-up)
When --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch and prints CrashDumpProcessCrashed alongside the per-artifact CannotFindExpected* message. The banner itself was generic (Test host process with PID 'X' crashed), which understated the failure: a quick skim of the output gave no indication that an expected diagnostic artifact was missing.
IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update the banner text to reflect that explicitly so the per-artifact diagnostic isn't the only signal.
Addresses #8191 (comment). XLF files regenerated via /t:UpdateXlf.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings May 18, 2026 15:22

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

Follow-up to #8191. When --crashdump or --crash-report is requested but no diagnostic artifact lands on disk, the crash banner falls through to the generic CrashDumpProcessCrashed message. This PR updates that resource string to explicitly call out that the expected artifact was not produced, giving users a banner-level signal that something is wrong with diagnostic capture.

Changes:

  • Update CrashDumpProcessCrashed value in CrashDumpResources.resx to mention missing diagnostic artifacts.
  • Regenerate all 13 localized *.xlf files with the new <source> and <target state="new"> (target left in English for translation).
Show a summary per file
FileDescription
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/CrashDumpResources.resxUpdated English value for CrashDumpProcessCrashed.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.cs.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.de.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.es.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.fr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.it.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ja.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ko.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pl.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pt-BR.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ru.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.tr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hans.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hant.xlfRegenerated source + new target placeholder.

Copilot's findings

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

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.

Review: PR #8328 — Update generic-crash banner to flag missing diagnostic artifacts

#DimensionStatusNotes
1Algorithmic Correctness(false, false) branch is the only caller of CrashDumpProcessCrashed; IsEnabledAsync guarantees at least one flag is set, so that branch is correctly the "artifact(s) not produced" case.
2Threading & Concurrency✅ N/ANo code changes.
3Security & IPC Contract Safety✅ N/ANo code changes; message text only.
4Public API & Binary CompatibilityResource strings are not public API surface; no PublicAPI.Unshipped.txt entry needed.
5Performance & Allocations✅ N/ANo code changes.
6Cross-TFM Compatibility✅ N/ANo code changes.
7Resource & IDisposable Management✅ N/ANo code changes.
8Defensive Coding at Boundaries✅ N/ANo code changes.
9Localization & Resources⚠️Two findings — see inline comments: (a) missing comma in English source string; (b) verify XLF files were auto-generated by the build rather than hand-edited.
10Test Isolation✅ N/ANo test changes.
11Assertion QualityNo existing integration tests assert on the old CrashDumpProcessCrashed message text directly; no test regression risk found.
12Flakiness Patterns✅ N/ANo test changes.
13Test CompletenessMessage-only change; integration test coverage for the (false, false) path (missing artifact) would be a separate concern pre-existing this PR.
14Data-Driven Test Coverage✅ N/ANo test changes.
15Code Structure✅ N/ANo code changes.
16Naming & ConventionsResource key CrashDumpProcessCrashed is retained; naming is consistent with sibling keys.
17Documentation AccuracyPR description accurately describes the change and the reasoning.
18Analyzer Quality✅ N/ANo analyzer changes.
19IPC Wire Compatibility✅ N/ANo serialized types changed.
20Build Infrastructure & DependenciesOnly .resx and .xlf files changed; no build infrastructure impact.
21Scope & PR DisciplineSingle focused concern; references the parent PR #8191.

✅ 19/21 dimensions clean.


Summary of findings

Grammar — missing comma (NIT) · CrashDumpResources.resx line 151
The new string "crashed but the expected..." should be "crashed, but the expected..." to match the comma-before-conjunction style used in every other message in this file ("crashed, a dump file and crash report were generated", etc.).

XLF auto-generation policy (MODERATE) · all 13 .xlf files
Per .github/copilot-instructions.md, XLF files must never be manually edited — they must be generated by the build. The content looks correct (state="new", English text as target), but please confirm these were produced by running the build and not hand-authored. If hand-authored, revert and let the build regenerate them.

Generated by Expert Code Review (on open) for issue #8328 · ● 5.4M

@Evangelink

Copy link
Copy Markdown
MemberAuthor

Copilot address review comments

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

CopilotAI commented May 18, 2026

Copy link
Copy Markdown
Contributor

Copilot address review comments

Done in 2f7223e: addressed the review feedback by fixing the punctuation in CrashDumpResources.resx, regenerating all CrashDump XLF files through the build target, and validating with targeted build/tests plus final validation checks.

@Evangelink
Amaury Levé (Evangelink) merged commit a30cd53 into mainMay 18, 2026
10 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/crashreport-followup branch May 18, 2026 18:30
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.

4 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

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up) - #8328

Merged
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup
May 18, 2026
Merged

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up)#8328
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Follow-up to #8191 addressing the one remaining review item that genuinely needed a code change.

Background

Discussion r3258181945 pointed out that when --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch of the new banner switch and emits the generic CrashDumpProcessCrashed message (Test host process with PID 'X' crashed). The per-artifact CannotFindExpected* messages are still printed below, but a quick skim of the output gave no banner-level signal that an expected diagnostic artifact was missing.

Change

IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update CrashDumpProcessCrashed to reflect that explicitly:

Test host process with PID '{0}' crashed but the expected diagnostic artifact(s) were not produced

No code-side changes — only the resource value and the regenerated XLF files. The (false, false) branch already uses CrashDumpProcessCrashed, so the new wording flows through automatically.

Other PR review items

All other open review comments on #8191 (10 of them) were already addressed in the merge — replies sent on each thread acknowledging the existing fix with file:line citations. The two remaining "discussion-only" items (option naming and --help/--info release-notes mention) were replied to in-thread explaining the rationale.

Validation

.\build.cmd -c Release0 warnings, 0 errors.

… follow-up)
When --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch and prints CrashDumpProcessCrashed alongside the per-artifact CannotFindExpected* message. The banner itself was generic (Test host process with PID 'X' crashed), which understated the failure: a quick skim of the output gave no indication that an expected diagnostic artifact was missing.
IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update the banner text to reflect that explicitly so the per-artifact diagnostic isn't the only signal.
Addresses #8191 (comment). XLF files regenerated via /t:UpdateXlf.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings May 18, 2026 15:22

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

Follow-up to #8191. When --crashdump or --crash-report is requested but no diagnostic artifact lands on disk, the crash banner falls through to the generic CrashDumpProcessCrashed message. This PR updates that resource string to explicitly call out that the expected artifact was not produced, giving users a banner-level signal that something is wrong with diagnostic capture.

Changes:

  • Update CrashDumpProcessCrashed value in CrashDumpResources.resx to mention missing diagnostic artifacts.
  • Regenerate all 13 localized *.xlf files with the new <source> and <target state="new"> (target left in English for translation).
Show a summary per file
FileDescription
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/CrashDumpResources.resxUpdated English value for CrashDumpProcessCrashed.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.cs.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.de.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.es.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.fr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.it.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ja.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ko.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pl.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pt-BR.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ru.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.tr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hans.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hant.xlfRegenerated source + new target placeholder.

Copilot's findings

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

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.

Review: PR #8328 — Update generic-crash banner to flag missing diagnostic artifacts

#DimensionStatusNotes
1Algorithmic Correctness(false, false) branch is the only caller of CrashDumpProcessCrashed; IsEnabledAsync guarantees at least one flag is set, so that branch is correctly the "artifact(s) not produced" case.
2Threading & Concurrency✅ N/ANo code changes.
3Security & IPC Contract Safety✅ N/ANo code changes; message text only.
4Public API & Binary CompatibilityResource strings are not public API surface; no PublicAPI.Unshipped.txt entry needed.
5Performance & Allocations✅ N/ANo code changes.
6Cross-TFM Compatibility✅ N/ANo code changes.
7Resource & IDisposable Management✅ N/ANo code changes.
8Defensive Coding at Boundaries✅ N/ANo code changes.
9Localization & Resources⚠️Two findings — see inline comments: (a) missing comma in English source string; (b) verify XLF files were auto-generated by the build rather than hand-edited.
10Test Isolation✅ N/ANo test changes.
11Assertion QualityNo existing integration tests assert on the old CrashDumpProcessCrashed message text directly; no test regression risk found.
12Flakiness Patterns✅ N/ANo test changes.
13Test CompletenessMessage-only change; integration test coverage for the (false, false) path (missing artifact) would be a separate concern pre-existing this PR.
14Data-Driven Test Coverage✅ N/ANo test changes.
15Code Structure✅ N/ANo code changes.
16Naming & ConventionsResource key CrashDumpProcessCrashed is retained; naming is consistent with sibling keys.
17Documentation AccuracyPR description accurately describes the change and the reasoning.
18Analyzer Quality✅ N/ANo analyzer changes.
19IPC Wire Compatibility✅ N/ANo serialized types changed.
20Build Infrastructure & DependenciesOnly .resx and .xlf files changed; no build infrastructure impact.
21Scope & PR DisciplineSingle focused concern; references the parent PR #8191.

✅ 19/21 dimensions clean.


Summary of findings

Grammar — missing comma (NIT) · CrashDumpResources.resx line 151
The new string "crashed but the expected..." should be "crashed, but the expected..." to match the comma-before-conjunction style used in every other message in this file ("crashed, a dump file and crash report were generated", etc.).

XLF auto-generation policy (MODERATE) · all 13 .xlf files
Per .github/copilot-instructions.md, XLF files must never be manually edited — they must be generated by the build. The content looks correct (state="new", English text as target), but please confirm these were produced by running the build and not hand-authored. If hand-authored, revert and let the build regenerate them.

Generated by Expert Code Review (on open) for issue #8328 · ● 5.4M

@Evangelink

Copy link
Copy Markdown
MemberAuthor

Copilot address review comments

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

CopilotAI commented May 18, 2026

Copy link
Copy Markdown
Contributor

Copilot address review comments

Done in 2f7223e: addressed the review feedback by fixing the punctuation in CrashDumpResources.resx, regenerating all CrashDump XLF files through the build target, and validating with targeted build/tests plus final validation checks.

@Evangelink
Amaury Levé (Evangelink) merged commit a30cd53 into mainMay 18, 2026
10 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/crashreport-followup branch May 18, 2026 18:30
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.

4 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

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up) - #8328

Merged
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup
May 18, 2026
Merged

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up)#8328
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Follow-up to #8191 addressing the one remaining review item that genuinely needed a code change.

Background

Discussion r3258181945 pointed out that when --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch of the new banner switch and emits the generic CrashDumpProcessCrashed message (Test host process with PID 'X' crashed). The per-artifact CannotFindExpected* messages are still printed below, but a quick skim of the output gave no banner-level signal that an expected diagnostic artifact was missing.

Change

IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update CrashDumpProcessCrashed to reflect that explicitly:

Test host process with PID '{0}' crashed but the expected diagnostic artifact(s) were not produced

No code-side changes — only the resource value and the regenerated XLF files. The (false, false) branch already uses CrashDumpProcessCrashed, so the new wording flows through automatically.

Other PR review items

All other open review comments on #8191 (10 of them) were already addressed in the merge — replies sent on each thread acknowledging the existing fix with file:line citations. The two remaining "discussion-only" items (option naming and --help/--info release-notes mention) were replied to in-thread explaining the rationale.

Validation

.\build.cmd -c Release0 warnings, 0 errors.

… follow-up)
When --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch and prints CrashDumpProcessCrashed alongside the per-artifact CannotFindExpected* message. The banner itself was generic (Test host process with PID 'X' crashed), which understated the failure: a quick skim of the output gave no indication that an expected diagnostic artifact was missing.
IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update the banner text to reflect that explicitly so the per-artifact diagnostic isn't the only signal.
Addresses #8191 (comment). XLF files regenerated via /t:UpdateXlf.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings May 18, 2026 15:22

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

Follow-up to #8191. When --crashdump or --crash-report is requested but no diagnostic artifact lands on disk, the crash banner falls through to the generic CrashDumpProcessCrashed message. This PR updates that resource string to explicitly call out that the expected artifact was not produced, giving users a banner-level signal that something is wrong with diagnostic capture.

Changes:

  • Update CrashDumpProcessCrashed value in CrashDumpResources.resx to mention missing diagnostic artifacts.
  • Regenerate all 13 localized *.xlf files with the new <source> and <target state="new"> (target left in English for translation).
Show a summary per file
FileDescription
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/CrashDumpResources.resxUpdated English value for CrashDumpProcessCrashed.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.cs.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.de.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.es.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.fr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.it.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ja.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ko.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pl.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pt-BR.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ru.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.tr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hans.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hant.xlfRegenerated source + new target placeholder.

Copilot's findings

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

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.

Review: PR #8328 — Update generic-crash banner to flag missing diagnostic artifacts

#DimensionStatusNotes
1Algorithmic Correctness(false, false) branch is the only caller of CrashDumpProcessCrashed; IsEnabledAsync guarantees at least one flag is set, so that branch is correctly the "artifact(s) not produced" case.
2Threading & Concurrency✅ N/ANo code changes.
3Security & IPC Contract Safety✅ N/ANo code changes; message text only.
4Public API & Binary CompatibilityResource strings are not public API surface; no PublicAPI.Unshipped.txt entry needed.
5Performance & Allocations✅ N/ANo code changes.
6Cross-TFM Compatibility✅ N/ANo code changes.
7Resource & IDisposable Management✅ N/ANo code changes.
8Defensive Coding at Boundaries✅ N/ANo code changes.
9Localization & Resources⚠️Two findings — see inline comments: (a) missing comma in English source string; (b) verify XLF files were auto-generated by the build rather than hand-edited.
10Test Isolation✅ N/ANo test changes.
11Assertion QualityNo existing integration tests assert on the old CrashDumpProcessCrashed message text directly; no test regression risk found.
12Flakiness Patterns✅ N/ANo test changes.
13Test CompletenessMessage-only change; integration test coverage for the (false, false) path (missing artifact) would be a separate concern pre-existing this PR.
14Data-Driven Test Coverage✅ N/ANo test changes.
15Code Structure✅ N/ANo code changes.
16Naming & ConventionsResource key CrashDumpProcessCrashed is retained; naming is consistent with sibling keys.
17Documentation AccuracyPR description accurately describes the change and the reasoning.
18Analyzer Quality✅ N/ANo analyzer changes.
19IPC Wire Compatibility✅ N/ANo serialized types changed.
20Build Infrastructure & DependenciesOnly .resx and .xlf files changed; no build infrastructure impact.
21Scope & PR DisciplineSingle focused concern; references the parent PR #8191.

✅ 19/21 dimensions clean.


Summary of findings

Grammar — missing comma (NIT) · CrashDumpResources.resx line 151
The new string "crashed but the expected..." should be "crashed, but the expected..." to match the comma-before-conjunction style used in every other message in this file ("crashed, a dump file and crash report were generated", etc.).

XLF auto-generation policy (MODERATE) · all 13 .xlf files
Per .github/copilot-instructions.md, XLF files must never be manually edited — they must be generated by the build. The content looks correct (state="new", English text as target), but please confirm these were produced by running the build and not hand-authored. If hand-authored, revert and let the build regenerate them.

Generated by Expert Code Review (on open) for issue #8328 · ● 5.4M

@Evangelink

Copy link
Copy Markdown
MemberAuthor

Copilot address review comments

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

CopilotAI commented May 18, 2026

Copy link
Copy Markdown
Contributor

Copilot address review comments

Done in 2f7223e: addressed the review feedback by fixing the punctuation in CrashDumpResources.resx, regenerating all CrashDump XLF files through the build target, and validating with targeted build/tests plus final validation checks.

@Evangelink
Amaury Levé (Evangelink) merged commit a30cd53 into mainMay 18, 2026
10 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/crashreport-followup branch May 18, 2026 18:30
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.

4 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

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up) - #8328

Merged
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup
May 18, 2026
Merged

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up)#8328
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Follow-up to #8191 addressing the one remaining review item that genuinely needed a code change.

Background

Discussion r3258181945 pointed out that when --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch of the new banner switch and emits the generic CrashDumpProcessCrashed message (Test host process with PID 'X' crashed). The per-artifact CannotFindExpected* messages are still printed below, but a quick skim of the output gave no banner-level signal that an expected diagnostic artifact was missing.

Change

IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update CrashDumpProcessCrashed to reflect that explicitly:

Test host process with PID '{0}' crashed but the expected diagnostic artifact(s) were not produced

No code-side changes — only the resource value and the regenerated XLF files. The (false, false) branch already uses CrashDumpProcessCrashed, so the new wording flows through automatically.

Other PR review items

All other open review comments on #8191 (10 of them) were already addressed in the merge — replies sent on each thread acknowledging the existing fix with file:line citations. The two remaining "discussion-only" items (option naming and --help/--info release-notes mention) were replied to in-thread explaining the rationale.

Validation

.\build.cmd -c Release0 warnings, 0 errors.

… follow-up)
When --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch and prints CrashDumpProcessCrashed alongside the per-artifact CannotFindExpected* message. The banner itself was generic (Test host process with PID 'X' crashed), which understated the failure: a quick skim of the output gave no indication that an expected diagnostic artifact was missing.
IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update the banner text to reflect that explicitly so the per-artifact diagnostic isn't the only signal.
Addresses #8191 (comment). XLF files regenerated via /t:UpdateXlf.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings May 18, 2026 15:22

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

Follow-up to #8191. When --crashdump or --crash-report is requested but no diagnostic artifact lands on disk, the crash banner falls through to the generic CrashDumpProcessCrashed message. This PR updates that resource string to explicitly call out that the expected artifact was not produced, giving users a banner-level signal that something is wrong with diagnostic capture.

Changes:

  • Update CrashDumpProcessCrashed value in CrashDumpResources.resx to mention missing diagnostic artifacts.
  • Regenerate all 13 localized *.xlf files with the new <source> and <target state="new"> (target left in English for translation).
Show a summary per file
FileDescription
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/CrashDumpResources.resxUpdated English value for CrashDumpProcessCrashed.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.cs.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.de.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.es.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.fr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.it.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ja.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ko.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pl.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pt-BR.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ru.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.tr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hans.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hant.xlfRegenerated source + new target placeholder.

Copilot's findings

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

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.

Review: PR #8328 — Update generic-crash banner to flag missing diagnostic artifacts

#DimensionStatusNotes
1Algorithmic Correctness(false, false) branch is the only caller of CrashDumpProcessCrashed; IsEnabledAsync guarantees at least one flag is set, so that branch is correctly the "artifact(s) not produced" case.
2Threading & Concurrency✅ N/ANo code changes.
3Security & IPC Contract Safety✅ N/ANo code changes; message text only.
4Public API & Binary CompatibilityResource strings are not public API surface; no PublicAPI.Unshipped.txt entry needed.
5Performance & Allocations✅ N/ANo code changes.
6Cross-TFM Compatibility✅ N/ANo code changes.
7Resource & IDisposable Management✅ N/ANo code changes.
8Defensive Coding at Boundaries✅ N/ANo code changes.
9Localization & Resources⚠️Two findings — see inline comments: (a) missing comma in English source string; (b) verify XLF files were auto-generated by the build rather than hand-edited.
10Test Isolation✅ N/ANo test changes.
11Assertion QualityNo existing integration tests assert on the old CrashDumpProcessCrashed message text directly; no test regression risk found.
12Flakiness Patterns✅ N/ANo test changes.
13Test CompletenessMessage-only change; integration test coverage for the (false, false) path (missing artifact) would be a separate concern pre-existing this PR.
14Data-Driven Test Coverage✅ N/ANo test changes.
15Code Structure✅ N/ANo code changes.
16Naming & ConventionsResource key CrashDumpProcessCrashed is retained; naming is consistent with sibling keys.
17Documentation AccuracyPR description accurately describes the change and the reasoning.
18Analyzer Quality✅ N/ANo analyzer changes.
19IPC Wire Compatibility✅ N/ANo serialized types changed.
20Build Infrastructure & DependenciesOnly .resx and .xlf files changed; no build infrastructure impact.
21Scope & PR DisciplineSingle focused concern; references the parent PR #8191.

✅ 19/21 dimensions clean.


Summary of findings

Grammar — missing comma (NIT) · CrashDumpResources.resx line 151
The new string "crashed but the expected..." should be "crashed, but the expected..." to match the comma-before-conjunction style used in every other message in this file ("crashed, a dump file and crash report were generated", etc.).

XLF auto-generation policy (MODERATE) · all 13 .xlf files
Per .github/copilot-instructions.md, XLF files must never be manually edited — they must be generated by the build. The content looks correct (state="new", English text as target), but please confirm these were produced by running the build and not hand-authored. If hand-authored, revert and let the build regenerate them.

Generated by Expert Code Review (on open) for issue #8328 · ● 5.4M

@Evangelink

Copy link
Copy Markdown
MemberAuthor

Copilot address review comments

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

CopilotAI commented May 18, 2026

Copy link
Copy Markdown
Contributor

Copilot address review comments

Done in 2f7223e: addressed the review feedback by fixing the punctuation in CrashDumpResources.resx, regenerating all CrashDump XLF files through the build target, and validating with targeted build/tests plus final validation checks.

@Evangelink
Amaury Levé (Evangelink) merged commit a30cd53 into mainMay 18, 2026
10 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/crashreport-followup branch May 18, 2026 18:30
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.

4 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

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up) - #8328

Merged
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup
May 18, 2026
Merged

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up)#8328
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Follow-up to #8191 addressing the one remaining review item that genuinely needed a code change.

Background

Discussion r3258181945 pointed out that when --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch of the new banner switch and emits the generic CrashDumpProcessCrashed message (Test host process with PID 'X' crashed). The per-artifact CannotFindExpected* messages are still printed below, but a quick skim of the output gave no banner-level signal that an expected diagnostic artifact was missing.

Change

IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update CrashDumpProcessCrashed to reflect that explicitly:

Test host process with PID '{0}' crashed but the expected diagnostic artifact(s) were not produced

No code-side changes — only the resource value and the regenerated XLF files. The (false, false) branch already uses CrashDumpProcessCrashed, so the new wording flows through automatically.

Other PR review items

All other open review comments on #8191 (10 of them) were already addressed in the merge — replies sent on each thread acknowledging the existing fix with file:line citations. The two remaining "discussion-only" items (option naming and --help/--info release-notes mention) were replied to in-thread explaining the rationale.

Validation

.\build.cmd -c Release0 warnings, 0 errors.

… follow-up)
When --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch and prints CrashDumpProcessCrashed alongside the per-artifact CannotFindExpected* message. The banner itself was generic (Test host process with PID 'X' crashed), which understated the failure: a quick skim of the output gave no indication that an expected diagnostic artifact was missing.
IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update the banner text to reflect that explicitly so the per-artifact diagnostic isn't the only signal.
Addresses #8191 (comment). XLF files regenerated via /t:UpdateXlf.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings May 18, 2026 15:22

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

Follow-up to #8191. When --crashdump or --crash-report is requested but no diagnostic artifact lands on disk, the crash banner falls through to the generic CrashDumpProcessCrashed message. This PR updates that resource string to explicitly call out that the expected artifact was not produced, giving users a banner-level signal that something is wrong with diagnostic capture.

Changes:

  • Update CrashDumpProcessCrashed value in CrashDumpResources.resx to mention missing diagnostic artifacts.
  • Regenerate all 13 localized *.xlf files with the new <source> and <target state="new"> (target left in English for translation).
Show a summary per file
FileDescription
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/CrashDumpResources.resxUpdated English value for CrashDumpProcessCrashed.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.cs.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.de.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.es.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.fr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.it.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ja.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ko.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pl.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pt-BR.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ru.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.tr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hans.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hant.xlfRegenerated source + new target placeholder.

Copilot's findings

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

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.

Review: PR #8328 — Update generic-crash banner to flag missing diagnostic artifacts

#DimensionStatusNotes
1Algorithmic Correctness(false, false) branch is the only caller of CrashDumpProcessCrashed; IsEnabledAsync guarantees at least one flag is set, so that branch is correctly the "artifact(s) not produced" case.
2Threading & Concurrency✅ N/ANo code changes.
3Security & IPC Contract Safety✅ N/ANo code changes; message text only.
4Public API & Binary CompatibilityResource strings are not public API surface; no PublicAPI.Unshipped.txt entry needed.
5Performance & Allocations✅ N/ANo code changes.
6Cross-TFM Compatibility✅ N/ANo code changes.
7Resource & IDisposable Management✅ N/ANo code changes.
8Defensive Coding at Boundaries✅ N/ANo code changes.
9Localization & Resources⚠️Two findings — see inline comments: (a) missing comma in English source string; (b) verify XLF files were auto-generated by the build rather than hand-edited.
10Test Isolation✅ N/ANo test changes.
11Assertion QualityNo existing integration tests assert on the old CrashDumpProcessCrashed message text directly; no test regression risk found.
12Flakiness Patterns✅ N/ANo test changes.
13Test CompletenessMessage-only change; integration test coverage for the (false, false) path (missing artifact) would be a separate concern pre-existing this PR.
14Data-Driven Test Coverage✅ N/ANo test changes.
15Code Structure✅ N/ANo code changes.
16Naming & ConventionsResource key CrashDumpProcessCrashed is retained; naming is consistent with sibling keys.
17Documentation AccuracyPR description accurately describes the change and the reasoning.
18Analyzer Quality✅ N/ANo analyzer changes.
19IPC Wire Compatibility✅ N/ANo serialized types changed.
20Build Infrastructure & DependenciesOnly .resx and .xlf files changed; no build infrastructure impact.
21Scope & PR DisciplineSingle focused concern; references the parent PR #8191.

✅ 19/21 dimensions clean.


Summary of findings

Grammar — missing comma (NIT) · CrashDumpResources.resx line 151
The new string "crashed but the expected..." should be "crashed, but the expected..." to match the comma-before-conjunction style used in every other message in this file ("crashed, a dump file and crash report were generated", etc.).

XLF auto-generation policy (MODERATE) · all 13 .xlf files
Per .github/copilot-instructions.md, XLF files must never be manually edited — they must be generated by the build. The content looks correct (state="new", English text as target), but please confirm these were produced by running the build and not hand-authored. If hand-authored, revert and let the build regenerate them.

Generated by Expert Code Review (on open) for issue #8328 · ● 5.4M

@Evangelink

Copy link
Copy Markdown
MemberAuthor

Copilot address review comments

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

CopilotAI commented May 18, 2026

Copy link
Copy Markdown
Contributor

Copilot address review comments

Done in 2f7223e: addressed the review feedback by fixing the punctuation in CrashDumpResources.resx, regenerating all CrashDump XLF files through the build target, and validating with targeted build/tests plus final validation checks.

@Evangelink
Amaury Levé (Evangelink) merged commit a30cd53 into mainMay 18, 2026
10 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/crashreport-followup branch May 18, 2026 18:30
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.

4 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

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up) - #8328

Merged
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup
May 18, 2026
Merged

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up)#8328
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Follow-up to #8191 addressing the one remaining review item that genuinely needed a code change.

Background

Discussion r3258181945 pointed out that when --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch of the new banner switch and emits the generic CrashDumpProcessCrashed message (Test host process with PID 'X' crashed). The per-artifact CannotFindExpected* messages are still printed below, but a quick skim of the output gave no banner-level signal that an expected diagnostic artifact was missing.

Change

IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update CrashDumpProcessCrashed to reflect that explicitly:

Test host process with PID '{0}' crashed but the expected diagnostic artifact(s) were not produced

No code-side changes — only the resource value and the regenerated XLF files. The (false, false) branch already uses CrashDumpProcessCrashed, so the new wording flows through automatically.

Other PR review items

All other open review comments on #8191 (10 of them) were already addressed in the merge — replies sent on each thread acknowledging the existing fix with file:line citations. The two remaining "discussion-only" items (option naming and --help/--info release-notes mention) were replied to in-thread explaining the rationale.

Validation

.\build.cmd -c Release0 warnings, 0 errors.

… follow-up)
When --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch and prints CrashDumpProcessCrashed alongside the per-artifact CannotFindExpected* message. The banner itself was generic (Test host process with PID 'X' crashed), which understated the failure: a quick skim of the output gave no indication that an expected diagnostic artifact was missing.
IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update the banner text to reflect that explicitly so the per-artifact diagnostic isn't the only signal.
Addresses #8191 (comment). XLF files regenerated via /t:UpdateXlf.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings May 18, 2026 15:22

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

Follow-up to #8191. When --crashdump or --crash-report is requested but no diagnostic artifact lands on disk, the crash banner falls through to the generic CrashDumpProcessCrashed message. This PR updates that resource string to explicitly call out that the expected artifact was not produced, giving users a banner-level signal that something is wrong with diagnostic capture.

Changes:

  • Update CrashDumpProcessCrashed value in CrashDumpResources.resx to mention missing diagnostic artifacts.
  • Regenerate all 13 localized *.xlf files with the new <source> and <target state="new"> (target left in English for translation).
Show a summary per file
FileDescription
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/CrashDumpResources.resxUpdated English value for CrashDumpProcessCrashed.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.cs.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.de.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.es.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.fr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.it.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ja.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ko.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pl.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pt-BR.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ru.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.tr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hans.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hant.xlfRegenerated source + new target placeholder.

Copilot's findings

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

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.

Review: PR #8328 — Update generic-crash banner to flag missing diagnostic artifacts

#DimensionStatusNotes
1Algorithmic Correctness(false, false) branch is the only caller of CrashDumpProcessCrashed; IsEnabledAsync guarantees at least one flag is set, so that branch is correctly the "artifact(s) not produced" case.
2Threading & Concurrency✅ N/ANo code changes.
3Security & IPC Contract Safety✅ N/ANo code changes; message text only.
4Public API & Binary CompatibilityResource strings are not public API surface; no PublicAPI.Unshipped.txt entry needed.
5Performance & Allocations✅ N/ANo code changes.
6Cross-TFM Compatibility✅ N/ANo code changes.
7Resource & IDisposable Management✅ N/ANo code changes.
8Defensive Coding at Boundaries✅ N/ANo code changes.
9Localization & Resources⚠️Two findings — see inline comments: (a) missing comma in English source string; (b) verify XLF files were auto-generated by the build rather than hand-edited.
10Test Isolation✅ N/ANo test changes.
11Assertion QualityNo existing integration tests assert on the old CrashDumpProcessCrashed message text directly; no test regression risk found.
12Flakiness Patterns✅ N/ANo test changes.
13Test CompletenessMessage-only change; integration test coverage for the (false, false) path (missing artifact) would be a separate concern pre-existing this PR.
14Data-Driven Test Coverage✅ N/ANo test changes.
15Code Structure✅ N/ANo code changes.
16Naming & ConventionsResource key CrashDumpProcessCrashed is retained; naming is consistent with sibling keys.
17Documentation AccuracyPR description accurately describes the change and the reasoning.
18Analyzer Quality✅ N/ANo analyzer changes.
19IPC Wire Compatibility✅ N/ANo serialized types changed.
20Build Infrastructure & DependenciesOnly .resx and .xlf files changed; no build infrastructure impact.
21Scope & PR DisciplineSingle focused concern; references the parent PR #8191.

✅ 19/21 dimensions clean.


Summary of findings

Grammar — missing comma (NIT) · CrashDumpResources.resx line 151
The new string "crashed but the expected..." should be "crashed, but the expected..." to match the comma-before-conjunction style used in every other message in this file ("crashed, a dump file and crash report were generated", etc.).

XLF auto-generation policy (MODERATE) · all 13 .xlf files
Per .github/copilot-instructions.md, XLF files must never be manually edited — they must be generated by the build. The content looks correct (state="new", English text as target), but please confirm these were produced by running the build and not hand-authored. If hand-authored, revert and let the build regenerate them.

Generated by Expert Code Review (on open) for issue #8328 · ● 5.4M

@Evangelink

Copy link
Copy Markdown
MemberAuthor

Copilot address review comments

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

CopilotAI commented May 18, 2026

Copy link
Copy Markdown
Contributor

Copilot address review comments

Done in 2f7223e: addressed the review feedback by fixing the punctuation in CrashDumpResources.resx, regenerating all CrashDump XLF files through the build target, and validating with targeted build/tests plus final validation checks.

@Evangelink
Amaury Levé (Evangelink) merged commit a30cd53 into mainMay 18, 2026
10 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/crashreport-followup branch May 18, 2026 18:30
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.

4 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

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up) - #8328

Merged
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup
May 18, 2026
Merged

Update generic-crash banner to flag missing diagnostic artifacts (#8191 follow-up)#8328
Amaury Levé (Evangelink) merged 2 commits into
mainfrom
dev/amauryleve/crashreport-followup

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Follow-up to #8191 addressing the one remaining review item that genuinely needed a code change.

Background

Discussion r3258181945 pointed out that when --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch of the new banner switch and emits the generic CrashDumpProcessCrashed message (Test host process with PID 'X' crashed). The per-artifact CannotFindExpected* messages are still printed below, but a quick skim of the output gave no banner-level signal that an expected diagnostic artifact was missing.

Change

IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update CrashDumpProcessCrashed to reflect that explicitly:

Test host process with PID '{0}' crashed but the expected diagnostic artifact(s) were not produced

No code-side changes — only the resource value and the regenerated XLF files. The (false, false) branch already uses CrashDumpProcessCrashed, so the new wording flows through automatically.

Other PR review items

All other open review comments on #8191 (10 of them) were already addressed in the merge — replies sent on each thread acknowledging the existing fix with file:line citations. The two remaining "discussion-only" items (option naming and --help/--info release-notes mention) were replied to in-thread explaining the rationale.

Validation

.\build.cmd -c Release0 warnings, 0 errors.

… follow-up)
When --crashdump or --crash-report is requested but the expected artifact does not appear on disk, OnTestHostProcessExitedAsync falls through to the (false, false) branch and prints CrashDumpProcessCrashed alongside the per-artifact CannotFindExpected* message. The banner itself was generic (Test host process with PID 'X' crashed), which understated the failure: a quick skim of the output gave no indication that an expected diagnostic artifact was missing.
IsEnabledAsync guarantees at least one of --crashdump / --crash-report is set whenever the handler runs, so reaching the (false, false) branch always means an expected artifact was not produced. Update the banner text to reflect that explicitly so the per-artifact diagnostic isn't the only signal.
Addresses #8191 (comment). XLF files regenerated via /t:UpdateXlf.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings May 18, 2026 15:22

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

Follow-up to #8191. When --crashdump or --crash-report is requested but no diagnostic artifact lands on disk, the crash banner falls through to the generic CrashDumpProcessCrashed message. This PR updates that resource string to explicitly call out that the expected artifact was not produced, giving users a banner-level signal that something is wrong with diagnostic capture.

Changes:

  • Update CrashDumpProcessCrashed value in CrashDumpResources.resx to mention missing diagnostic artifacts.
  • Regenerate all 13 localized *.xlf files with the new <source> and <target state="new"> (target left in English for translation).
Show a summary per file
FileDescription
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/CrashDumpResources.resxUpdated English value for CrashDumpProcessCrashed.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.cs.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.de.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.es.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.fr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.it.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ja.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ko.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pl.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.pt-BR.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.ru.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.tr.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hans.xlfRegenerated source + new target placeholder.
src/Platform/Microsoft.Testing.Extensions.CrashDump/Resources/xlf/CrashDumpResources.zh-Hant.xlfRegenerated source + new target placeholder.

Copilot's findings

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

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.

Review: PR #8328 — Update generic-crash banner to flag missing diagnostic artifacts

#DimensionStatusNotes
1Algorithmic Correctness(false, false) branch is the only caller of CrashDumpProcessCrashed; IsEnabledAsync guarantees at least one flag is set, so that branch is correctly the "artifact(s) not produced" case.
2Threading & Concurrency✅ N/ANo code changes.
3Security & IPC Contract Safety✅ N/ANo code changes; message text only.
4Public API & Binary CompatibilityResource strings are not public API surface; no PublicAPI.Unshipped.txt entry needed.
5Performance & Allocations✅ N/ANo code changes.
6Cross-TFM Compatibility✅ N/ANo code changes.
7Resource & IDisposable Management✅ N/ANo code changes.
8Defensive Coding at Boundaries✅ N/ANo code changes.
9Localization & Resources⚠️Two findings — see inline comments: (a) missing comma in English source string; (b) verify XLF files were auto-generated by the build rather than hand-edited.
10Test Isolation✅ N/ANo test changes.
11Assertion QualityNo existing integration tests assert on the old CrashDumpProcessCrashed message text directly; no test regression risk found.
12Flakiness Patterns✅ N/ANo test changes.
13Test CompletenessMessage-only change; integration test coverage for the (false, false) path (missing artifact) would be a separate concern pre-existing this PR.
14Data-Driven Test Coverage✅ N/ANo test changes.
15Code Structure✅ N/ANo code changes.
16Naming & ConventionsResource key CrashDumpProcessCrashed is retained; naming is consistent with sibling keys.
17Documentation AccuracyPR description accurately describes the change and the reasoning.
18Analyzer Quality✅ N/ANo analyzer changes.
19IPC Wire Compatibility✅ N/ANo serialized types changed.
20Build Infrastructure & DependenciesOnly .resx and .xlf files changed; no build infrastructure impact.
21Scope & PR DisciplineSingle focused concern; references the parent PR #8191.

✅ 19/21 dimensions clean.


Summary of findings

Grammar — missing comma (NIT) · CrashDumpResources.resx line 151
The new string "crashed but the expected..." should be "crashed, but the expected..." to match the comma-before-conjunction style used in every other message in this file ("crashed, a dump file and crash report were generated", etc.).

XLF auto-generation policy (MODERATE) · all 13 .xlf files
Per .github/copilot-instructions.md, XLF files must never be manually edited — they must be generated by the build. The content looks correct (state="new", English text as target), but please confirm these were produced by running the build and not hand-authored. If hand-authored, revert and let the build regenerate them.

Generated by Expert Code Review (on open) for issue #8328 · ● 5.4M

@Evangelink

Copy link
Copy Markdown
MemberAuthor

Copilot address review comments

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

CopilotAI commented May 18, 2026

Copy link
Copy Markdown
Contributor

Copilot address review comments

Done in 2f7223e: addressed the review feedback by fixing the punctuation in CrashDumpResources.resx, regenerating all CrashDump XLF files through the build target, and validating with targeted build/tests plus final validation checks.

@Evangelink
Amaury Levé (Evangelink) merged commit a30cd53 into mainMay 18, 2026
10 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/crashreport-followup branch May 18, 2026 18:30
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.

4 participants

@Evangelink