Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest - #9250

Merged
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package
Jun 19, 2026
Merged

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest#9250
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Renames the cross-repo source-sharing package from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, making it a single, generically-named internal package for the dotnet test ↔ Microsoft.Testing.Platform integration rather than one package per shared contract.

The package is currently unused (not consumed anywhere yet), so the rename is safe.

Why

  • We only have one real consumer for this shared source: dotnet/sdk's dotnet test. There's no need for a package-per-contract; a single package can host everything we share (today the wire contract; soon the terminal reporter).
  • The Internal segment — together with the existing IsShipping=false and DevelopmentDependency=true — makes it unmistakable that this is an implementation detail, not a public client library. (A public MTP client/orchestration NuGet was proposed in Make client for MTP and publish it as nuget #5667; that's a separate effort, now closed pending a concrete use case.)

Changes

  • Package id + folder: …DotnetTestProtocol…Internal.DotnetTest.
  • Updated PACKAGE.md and PackageDescription to describe the generic internal scope.
  • Updated TestFx.slnx.
  • The protocol contract .props (DotnetTestProtocolContract.props) and its standalone consumer test are unchanged — only the package wrapper is renamed.

Verification

dotnet pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg (NonShipping) with both contract files shipped as contentFiles/cs/any/DotnetTestProtocol/*.cs (buildAction="Compile"). No dangling references to the old id remain.

Follow-up

Add the terminal reporter contract (TerminalReporterContract.props + TerminalResources.resx/xlf via a build-extension .props) to this same package once #9249 merges.

…m.Internal.DotnetTest
Make the cross-repo source-sharing package a single, generically-named INTERNAL
package for the 'dotnet test' <-> Microsoft.Testing.Platform integration, instead of
one package per shared contract. The package is currently unused, so the rename is safe.
- Package id/folder: Microsoft.Testing.Platform.DotnetTestProtocol ->
Microsoft.Testing.Platform.Internal.DotnetTest. The 'Internal' segment (plus the
existing IsShipping=false + DevelopmentDependency=true) makes clear it is an
implementation detail, not a public client library (cf. #5667, closed pending a real
use case for a public MTP client).
- It still ships the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) as
contentFiles, and is designed to also host the terminal reporter source.
- Updated PACKAGE.md + PackageDescription; updated TestFx.slnx. The protocol contract
.props and its standalone consumer test are unchanged.
Verified: pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg
(NonShipping) with both contract files as contentFiles/cs/any (buildAction=Compile).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 12:13

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

This PR renames the internal, source-sharing NuGet package used for cross-repo dotnet test ↔ Microsoft.Testing.Platform integration from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, clarifying that it’s a single internal package intended to host multiple shared integration contracts over time.

Changes:

  • Updated the main solution (TestFx.slnx) to reference the renamed package project path.
  • Added the new package’s PACKAGE.md and updated the .csproj description/commentary to reflect the broader “internal dotnet test integration” scope.
  • Removed the old package PACKAGE.md.
Show a summary per file
FileDescription
TestFx.slnxSwitches solution reference to the renamed internal package project path.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/PACKAGE.mdIntroduces updated package readme describing the internal, source-only, cross-repo scope.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csprojUpdates package metadata/commentary for the renamed internal package.
src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/PACKAGE.mdRemoves the old package readme as part of the rename.

Copilot's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:23

  • The XML comment says "*ContractCompile=false" but the actual MSBuild property used by this project is DotnetTestProtocolContractCompile (see the property set on line 31). Updating the comment avoids confusion when someone tries to find the controlling property.
  • Files reviewed: 4/4 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.

Note

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

✅ 21/22 dimensions clean — one NIT only.

#DimensionVerdict
17Documentation Accuracy🔵 1 NIT

NIT — Documentation Accuracy

src/Platform/Microsoft.Testing.Platform/ServerMode/DotnetTest/DotnetTestProtocolContract.props was intentionally left unchanged by this PR, but now carries a stale comment (line 29):

- The Microsoft.Testing.Platform.DotnetTestProtocol package project sets
DotnetTestProtocolContractCompile=false and instead packs ...

After this rename the consumer is Microsoft.Testing.Platform.Internal.DotnetTest, not Microsoft.Testing.Platform.DotnetTestProtocol. A future contributor following the comment will look for the wrong project. Updating this one line in the same PR (or a quick follow-up) would close the gap cleanly.


All other dimensions — contextual assessment:

This PR is a pure package-wrapper rename (folder, .csproj, PACKAGE.md, TestFx.slnx). No logic, no IPC wire format, no public API, no test changes.

  • Public API / Binary Compat (§4) — LGTM. IsShipping=false + explicitly unused → no consumer breakage.
  • IPC Wire Compatibility (§19) — LGTM. Contract files (ObjectFieldIds.cs, Constants.cs) are untouched. The contentFiles/cs/any/DotnetTestProtocol/ subfolder name inside the package is intentionally preserved — it reflects the underlying protocol, not the wrapper package name, and avoids a content-path break for the eventual dotnet/sdk consumer.
  • Build Infrastructure (§20) — LGTM. TestFx.slnx updated. No filtered .slnf referenced the old project (verified), so nothing was missed there.
  • Scope & PR Discipline (§21) — LGTM. Single concern, well-described rationale, cites #5667 for the separate public-API effort.
  • Remaining dimensions (§1–3, §5–16, §18, §22) — N/A for a non-logic, non-test, non-script rename.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EvangelinkAmaury Levé (Evangelink) added the state/needs-review Awaiting review from the team. label Jun 19, 2026

@0101Petr Pokorny (0101) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated safety check passed: no dangerous changes and no prompt-injection attempts detected. Approving as requested. Note: this is a quick safety sanity check, not a full code review.

#9246 extracted the terminal test-run summary strings into the new
TerminalResources.resx and switched TerminalTestReporter to use it, with
the translations carried over (its CI was green). The subsequent
OneLocBuild check-in (#9248) then reset every TerminalResources.*.xlf
entry from state="translated" back to state="new" with the English source
as the target, because the localization database did not yet know about
the freshly added resource.
As a result, all TerminalTestReporter summary output (e.g. "Test run
summary:", and the total/failed/succeeded/skipped labels) rendered in
English regardless of locale, breaking LocalizationTests and
LocalizationFailingTests on every PR built after #9248.
This restores the 13 TerminalResources.*.xlf files to their #9246
(translated) state. A future OneLocBuild run will reconcile them once the
loc database is updated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 13:41
@Evangelink

Copy link
Copy Markdown
MemberAuthor

The failing Debug test legs were not caused by this PR — they are a repo-wide regression affecting every PR built after #9248.

Root cause:#9246 moved the terminal test-run summary strings into the new TerminalResources.resx (translations carried over, CI green). The subsequent OneLocBuild check-in #9248 then reset every TerminalResources.*.xlf entry from state="translated" back to state="new" with the English source as the target, so the summary labels (total/failed/succeeded/skipped, Test run summary:) rendered in English regardless of locale and broke LocalizationTests/LocalizationFailingTests.

I cherry-picked the fix (restore the 13 TerminalResources.*.xlf files to their #9246 translated state) onto this branch so CI is unblocked. The same fix is also proposed standalone in #9252 — once that merges to main, this duplicate commit will drop out on rebase (or feel free to drop it and rely on #9252).

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's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:24

  • The comment refers to "*ContractCompile=false" but the actual property controlling this behavior in this project is DotnetTestProtocolContractCompile. Using the real property name here will make the packing/compile behavior clearer (and searchable) for future maintainers.
  • Files reviewed: 17/17 changed files
  • Comments generated: 14

<file datatype="xml" source-language="en" target-language="de" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="es" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="fr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="it" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="ja" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="tr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
Comment on lines 6 to 8
<source>Aborted</source>
<target state="new">Aborted</target>
<target state="translated">Abgebrochen</target>
<note />
<file datatype="xml" source-language="en" target-language="cs" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
@Evangelink
Amaury Levé (Evangelink) merged commit 35d4e34 into mainJun 19, 2026
14 of 21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the copilot/internal-dotnettest-package branch June 19, 2026 13:51
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-reviewAwaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Evangelink@0101
, '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

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest - #9250

Merged
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package
Jun 19, 2026
Merged

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest#9250
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Renames the cross-repo source-sharing package from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, making it a single, generically-named internal package for the dotnet test ↔ Microsoft.Testing.Platform integration rather than one package per shared contract.

The package is currently unused (not consumed anywhere yet), so the rename is safe.

Why

  • We only have one real consumer for this shared source: dotnet/sdk's dotnet test. There's no need for a package-per-contract; a single package can host everything we share (today the wire contract; soon the terminal reporter).
  • The Internal segment — together with the existing IsShipping=false and DevelopmentDependency=true — makes it unmistakable that this is an implementation detail, not a public client library. (A public MTP client/orchestration NuGet was proposed in Make client for MTP and publish it as nuget #5667; that's a separate effort, now closed pending a concrete use case.)

Changes

  • Package id + folder: …DotnetTestProtocol…Internal.DotnetTest.
  • Updated PACKAGE.md and PackageDescription to describe the generic internal scope.
  • Updated TestFx.slnx.
  • The protocol contract .props (DotnetTestProtocolContract.props) and its standalone consumer test are unchanged — only the package wrapper is renamed.

Verification

dotnet pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg (NonShipping) with both contract files shipped as contentFiles/cs/any/DotnetTestProtocol/*.cs (buildAction="Compile"). No dangling references to the old id remain.

Follow-up

Add the terminal reporter contract (TerminalReporterContract.props + TerminalResources.resx/xlf via a build-extension .props) to this same package once #9249 merges.

…m.Internal.DotnetTest
Make the cross-repo source-sharing package a single, generically-named INTERNAL
package for the 'dotnet test' <-> Microsoft.Testing.Platform integration, instead of
one package per shared contract. The package is currently unused, so the rename is safe.
- Package id/folder: Microsoft.Testing.Platform.DotnetTestProtocol ->
Microsoft.Testing.Platform.Internal.DotnetTest. The 'Internal' segment (plus the
existing IsShipping=false + DevelopmentDependency=true) makes clear it is an
implementation detail, not a public client library (cf. #5667, closed pending a real
use case for a public MTP client).
- It still ships the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) as
contentFiles, and is designed to also host the terminal reporter source.
- Updated PACKAGE.md + PackageDescription; updated TestFx.slnx. The protocol contract
.props and its standalone consumer test are unchanged.
Verified: pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg
(NonShipping) with both contract files as contentFiles/cs/any (buildAction=Compile).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 12:13

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

This PR renames the internal, source-sharing NuGet package used for cross-repo dotnet test ↔ Microsoft.Testing.Platform integration from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, clarifying that it’s a single internal package intended to host multiple shared integration contracts over time.

Changes:

  • Updated the main solution (TestFx.slnx) to reference the renamed package project path.
  • Added the new package’s PACKAGE.md and updated the .csproj description/commentary to reflect the broader “internal dotnet test integration” scope.
  • Removed the old package PACKAGE.md.
Show a summary per file
FileDescription
TestFx.slnxSwitches solution reference to the renamed internal package project path.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/PACKAGE.mdIntroduces updated package readme describing the internal, source-only, cross-repo scope.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csprojUpdates package metadata/commentary for the renamed internal package.
src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/PACKAGE.mdRemoves the old package readme as part of the rename.

Copilot's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:23

  • The XML comment says "*ContractCompile=false" but the actual MSBuild property used by this project is DotnetTestProtocolContractCompile (see the property set on line 31). Updating the comment avoids confusion when someone tries to find the controlling property.
  • Files reviewed: 4/4 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.

Note

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

✅ 21/22 dimensions clean — one NIT only.

#DimensionVerdict
17Documentation Accuracy🔵 1 NIT

NIT — Documentation Accuracy

src/Platform/Microsoft.Testing.Platform/ServerMode/DotnetTest/DotnetTestProtocolContract.props was intentionally left unchanged by this PR, but now carries a stale comment (line 29):

- The Microsoft.Testing.Platform.DotnetTestProtocol package project sets
DotnetTestProtocolContractCompile=false and instead packs ...

After this rename the consumer is Microsoft.Testing.Platform.Internal.DotnetTest, not Microsoft.Testing.Platform.DotnetTestProtocol. A future contributor following the comment will look for the wrong project. Updating this one line in the same PR (or a quick follow-up) would close the gap cleanly.


All other dimensions — contextual assessment:

This PR is a pure package-wrapper rename (folder, .csproj, PACKAGE.md, TestFx.slnx). No logic, no IPC wire format, no public API, no test changes.

  • Public API / Binary Compat (§4) — LGTM. IsShipping=false + explicitly unused → no consumer breakage.
  • IPC Wire Compatibility (§19) — LGTM. Contract files (ObjectFieldIds.cs, Constants.cs) are untouched. The contentFiles/cs/any/DotnetTestProtocol/ subfolder name inside the package is intentionally preserved — it reflects the underlying protocol, not the wrapper package name, and avoids a content-path break for the eventual dotnet/sdk consumer.
  • Build Infrastructure (§20) — LGTM. TestFx.slnx updated. No filtered .slnf referenced the old project (verified), so nothing was missed there.
  • Scope & PR Discipline (§21) — LGTM. Single concern, well-described rationale, cites #5667 for the separate public-API effort.
  • Remaining dimensions (§1–3, §5–16, §18, §22) — N/A for a non-logic, non-test, non-script rename.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EvangelinkAmaury Levé (Evangelink) added the state/needs-review Awaiting review from the team. label Jun 19, 2026

@0101Petr Pokorny (0101) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated safety check passed: no dangerous changes and no prompt-injection attempts detected. Approving as requested. Note: this is a quick safety sanity check, not a full code review.

#9246 extracted the terminal test-run summary strings into the new
TerminalResources.resx and switched TerminalTestReporter to use it, with
the translations carried over (its CI was green). The subsequent
OneLocBuild check-in (#9248) then reset every TerminalResources.*.xlf
entry from state="translated" back to state="new" with the English source
as the target, because the localization database did not yet know about
the freshly added resource.
As a result, all TerminalTestReporter summary output (e.g. "Test run
summary:", and the total/failed/succeeded/skipped labels) rendered in
English regardless of locale, breaking LocalizationTests and
LocalizationFailingTests on every PR built after #9248.
This restores the 13 TerminalResources.*.xlf files to their #9246
(translated) state. A future OneLocBuild run will reconcile them once the
loc database is updated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 13:41
@Evangelink

Copy link
Copy Markdown
MemberAuthor

The failing Debug test legs were not caused by this PR — they are a repo-wide regression affecting every PR built after #9248.

Root cause:#9246 moved the terminal test-run summary strings into the new TerminalResources.resx (translations carried over, CI green). The subsequent OneLocBuild check-in #9248 then reset every TerminalResources.*.xlf entry from state="translated" back to state="new" with the English source as the target, so the summary labels (total/failed/succeeded/skipped, Test run summary:) rendered in English regardless of locale and broke LocalizationTests/LocalizationFailingTests.

I cherry-picked the fix (restore the 13 TerminalResources.*.xlf files to their #9246 translated state) onto this branch so CI is unblocked. The same fix is also proposed standalone in #9252 — once that merges to main, this duplicate commit will drop out on rebase (or feel free to drop it and rely on #9252).

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's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:24

  • The comment refers to "*ContractCompile=false" but the actual property controlling this behavior in this project is DotnetTestProtocolContractCompile. Using the real property name here will make the packing/compile behavior clearer (and searchable) for future maintainers.
  • Files reviewed: 17/17 changed files
  • Comments generated: 14

<file datatype="xml" source-language="en" target-language="de" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="es" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="fr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="it" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="ja" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="tr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
Comment on lines 6 to 8
<source>Aborted</source>
<target state="new">Aborted</target>
<target state="translated">Abgebrochen</target>
<note />
<file datatype="xml" source-language="en" target-language="cs" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
@Evangelink
Amaury Levé (Evangelink) merged commit 35d4e34 into mainJun 19, 2026
14 of 21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the copilot/internal-dotnettest-package branch June 19, 2026 13:51
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-reviewAwaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Evangelink@0101
, '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

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest - #9250

Merged
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package
Jun 19, 2026
Merged

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest#9250
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Renames the cross-repo source-sharing package from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, making it a single, generically-named internal package for the dotnet test ↔ Microsoft.Testing.Platform integration rather than one package per shared contract.

The package is currently unused (not consumed anywhere yet), so the rename is safe.

Why

  • We only have one real consumer for this shared source: dotnet/sdk's dotnet test. There's no need for a package-per-contract; a single package can host everything we share (today the wire contract; soon the terminal reporter).
  • The Internal segment — together with the existing IsShipping=false and DevelopmentDependency=true — makes it unmistakable that this is an implementation detail, not a public client library. (A public MTP client/orchestration NuGet was proposed in Make client for MTP and publish it as nuget #5667; that's a separate effort, now closed pending a concrete use case.)

Changes

  • Package id + folder: …DotnetTestProtocol…Internal.DotnetTest.
  • Updated PACKAGE.md and PackageDescription to describe the generic internal scope.
  • Updated TestFx.slnx.
  • The protocol contract .props (DotnetTestProtocolContract.props) and its standalone consumer test are unchanged — only the package wrapper is renamed.

Verification

dotnet pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg (NonShipping) with both contract files shipped as contentFiles/cs/any/DotnetTestProtocol/*.cs (buildAction="Compile"). No dangling references to the old id remain.

Follow-up

Add the terminal reporter contract (TerminalReporterContract.props + TerminalResources.resx/xlf via a build-extension .props) to this same package once #9249 merges.

…m.Internal.DotnetTest
Make the cross-repo source-sharing package a single, generically-named INTERNAL
package for the 'dotnet test' <-> Microsoft.Testing.Platform integration, instead of
one package per shared contract. The package is currently unused, so the rename is safe.
- Package id/folder: Microsoft.Testing.Platform.DotnetTestProtocol ->
Microsoft.Testing.Platform.Internal.DotnetTest. The 'Internal' segment (plus the
existing IsShipping=false + DevelopmentDependency=true) makes clear it is an
implementation detail, not a public client library (cf. #5667, closed pending a real
use case for a public MTP client).
- It still ships the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) as
contentFiles, and is designed to also host the terminal reporter source.
- Updated PACKAGE.md + PackageDescription; updated TestFx.slnx. The protocol contract
.props and its standalone consumer test are unchanged.
Verified: pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg
(NonShipping) with both contract files as contentFiles/cs/any (buildAction=Compile).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 12:13

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

This PR renames the internal, source-sharing NuGet package used for cross-repo dotnet test ↔ Microsoft.Testing.Platform integration from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, clarifying that it’s a single internal package intended to host multiple shared integration contracts over time.

Changes:

  • Updated the main solution (TestFx.slnx) to reference the renamed package project path.
  • Added the new package’s PACKAGE.md and updated the .csproj description/commentary to reflect the broader “internal dotnet test integration” scope.
  • Removed the old package PACKAGE.md.
Show a summary per file
FileDescription
TestFx.slnxSwitches solution reference to the renamed internal package project path.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/PACKAGE.mdIntroduces updated package readme describing the internal, source-only, cross-repo scope.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csprojUpdates package metadata/commentary for the renamed internal package.
src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/PACKAGE.mdRemoves the old package readme as part of the rename.

Copilot's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:23

  • The XML comment says "*ContractCompile=false" but the actual MSBuild property used by this project is DotnetTestProtocolContractCompile (see the property set on line 31). Updating the comment avoids confusion when someone tries to find the controlling property.
  • Files reviewed: 4/4 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.

Note

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

✅ 21/22 dimensions clean — one NIT only.

#DimensionVerdict
17Documentation Accuracy🔵 1 NIT

NIT — Documentation Accuracy

src/Platform/Microsoft.Testing.Platform/ServerMode/DotnetTest/DotnetTestProtocolContract.props was intentionally left unchanged by this PR, but now carries a stale comment (line 29):

- The Microsoft.Testing.Platform.DotnetTestProtocol package project sets
DotnetTestProtocolContractCompile=false and instead packs ...

After this rename the consumer is Microsoft.Testing.Platform.Internal.DotnetTest, not Microsoft.Testing.Platform.DotnetTestProtocol. A future contributor following the comment will look for the wrong project. Updating this one line in the same PR (or a quick follow-up) would close the gap cleanly.


All other dimensions — contextual assessment:

This PR is a pure package-wrapper rename (folder, .csproj, PACKAGE.md, TestFx.slnx). No logic, no IPC wire format, no public API, no test changes.

  • Public API / Binary Compat (§4) — LGTM. IsShipping=false + explicitly unused → no consumer breakage.
  • IPC Wire Compatibility (§19) — LGTM. Contract files (ObjectFieldIds.cs, Constants.cs) are untouched. The contentFiles/cs/any/DotnetTestProtocol/ subfolder name inside the package is intentionally preserved — it reflects the underlying protocol, not the wrapper package name, and avoids a content-path break for the eventual dotnet/sdk consumer.
  • Build Infrastructure (§20) — LGTM. TestFx.slnx updated. No filtered .slnf referenced the old project (verified), so nothing was missed there.
  • Scope & PR Discipline (§21) — LGTM. Single concern, well-described rationale, cites #5667 for the separate public-API effort.
  • Remaining dimensions (§1–3, §5–16, §18, §22) — N/A for a non-logic, non-test, non-script rename.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EvangelinkAmaury Levé (Evangelink) added the state/needs-review Awaiting review from the team. label Jun 19, 2026

@0101Petr Pokorny (0101) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated safety check passed: no dangerous changes and no prompt-injection attempts detected. Approving as requested. Note: this is a quick safety sanity check, not a full code review.

#9246 extracted the terminal test-run summary strings into the new
TerminalResources.resx and switched TerminalTestReporter to use it, with
the translations carried over (its CI was green). The subsequent
OneLocBuild check-in (#9248) then reset every TerminalResources.*.xlf
entry from state="translated" back to state="new" with the English source
as the target, because the localization database did not yet know about
the freshly added resource.
As a result, all TerminalTestReporter summary output (e.g. "Test run
summary:", and the total/failed/succeeded/skipped labels) rendered in
English regardless of locale, breaking LocalizationTests and
LocalizationFailingTests on every PR built after #9248.
This restores the 13 TerminalResources.*.xlf files to their #9246
(translated) state. A future OneLocBuild run will reconcile them once the
loc database is updated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 13:41
@Evangelink

Copy link
Copy Markdown
MemberAuthor

The failing Debug test legs were not caused by this PR — they are a repo-wide regression affecting every PR built after #9248.

Root cause:#9246 moved the terminal test-run summary strings into the new TerminalResources.resx (translations carried over, CI green). The subsequent OneLocBuild check-in #9248 then reset every TerminalResources.*.xlf entry from state="translated" back to state="new" with the English source as the target, so the summary labels (total/failed/succeeded/skipped, Test run summary:) rendered in English regardless of locale and broke LocalizationTests/LocalizationFailingTests.

I cherry-picked the fix (restore the 13 TerminalResources.*.xlf files to their #9246 translated state) onto this branch so CI is unblocked. The same fix is also proposed standalone in #9252 — once that merges to main, this duplicate commit will drop out on rebase (or feel free to drop it and rely on #9252).

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's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:24

  • The comment refers to "*ContractCompile=false" but the actual property controlling this behavior in this project is DotnetTestProtocolContractCompile. Using the real property name here will make the packing/compile behavior clearer (and searchable) for future maintainers.
  • Files reviewed: 17/17 changed files
  • Comments generated: 14

<file datatype="xml" source-language="en" target-language="de" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="es" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="fr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="it" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="ja" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="tr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
Comment on lines 6 to 8
<source>Aborted</source>
<target state="new">Aborted</target>
<target state="translated">Abgebrochen</target>
<note />
<file datatype="xml" source-language="en" target-language="cs" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
@Evangelink
Amaury Levé (Evangelink) merged commit 35d4e34 into mainJun 19, 2026
14 of 21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the copilot/internal-dotnettest-package branch June 19, 2026 13:51
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-reviewAwaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Evangelink@0101
, '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

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest - #9250

Merged
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package
Jun 19, 2026
Merged

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest#9250
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Renames the cross-repo source-sharing package from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, making it a single, generically-named internal package for the dotnet test ↔ Microsoft.Testing.Platform integration rather than one package per shared contract.

The package is currently unused (not consumed anywhere yet), so the rename is safe.

Why

  • We only have one real consumer for this shared source: dotnet/sdk's dotnet test. There's no need for a package-per-contract; a single package can host everything we share (today the wire contract; soon the terminal reporter).
  • The Internal segment — together with the existing IsShipping=false and DevelopmentDependency=true — makes it unmistakable that this is an implementation detail, not a public client library. (A public MTP client/orchestration NuGet was proposed in Make client for MTP and publish it as nuget #5667; that's a separate effort, now closed pending a concrete use case.)

Changes

  • Package id + folder: …DotnetTestProtocol…Internal.DotnetTest.
  • Updated PACKAGE.md and PackageDescription to describe the generic internal scope.
  • Updated TestFx.slnx.
  • The protocol contract .props (DotnetTestProtocolContract.props) and its standalone consumer test are unchanged — only the package wrapper is renamed.

Verification

dotnet pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg (NonShipping) with both contract files shipped as contentFiles/cs/any/DotnetTestProtocol/*.cs (buildAction="Compile"). No dangling references to the old id remain.

Follow-up

Add the terminal reporter contract (TerminalReporterContract.props + TerminalResources.resx/xlf via a build-extension .props) to this same package once #9249 merges.

…m.Internal.DotnetTest
Make the cross-repo source-sharing package a single, generically-named INTERNAL
package for the 'dotnet test' <-> Microsoft.Testing.Platform integration, instead of
one package per shared contract. The package is currently unused, so the rename is safe.
- Package id/folder: Microsoft.Testing.Platform.DotnetTestProtocol ->
Microsoft.Testing.Platform.Internal.DotnetTest. The 'Internal' segment (plus the
existing IsShipping=false + DevelopmentDependency=true) makes clear it is an
implementation detail, not a public client library (cf. #5667, closed pending a real
use case for a public MTP client).
- It still ships the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) as
contentFiles, and is designed to also host the terminal reporter source.
- Updated PACKAGE.md + PackageDescription; updated TestFx.slnx. The protocol contract
.props and its standalone consumer test are unchanged.
Verified: pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg
(NonShipping) with both contract files as contentFiles/cs/any (buildAction=Compile).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 12:13

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

This PR renames the internal, source-sharing NuGet package used for cross-repo dotnet test ↔ Microsoft.Testing.Platform integration from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, clarifying that it’s a single internal package intended to host multiple shared integration contracts over time.

Changes:

  • Updated the main solution (TestFx.slnx) to reference the renamed package project path.
  • Added the new package’s PACKAGE.md and updated the .csproj description/commentary to reflect the broader “internal dotnet test integration” scope.
  • Removed the old package PACKAGE.md.
Show a summary per file
FileDescription
TestFx.slnxSwitches solution reference to the renamed internal package project path.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/PACKAGE.mdIntroduces updated package readme describing the internal, source-only, cross-repo scope.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csprojUpdates package metadata/commentary for the renamed internal package.
src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/PACKAGE.mdRemoves the old package readme as part of the rename.

Copilot's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:23

  • The XML comment says "*ContractCompile=false" but the actual MSBuild property used by this project is DotnetTestProtocolContractCompile (see the property set on line 31). Updating the comment avoids confusion when someone tries to find the controlling property.
  • Files reviewed: 4/4 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.

Note

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

✅ 21/22 dimensions clean — one NIT only.

#DimensionVerdict
17Documentation Accuracy🔵 1 NIT

NIT — Documentation Accuracy

src/Platform/Microsoft.Testing.Platform/ServerMode/DotnetTest/DotnetTestProtocolContract.props was intentionally left unchanged by this PR, but now carries a stale comment (line 29):

- The Microsoft.Testing.Platform.DotnetTestProtocol package project sets
DotnetTestProtocolContractCompile=false and instead packs ...

After this rename the consumer is Microsoft.Testing.Platform.Internal.DotnetTest, not Microsoft.Testing.Platform.DotnetTestProtocol. A future contributor following the comment will look for the wrong project. Updating this one line in the same PR (or a quick follow-up) would close the gap cleanly.


All other dimensions — contextual assessment:

This PR is a pure package-wrapper rename (folder, .csproj, PACKAGE.md, TestFx.slnx). No logic, no IPC wire format, no public API, no test changes.

  • Public API / Binary Compat (§4) — LGTM. IsShipping=false + explicitly unused → no consumer breakage.
  • IPC Wire Compatibility (§19) — LGTM. Contract files (ObjectFieldIds.cs, Constants.cs) are untouched. The contentFiles/cs/any/DotnetTestProtocol/ subfolder name inside the package is intentionally preserved — it reflects the underlying protocol, not the wrapper package name, and avoids a content-path break for the eventual dotnet/sdk consumer.
  • Build Infrastructure (§20) — LGTM. TestFx.slnx updated. No filtered .slnf referenced the old project (verified), so nothing was missed there.
  • Scope & PR Discipline (§21) — LGTM. Single concern, well-described rationale, cites #5667 for the separate public-API effort.
  • Remaining dimensions (§1–3, §5–16, §18, §22) — N/A for a non-logic, non-test, non-script rename.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EvangelinkAmaury Levé (Evangelink) added the state/needs-review Awaiting review from the team. label Jun 19, 2026

@0101Petr Pokorny (0101) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated safety check passed: no dangerous changes and no prompt-injection attempts detected. Approving as requested. Note: this is a quick safety sanity check, not a full code review.

#9246 extracted the terminal test-run summary strings into the new
TerminalResources.resx and switched TerminalTestReporter to use it, with
the translations carried over (its CI was green). The subsequent
OneLocBuild check-in (#9248) then reset every TerminalResources.*.xlf
entry from state="translated" back to state="new" with the English source
as the target, because the localization database did not yet know about
the freshly added resource.
As a result, all TerminalTestReporter summary output (e.g. "Test run
summary:", and the total/failed/succeeded/skipped labels) rendered in
English regardless of locale, breaking LocalizationTests and
LocalizationFailingTests on every PR built after #9248.
This restores the 13 TerminalResources.*.xlf files to their #9246
(translated) state. A future OneLocBuild run will reconcile them once the
loc database is updated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 13:41
@Evangelink

Copy link
Copy Markdown
MemberAuthor

The failing Debug test legs were not caused by this PR — they are a repo-wide regression affecting every PR built after #9248.

Root cause:#9246 moved the terminal test-run summary strings into the new TerminalResources.resx (translations carried over, CI green). The subsequent OneLocBuild check-in #9248 then reset every TerminalResources.*.xlf entry from state="translated" back to state="new" with the English source as the target, so the summary labels (total/failed/succeeded/skipped, Test run summary:) rendered in English regardless of locale and broke LocalizationTests/LocalizationFailingTests.

I cherry-picked the fix (restore the 13 TerminalResources.*.xlf files to their #9246 translated state) onto this branch so CI is unblocked. The same fix is also proposed standalone in #9252 — once that merges to main, this duplicate commit will drop out on rebase (or feel free to drop it and rely on #9252).

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's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:24

  • The comment refers to "*ContractCompile=false" but the actual property controlling this behavior in this project is DotnetTestProtocolContractCompile. Using the real property name here will make the packing/compile behavior clearer (and searchable) for future maintainers.
  • Files reviewed: 17/17 changed files
  • Comments generated: 14

<file datatype="xml" source-language="en" target-language="de" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="es" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="fr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="it" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="ja" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="tr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
Comment on lines 6 to 8
<source>Aborted</source>
<target state="new">Aborted</target>
<target state="translated">Abgebrochen</target>
<note />
<file datatype="xml" source-language="en" target-language="cs" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
@Evangelink
Amaury Levé (Evangelink) merged commit 35d4e34 into mainJun 19, 2026
14 of 21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the copilot/internal-dotnettest-package branch June 19, 2026 13:51
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-reviewAwaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Evangelink@0101
, '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

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest - #9250

Merged
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package
Jun 19, 2026
Merged

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest#9250
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Renames the cross-repo source-sharing package from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, making it a single, generically-named internal package for the dotnet test ↔ Microsoft.Testing.Platform integration rather than one package per shared contract.

The package is currently unused (not consumed anywhere yet), so the rename is safe.

Why

  • We only have one real consumer for this shared source: dotnet/sdk's dotnet test. There's no need for a package-per-contract; a single package can host everything we share (today the wire contract; soon the terminal reporter).
  • The Internal segment — together with the existing IsShipping=false and DevelopmentDependency=true — makes it unmistakable that this is an implementation detail, not a public client library. (A public MTP client/orchestration NuGet was proposed in Make client for MTP and publish it as nuget #5667; that's a separate effort, now closed pending a concrete use case.)

Changes

  • Package id + folder: …DotnetTestProtocol…Internal.DotnetTest.
  • Updated PACKAGE.md and PackageDescription to describe the generic internal scope.
  • Updated TestFx.slnx.
  • The protocol contract .props (DotnetTestProtocolContract.props) and its standalone consumer test are unchanged — only the package wrapper is renamed.

Verification

dotnet pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg (NonShipping) with both contract files shipped as contentFiles/cs/any/DotnetTestProtocol/*.cs (buildAction="Compile"). No dangling references to the old id remain.

Follow-up

Add the terminal reporter contract (TerminalReporterContract.props + TerminalResources.resx/xlf via a build-extension .props) to this same package once #9249 merges.

…m.Internal.DotnetTest
Make the cross-repo source-sharing package a single, generically-named INTERNAL
package for the 'dotnet test' <-> Microsoft.Testing.Platform integration, instead of
one package per shared contract. The package is currently unused, so the rename is safe.
- Package id/folder: Microsoft.Testing.Platform.DotnetTestProtocol ->
Microsoft.Testing.Platform.Internal.DotnetTest. The 'Internal' segment (plus the
existing IsShipping=false + DevelopmentDependency=true) makes clear it is an
implementation detail, not a public client library (cf. #5667, closed pending a real
use case for a public MTP client).
- It still ships the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) as
contentFiles, and is designed to also host the terminal reporter source.
- Updated PACKAGE.md + PackageDescription; updated TestFx.slnx. The protocol contract
.props and its standalone consumer test are unchanged.
Verified: pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg
(NonShipping) with both contract files as contentFiles/cs/any (buildAction=Compile).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 12:13

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

This PR renames the internal, source-sharing NuGet package used for cross-repo dotnet test ↔ Microsoft.Testing.Platform integration from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, clarifying that it’s a single internal package intended to host multiple shared integration contracts over time.

Changes:

  • Updated the main solution (TestFx.slnx) to reference the renamed package project path.
  • Added the new package’s PACKAGE.md and updated the .csproj description/commentary to reflect the broader “internal dotnet test integration” scope.
  • Removed the old package PACKAGE.md.
Show a summary per file
FileDescription
TestFx.slnxSwitches solution reference to the renamed internal package project path.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/PACKAGE.mdIntroduces updated package readme describing the internal, source-only, cross-repo scope.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csprojUpdates package metadata/commentary for the renamed internal package.
src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/PACKAGE.mdRemoves the old package readme as part of the rename.

Copilot's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:23

  • The XML comment says "*ContractCompile=false" but the actual MSBuild property used by this project is DotnetTestProtocolContractCompile (see the property set on line 31). Updating the comment avoids confusion when someone tries to find the controlling property.
  • Files reviewed: 4/4 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.

Note

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

✅ 21/22 dimensions clean — one NIT only.

#DimensionVerdict
17Documentation Accuracy🔵 1 NIT

NIT — Documentation Accuracy

src/Platform/Microsoft.Testing.Platform/ServerMode/DotnetTest/DotnetTestProtocolContract.props was intentionally left unchanged by this PR, but now carries a stale comment (line 29):

- The Microsoft.Testing.Platform.DotnetTestProtocol package project sets
DotnetTestProtocolContractCompile=false and instead packs ...

After this rename the consumer is Microsoft.Testing.Platform.Internal.DotnetTest, not Microsoft.Testing.Platform.DotnetTestProtocol. A future contributor following the comment will look for the wrong project. Updating this one line in the same PR (or a quick follow-up) would close the gap cleanly.


All other dimensions — contextual assessment:

This PR is a pure package-wrapper rename (folder, .csproj, PACKAGE.md, TestFx.slnx). No logic, no IPC wire format, no public API, no test changes.

  • Public API / Binary Compat (§4) — LGTM. IsShipping=false + explicitly unused → no consumer breakage.
  • IPC Wire Compatibility (§19) — LGTM. Contract files (ObjectFieldIds.cs, Constants.cs) are untouched. The contentFiles/cs/any/DotnetTestProtocol/ subfolder name inside the package is intentionally preserved — it reflects the underlying protocol, not the wrapper package name, and avoids a content-path break for the eventual dotnet/sdk consumer.
  • Build Infrastructure (§20) — LGTM. TestFx.slnx updated. No filtered .slnf referenced the old project (verified), so nothing was missed there.
  • Scope & PR Discipline (§21) — LGTM. Single concern, well-described rationale, cites #5667 for the separate public-API effort.
  • Remaining dimensions (§1–3, §5–16, §18, §22) — N/A for a non-logic, non-test, non-script rename.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EvangelinkAmaury Levé (Evangelink) added the state/needs-review Awaiting review from the team. label Jun 19, 2026

@0101Petr Pokorny (0101) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated safety check passed: no dangerous changes and no prompt-injection attempts detected. Approving as requested. Note: this is a quick safety sanity check, not a full code review.

#9246 extracted the terminal test-run summary strings into the new
TerminalResources.resx and switched TerminalTestReporter to use it, with
the translations carried over (its CI was green). The subsequent
OneLocBuild check-in (#9248) then reset every TerminalResources.*.xlf
entry from state="translated" back to state="new" with the English source
as the target, because the localization database did not yet know about
the freshly added resource.
As a result, all TerminalTestReporter summary output (e.g. "Test run
summary:", and the total/failed/succeeded/skipped labels) rendered in
English regardless of locale, breaking LocalizationTests and
LocalizationFailingTests on every PR built after #9248.
This restores the 13 TerminalResources.*.xlf files to their #9246
(translated) state. A future OneLocBuild run will reconcile them once the
loc database is updated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 13:41
@Evangelink

Copy link
Copy Markdown
MemberAuthor

The failing Debug test legs were not caused by this PR — they are a repo-wide regression affecting every PR built after #9248.

Root cause:#9246 moved the terminal test-run summary strings into the new TerminalResources.resx (translations carried over, CI green). The subsequent OneLocBuild check-in #9248 then reset every TerminalResources.*.xlf entry from state="translated" back to state="new" with the English source as the target, so the summary labels (total/failed/succeeded/skipped, Test run summary:) rendered in English regardless of locale and broke LocalizationTests/LocalizationFailingTests.

I cherry-picked the fix (restore the 13 TerminalResources.*.xlf files to their #9246 translated state) onto this branch so CI is unblocked. The same fix is also proposed standalone in #9252 — once that merges to main, this duplicate commit will drop out on rebase (or feel free to drop it and rely on #9252).

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's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:24

  • The comment refers to "*ContractCompile=false" but the actual property controlling this behavior in this project is DotnetTestProtocolContractCompile. Using the real property name here will make the packing/compile behavior clearer (and searchable) for future maintainers.
  • Files reviewed: 17/17 changed files
  • Comments generated: 14

<file datatype="xml" source-language="en" target-language="de" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="es" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="fr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="it" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="ja" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="tr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
Comment on lines 6 to 8
<source>Aborted</source>
<target state="new">Aborted</target>
<target state="translated">Abgebrochen</target>
<note />
<file datatype="xml" source-language="en" target-language="cs" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
@Evangelink
Amaury Levé (Evangelink) merged commit 35d4e34 into mainJun 19, 2026
14 of 21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the copilot/internal-dotnettest-package branch June 19, 2026 13:51
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-reviewAwaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Evangelink@0101
, '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

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest - #9250

Merged
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package
Jun 19, 2026
Merged

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest#9250
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Renames the cross-repo source-sharing package from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, making it a single, generically-named internal package for the dotnet test ↔ Microsoft.Testing.Platform integration rather than one package per shared contract.

The package is currently unused (not consumed anywhere yet), so the rename is safe.

Why

  • We only have one real consumer for this shared source: dotnet/sdk's dotnet test. There's no need for a package-per-contract; a single package can host everything we share (today the wire contract; soon the terminal reporter).
  • The Internal segment — together with the existing IsShipping=false and DevelopmentDependency=true — makes it unmistakable that this is an implementation detail, not a public client library. (A public MTP client/orchestration NuGet was proposed in Make client for MTP and publish it as nuget #5667; that's a separate effort, now closed pending a concrete use case.)

Changes

  • Package id + folder: …DotnetTestProtocol…Internal.DotnetTest.
  • Updated PACKAGE.md and PackageDescription to describe the generic internal scope.
  • Updated TestFx.slnx.
  • The protocol contract .props (DotnetTestProtocolContract.props) and its standalone consumer test are unchanged — only the package wrapper is renamed.

Verification

dotnet pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg (NonShipping) with both contract files shipped as contentFiles/cs/any/DotnetTestProtocol/*.cs (buildAction="Compile"). No dangling references to the old id remain.

Follow-up

Add the terminal reporter contract (TerminalReporterContract.props + TerminalResources.resx/xlf via a build-extension .props) to this same package once #9249 merges.

…m.Internal.DotnetTest
Make the cross-repo source-sharing package a single, generically-named INTERNAL
package for the 'dotnet test' <-> Microsoft.Testing.Platform integration, instead of
one package per shared contract. The package is currently unused, so the rename is safe.
- Package id/folder: Microsoft.Testing.Platform.DotnetTestProtocol ->
Microsoft.Testing.Platform.Internal.DotnetTest. The 'Internal' segment (plus the
existing IsShipping=false + DevelopmentDependency=true) makes clear it is an
implementation detail, not a public client library (cf. #5667, closed pending a real
use case for a public MTP client).
- It still ships the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) as
contentFiles, and is designed to also host the terminal reporter source.
- Updated PACKAGE.md + PackageDescription; updated TestFx.slnx. The protocol contract
.props and its standalone consumer test are unchanged.
Verified: pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg
(NonShipping) with both contract files as contentFiles/cs/any (buildAction=Compile).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 12:13

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

This PR renames the internal, source-sharing NuGet package used for cross-repo dotnet test ↔ Microsoft.Testing.Platform integration from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, clarifying that it’s a single internal package intended to host multiple shared integration contracts over time.

Changes:

  • Updated the main solution (TestFx.slnx) to reference the renamed package project path.
  • Added the new package’s PACKAGE.md and updated the .csproj description/commentary to reflect the broader “internal dotnet test integration” scope.
  • Removed the old package PACKAGE.md.
Show a summary per file
FileDescription
TestFx.slnxSwitches solution reference to the renamed internal package project path.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/PACKAGE.mdIntroduces updated package readme describing the internal, source-only, cross-repo scope.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csprojUpdates package metadata/commentary for the renamed internal package.
src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/PACKAGE.mdRemoves the old package readme as part of the rename.

Copilot's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:23

  • The XML comment says "*ContractCompile=false" but the actual MSBuild property used by this project is DotnetTestProtocolContractCompile (see the property set on line 31). Updating the comment avoids confusion when someone tries to find the controlling property.
  • Files reviewed: 4/4 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.

Note

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

✅ 21/22 dimensions clean — one NIT only.

#DimensionVerdict
17Documentation Accuracy🔵 1 NIT

NIT — Documentation Accuracy

src/Platform/Microsoft.Testing.Platform/ServerMode/DotnetTest/DotnetTestProtocolContract.props was intentionally left unchanged by this PR, but now carries a stale comment (line 29):

- The Microsoft.Testing.Platform.DotnetTestProtocol package project sets
DotnetTestProtocolContractCompile=false and instead packs ...

After this rename the consumer is Microsoft.Testing.Platform.Internal.DotnetTest, not Microsoft.Testing.Platform.DotnetTestProtocol. A future contributor following the comment will look for the wrong project. Updating this one line in the same PR (or a quick follow-up) would close the gap cleanly.


All other dimensions — contextual assessment:

This PR is a pure package-wrapper rename (folder, .csproj, PACKAGE.md, TestFx.slnx). No logic, no IPC wire format, no public API, no test changes.

  • Public API / Binary Compat (§4) — LGTM. IsShipping=false + explicitly unused → no consumer breakage.
  • IPC Wire Compatibility (§19) — LGTM. Contract files (ObjectFieldIds.cs, Constants.cs) are untouched. The contentFiles/cs/any/DotnetTestProtocol/ subfolder name inside the package is intentionally preserved — it reflects the underlying protocol, not the wrapper package name, and avoids a content-path break for the eventual dotnet/sdk consumer.
  • Build Infrastructure (§20) — LGTM. TestFx.slnx updated. No filtered .slnf referenced the old project (verified), so nothing was missed there.
  • Scope & PR Discipline (§21) — LGTM. Single concern, well-described rationale, cites #5667 for the separate public-API effort.
  • Remaining dimensions (§1–3, §5–16, §18, §22) — N/A for a non-logic, non-test, non-script rename.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EvangelinkAmaury Levé (Evangelink) added the state/needs-review Awaiting review from the team. label Jun 19, 2026

@0101Petr Pokorny (0101) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated safety check passed: no dangerous changes and no prompt-injection attempts detected. Approving as requested. Note: this is a quick safety sanity check, not a full code review.

#9246 extracted the terminal test-run summary strings into the new
TerminalResources.resx and switched TerminalTestReporter to use it, with
the translations carried over (its CI was green). The subsequent
OneLocBuild check-in (#9248) then reset every TerminalResources.*.xlf
entry from state="translated" back to state="new" with the English source
as the target, because the localization database did not yet know about
the freshly added resource.
As a result, all TerminalTestReporter summary output (e.g. "Test run
summary:", and the total/failed/succeeded/skipped labels) rendered in
English regardless of locale, breaking LocalizationTests and
LocalizationFailingTests on every PR built after #9248.
This restores the 13 TerminalResources.*.xlf files to their #9246
(translated) state. A future OneLocBuild run will reconcile them once the
loc database is updated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 13:41
@Evangelink

Copy link
Copy Markdown
MemberAuthor

The failing Debug test legs were not caused by this PR — they are a repo-wide regression affecting every PR built after #9248.

Root cause:#9246 moved the terminal test-run summary strings into the new TerminalResources.resx (translations carried over, CI green). The subsequent OneLocBuild check-in #9248 then reset every TerminalResources.*.xlf entry from state="translated" back to state="new" with the English source as the target, so the summary labels (total/failed/succeeded/skipped, Test run summary:) rendered in English regardless of locale and broke LocalizationTests/LocalizationFailingTests.

I cherry-picked the fix (restore the 13 TerminalResources.*.xlf files to their #9246 translated state) onto this branch so CI is unblocked. The same fix is also proposed standalone in #9252 — once that merges to main, this duplicate commit will drop out on rebase (or feel free to drop it and rely on #9252).

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's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:24

  • The comment refers to "*ContractCompile=false" but the actual property controlling this behavior in this project is DotnetTestProtocolContractCompile. Using the real property name here will make the packing/compile behavior clearer (and searchable) for future maintainers.
  • Files reviewed: 17/17 changed files
  • Comments generated: 14

<file datatype="xml" source-language="en" target-language="de" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="es" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="fr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="it" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="ja" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="tr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
Comment on lines 6 to 8
<source>Aborted</source>
<target state="new">Aborted</target>
<target state="translated">Abgebrochen</target>
<note />
<file datatype="xml" source-language="en" target-language="cs" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
@Evangelink
Amaury Levé (Evangelink) merged commit 35d4e34 into mainJun 19, 2026
14 of 21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the copilot/internal-dotnettest-package branch June 19, 2026 13:51
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-reviewAwaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Evangelink@0101
, '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

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest - #9250

Merged
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package
Jun 19, 2026
Merged

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest#9250
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Renames the cross-repo source-sharing package from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, making it a single, generically-named internal package for the dotnet test ↔ Microsoft.Testing.Platform integration rather than one package per shared contract.

The package is currently unused (not consumed anywhere yet), so the rename is safe.

Why

  • We only have one real consumer for this shared source: dotnet/sdk's dotnet test. There's no need for a package-per-contract; a single package can host everything we share (today the wire contract; soon the terminal reporter).
  • The Internal segment — together with the existing IsShipping=false and DevelopmentDependency=true — makes it unmistakable that this is an implementation detail, not a public client library. (A public MTP client/orchestration NuGet was proposed in Make client for MTP and publish it as nuget #5667; that's a separate effort, now closed pending a concrete use case.)

Changes

  • Package id + folder: …DotnetTestProtocol…Internal.DotnetTest.
  • Updated PACKAGE.md and PackageDescription to describe the generic internal scope.
  • Updated TestFx.slnx.
  • The protocol contract .props (DotnetTestProtocolContract.props) and its standalone consumer test are unchanged — only the package wrapper is renamed.

Verification

dotnet pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg (NonShipping) with both contract files shipped as contentFiles/cs/any/DotnetTestProtocol/*.cs (buildAction="Compile"). No dangling references to the old id remain.

Follow-up

Add the terminal reporter contract (TerminalReporterContract.props + TerminalResources.resx/xlf via a build-extension .props) to this same package once #9249 merges.

…m.Internal.DotnetTest
Make the cross-repo source-sharing package a single, generically-named INTERNAL
package for the 'dotnet test' <-> Microsoft.Testing.Platform integration, instead of
one package per shared contract. The package is currently unused, so the rename is safe.
- Package id/folder: Microsoft.Testing.Platform.DotnetTestProtocol ->
Microsoft.Testing.Platform.Internal.DotnetTest. The 'Internal' segment (plus the
existing IsShipping=false + DevelopmentDependency=true) makes clear it is an
implementation detail, not a public client library (cf. #5667, closed pending a real
use case for a public MTP client).
- It still ships the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) as
contentFiles, and is designed to also host the terminal reporter source.
- Updated PACKAGE.md + PackageDescription; updated TestFx.slnx. The protocol contract
.props and its standalone consumer test are unchanged.
Verified: pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg
(NonShipping) with both contract files as contentFiles/cs/any (buildAction=Compile).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 12:13

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

This PR renames the internal, source-sharing NuGet package used for cross-repo dotnet test ↔ Microsoft.Testing.Platform integration from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, clarifying that it’s a single internal package intended to host multiple shared integration contracts over time.

Changes:

  • Updated the main solution (TestFx.slnx) to reference the renamed package project path.
  • Added the new package’s PACKAGE.md and updated the .csproj description/commentary to reflect the broader “internal dotnet test integration” scope.
  • Removed the old package PACKAGE.md.
Show a summary per file
FileDescription
TestFx.slnxSwitches solution reference to the renamed internal package project path.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/PACKAGE.mdIntroduces updated package readme describing the internal, source-only, cross-repo scope.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csprojUpdates package metadata/commentary for the renamed internal package.
src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/PACKAGE.mdRemoves the old package readme as part of the rename.

Copilot's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:23

  • The XML comment says "*ContractCompile=false" but the actual MSBuild property used by this project is DotnetTestProtocolContractCompile (see the property set on line 31). Updating the comment avoids confusion when someone tries to find the controlling property.
  • Files reviewed: 4/4 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.

Note

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

✅ 21/22 dimensions clean — one NIT only.

#DimensionVerdict
17Documentation Accuracy🔵 1 NIT

NIT — Documentation Accuracy

src/Platform/Microsoft.Testing.Platform/ServerMode/DotnetTest/DotnetTestProtocolContract.props was intentionally left unchanged by this PR, but now carries a stale comment (line 29):

- The Microsoft.Testing.Platform.DotnetTestProtocol package project sets
DotnetTestProtocolContractCompile=false and instead packs ...

After this rename the consumer is Microsoft.Testing.Platform.Internal.DotnetTest, not Microsoft.Testing.Platform.DotnetTestProtocol. A future contributor following the comment will look for the wrong project. Updating this one line in the same PR (or a quick follow-up) would close the gap cleanly.


All other dimensions — contextual assessment:

This PR is a pure package-wrapper rename (folder, .csproj, PACKAGE.md, TestFx.slnx). No logic, no IPC wire format, no public API, no test changes.

  • Public API / Binary Compat (§4) — LGTM. IsShipping=false + explicitly unused → no consumer breakage.
  • IPC Wire Compatibility (§19) — LGTM. Contract files (ObjectFieldIds.cs, Constants.cs) are untouched. The contentFiles/cs/any/DotnetTestProtocol/ subfolder name inside the package is intentionally preserved — it reflects the underlying protocol, not the wrapper package name, and avoids a content-path break for the eventual dotnet/sdk consumer.
  • Build Infrastructure (§20) — LGTM. TestFx.slnx updated. No filtered .slnf referenced the old project (verified), so nothing was missed there.
  • Scope & PR Discipline (§21) — LGTM. Single concern, well-described rationale, cites #5667 for the separate public-API effort.
  • Remaining dimensions (§1–3, §5–16, §18, §22) — N/A for a non-logic, non-test, non-script rename.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EvangelinkAmaury Levé (Evangelink) added the state/needs-review Awaiting review from the team. label Jun 19, 2026

@0101Petr Pokorny (0101) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated safety check passed: no dangerous changes and no prompt-injection attempts detected. Approving as requested. Note: this is a quick safety sanity check, not a full code review.

#9246 extracted the terminal test-run summary strings into the new
TerminalResources.resx and switched TerminalTestReporter to use it, with
the translations carried over (its CI was green). The subsequent
OneLocBuild check-in (#9248) then reset every TerminalResources.*.xlf
entry from state="translated" back to state="new" with the English source
as the target, because the localization database did not yet know about
the freshly added resource.
As a result, all TerminalTestReporter summary output (e.g. "Test run
summary:", and the total/failed/succeeded/skipped labels) rendered in
English regardless of locale, breaking LocalizationTests and
LocalizationFailingTests on every PR built after #9248.
This restores the 13 TerminalResources.*.xlf files to their #9246
(translated) state. A future OneLocBuild run will reconcile them once the
loc database is updated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 13:41
@Evangelink

Copy link
Copy Markdown
MemberAuthor

The failing Debug test legs were not caused by this PR — they are a repo-wide regression affecting every PR built after #9248.

Root cause:#9246 moved the terminal test-run summary strings into the new TerminalResources.resx (translations carried over, CI green). The subsequent OneLocBuild check-in #9248 then reset every TerminalResources.*.xlf entry from state="translated" back to state="new" with the English source as the target, so the summary labels (total/failed/succeeded/skipped, Test run summary:) rendered in English regardless of locale and broke LocalizationTests/LocalizationFailingTests.

I cherry-picked the fix (restore the 13 TerminalResources.*.xlf files to their #9246 translated state) onto this branch so CI is unblocked. The same fix is also proposed standalone in #9252 — once that merges to main, this duplicate commit will drop out on rebase (or feel free to drop it and rely on #9252).

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's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:24

  • The comment refers to "*ContractCompile=false" but the actual property controlling this behavior in this project is DotnetTestProtocolContractCompile. Using the real property name here will make the packing/compile behavior clearer (and searchable) for future maintainers.
  • Files reviewed: 17/17 changed files
  • Comments generated: 14

<file datatype="xml" source-language="en" target-language="de" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="es" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="fr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="it" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="ja" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="tr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
Comment on lines 6 to 8
<source>Aborted</source>
<target state="new">Aborted</target>
<target state="translated">Abgebrochen</target>
<note />
<file datatype="xml" source-language="en" target-language="cs" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
@Evangelink
Amaury Levé (Evangelink) merged commit 35d4e34 into mainJun 19, 2026
14 of 21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the copilot/internal-dotnettest-package branch June 19, 2026 13:51
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-reviewAwaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Evangelink@0101
, '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

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest - #9250

Merged
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package
Jun 19, 2026
Merged

Rename DotnetTestProtocol source package to Microsoft.Testing.Platform.Internal.DotnetTest#9250
Amaury Levé (Evangelink) merged 4 commits into
mainfrom
copilot/internal-dotnettest-package

Conversation

@Evangelink

Copy link
Copy Markdown
Member

What

Renames the cross-repo source-sharing package from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, making it a single, generically-named internal package for the dotnet test ↔ Microsoft.Testing.Platform integration rather than one package per shared contract.

The package is currently unused (not consumed anywhere yet), so the rename is safe.

Why

  • We only have one real consumer for this shared source: dotnet/sdk's dotnet test. There's no need for a package-per-contract; a single package can host everything we share (today the wire contract; soon the terminal reporter).
  • The Internal segment — together with the existing IsShipping=false and DevelopmentDependency=true — makes it unmistakable that this is an implementation detail, not a public client library. (A public MTP client/orchestration NuGet was proposed in Make client for MTP and publish it as nuget #5667; that's a separate effort, now closed pending a concrete use case.)

Changes

  • Package id + folder: …DotnetTestProtocol…Internal.DotnetTest.
  • Updated PACKAGE.md and PackageDescription to describe the generic internal scope.
  • Updated TestFx.slnx.
  • The protocol contract .props (DotnetTestProtocolContract.props) and its standalone consumer test are unchanged — only the package wrapper is renamed.

Verification

dotnet pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg (NonShipping) with both contract files shipped as contentFiles/cs/any/DotnetTestProtocol/*.cs (buildAction="Compile"). No dangling references to the old id remain.

Follow-up

Add the terminal reporter contract (TerminalReporterContract.props + TerminalResources.resx/xlf via a build-extension .props) to this same package once #9249 merges.

…m.Internal.DotnetTest
Make the cross-repo source-sharing package a single, generically-named INTERNAL
package for the 'dotnet test' <-> Microsoft.Testing.Platform integration, instead of
one package per shared contract. The package is currently unused, so the rename is safe.
- Package id/folder: Microsoft.Testing.Platform.DotnetTestProtocol ->
Microsoft.Testing.Platform.Internal.DotnetTest. The 'Internal' segment (plus the
existing IsShipping=false + DevelopmentDependency=true) makes clear it is an
implementation detail, not a public client library (cf. #5667, closed pending a real
use case for a public MTP client).
- It still ships the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) as
contentFiles, and is designed to also host the terminal reporter source.
- Updated PACKAGE.md + PackageDescription; updated TestFx.slnx. The protocol contract
.props and its standalone consumer test are unchanged.
Verified: pack produces Microsoft.Testing.Platform.Internal.DotnetTest.2.3.0-dev.nupkg
(NonShipping) with both contract files as contentFiles/cs/any (buildAction=Compile).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 12:13

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

This PR renames the internal, source-sharing NuGet package used for cross-repo dotnet test ↔ Microsoft.Testing.Platform integration from Microsoft.Testing.Platform.DotnetTestProtocol to Microsoft.Testing.Platform.Internal.DotnetTest, clarifying that it’s a single internal package intended to host multiple shared integration contracts over time.

Changes:

  • Updated the main solution (TestFx.slnx) to reference the renamed package project path.
  • Added the new package’s PACKAGE.md and updated the .csproj description/commentary to reflect the broader “internal dotnet test integration” scope.
  • Removed the old package PACKAGE.md.
Show a summary per file
FileDescription
TestFx.slnxSwitches solution reference to the renamed internal package project path.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/PACKAGE.mdIntroduces updated package readme describing the internal, source-only, cross-repo scope.
src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csprojUpdates package metadata/commentary for the renamed internal package.
src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/PACKAGE.mdRemoves the old package readme as part of the rename.

Copilot's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:23

  • The XML comment says "*ContractCompile=false" but the actual MSBuild property used by this project is DotnetTestProtocolContractCompile (see the property set on line 31). Updating the comment avoids confusion when someone tries to find the controlling property.
  • Files reviewed: 4/4 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.

Note

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

✅ 21/22 dimensions clean — one NIT only.

#DimensionVerdict
17Documentation Accuracy🔵 1 NIT

NIT — Documentation Accuracy

src/Platform/Microsoft.Testing.Platform/ServerMode/DotnetTest/DotnetTestProtocolContract.props was intentionally left unchanged by this PR, but now carries a stale comment (line 29):

- The Microsoft.Testing.Platform.DotnetTestProtocol package project sets
DotnetTestProtocolContractCompile=false and instead packs ...

After this rename the consumer is Microsoft.Testing.Platform.Internal.DotnetTest, not Microsoft.Testing.Platform.DotnetTestProtocol. A future contributor following the comment will look for the wrong project. Updating this one line in the same PR (or a quick follow-up) would close the gap cleanly.


All other dimensions — contextual assessment:

This PR is a pure package-wrapper rename (folder, .csproj, PACKAGE.md, TestFx.slnx). No logic, no IPC wire format, no public API, no test changes.

  • Public API / Binary Compat (§4) — LGTM. IsShipping=false + explicitly unused → no consumer breakage.
  • IPC Wire Compatibility (§19) — LGTM. Contract files (ObjectFieldIds.cs, Constants.cs) are untouched. The contentFiles/cs/any/DotnetTestProtocol/ subfolder name inside the package is intentionally preserved — it reflects the underlying protocol, not the wrapper package name, and avoids a content-path break for the eventual dotnet/sdk consumer.
  • Build Infrastructure (§20) — LGTM. TestFx.slnx updated. No filtered .slnf referenced the old project (verified), so nothing was missed there.
  • Scope & PR Discipline (§21) — LGTM. Single concern, well-described rationale, cites #5667 for the separate public-API effort.
  • Remaining dimensions (§1–3, §5–16, §18, §22) — N/A for a non-logic, non-test, non-script rename.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EvangelinkAmaury Levé (Evangelink) added the state/needs-review Awaiting review from the team. label Jun 19, 2026

@0101Petr Pokorny (0101) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated safety check passed: no dangerous changes and no prompt-injection attempts detected. Approving as requested. Note: this is a quick safety sanity check, not a full code review.

#9246 extracted the terminal test-run summary strings into the new
TerminalResources.resx and switched TerminalTestReporter to use it, with
the translations carried over (its CI was green). The subsequent
OneLocBuild check-in (#9248) then reset every TerminalResources.*.xlf
entry from state="translated" back to state="new" with the English source
as the target, because the localization database did not yet know about
the freshly added resource.
As a result, all TerminalTestReporter summary output (e.g. "Test run
summary:", and the total/failed/succeeded/skipped labels) rendered in
English regardless of locale, breaking LocalizationTests and
LocalizationFailingTests on every PR built after #9248.
This restores the 13 TerminalResources.*.xlf files to their #9246
(translated) state. A future OneLocBuild run will reconcile them once the
loc database is updated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 19, 2026 13:41
@Evangelink

Copy link
Copy Markdown
MemberAuthor

The failing Debug test legs were not caused by this PR — they are a repo-wide regression affecting every PR built after #9248.

Root cause:#9246 moved the terminal test-run summary strings into the new TerminalResources.resx (translations carried over, CI green). The subsequent OneLocBuild check-in #9248 then reset every TerminalResources.*.xlf entry from state="translated" back to state="new" with the English source as the target, so the summary labels (total/failed/succeeded/skipped, Test run summary:) rendered in English regardless of locale and broke LocalizationTests/LocalizationFailingTests.

I cherry-picked the fix (restore the 13 TerminalResources.*.xlf files to their #9246 translated state) onto this branch so CI is unblocked. The same fix is also proposed standalone in #9252 — once that merges to main, this duplicate commit will drop out on rebase (or feel free to drop it and rely on #9252).

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's findings

Comments suppressed due to low confidence (1)

src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj:24

  • The comment refers to "*ContractCompile=false" but the actual property controlling this behavior in this project is DotnetTestProtocolContractCompile. Using the real property name here will make the packing/compile behavior clearer (and searchable) for future maintainers.
  • Files reviewed: 17/17 changed files
  • Comments generated: 14

<file datatype="xml" source-language="en" target-language="de" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="es" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="fr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="it" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="ja" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="tr" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
Comment on lines 6 to 8
<source>Aborted</source>
<target state="new">Aborted</target>
<target state="translated">Abgebrochen</target>
<note />
<file datatype="xml" source-language="en" target-language="cs" original="../TerminalResources.resx">
<body>
<trans-unit id="Aborted">
<trans-unit id="Aborted">
@Evangelink
Amaury Levé (Evangelink) merged commit 35d4e34 into mainJun 19, 2026
14 of 21 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the copilot/internal-dotnettest-package branch June 19, 2026 13:51
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-reviewAwaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Evangelink@0101