Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion TestFx.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<Project Path="src/Platform/Microsoft.Testing.Extensions.TrxReport/Microsoft.Testing.Extensions.TrxReport.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Extensions.VSTestBridge/Microsoft.Testing.Extensions.VSTestBridge.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Platform.AI/Microsoft.Testing.Platform.AI.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Platform.DotnetTestProtocol/Microsoft.Testing.Platform.DotnetTestProtocol.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Platform.Internal.DotnetTest/Microsoft.Testing.Platform.Internal.DotnetTest.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Platform.MSBuild/Microsoft.Testing.Platform.MSBuild.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Platform/Microsoft.Testing.Platform.csproj" />
</Folder>
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,19 @@
<TargetFramework>netstandard2.0</TargetFramework>

<!--
Source-only package: it ships the 'dotnet test' wire-contract source files (ObjectFieldIds.cs + Constants.cs)
as contentFiles so a consumer (the dotnet/sdk 'dotnet test' implementation) compiles them into its OWN
assembly. This keeps a single source of truth for the protocol ids/constants instead of hand-copying them.

DotnetTestProtocolContractCompile=false makes the imported .props skip its <Compile> items: this project only
*packs* the files, it does not compile them. The guarantee that the shared contract compiles standalone is
provided by the dedicated consumer test project
(test/UnitTests/Microsoft.Testing.Platform.DotnetTestProtocolContract.UnitTests), not by this package build.
Internal, source-only package for the 'dotnet test' <-> Microsoft.Testing.Platform integration. It ships
shared source files as contentFiles/cs/any so a consumer (the dotnet/sdk 'dotnet test' implementation)
compiles them into its OWN assembly, keeping a single source of truth instead of hand-copying.

It currently hosts the named-pipe wire contract (ObjectFieldIds.cs + Constants.cs) and is intended to grow to
host the other source shared with dotnet/sdk (e.g. the terminal reporter). The name is deliberately generic
and carries 'Internal' so it is clearly NOT a public API / client library (see also issue #5667, closed
pending a real use case for a public MTP client).

*ContractCompile=false makes the imported .props skip its <Compile> items: this project only *packs* the files,
it does not compile them. The guarantee that each shared contract compiles standalone is provided by its
dedicated consumer test project (e.g.
test/UnitTests/Microsoft.Testing.Platform.DotnetTestProtocolContract.UnitTests), not by this package build.
-->
<IsPackable>true</IsPackable>
<IncludeBuildOutput>false</IncludeBuildOutput>
Expand All @@ -42,7 +47,7 @@
<PackageDescription>
<![CDATA[Microsoft Testing is a set of platform, framework and protocol intended to make it possible to run any test on any target or device.

This package shares - as compiled source - the 'dotnet test' named-pipe wire contract (serializer/field ids and handshake/session/state constants) so that the protocol has a single source of truth across the microsoft/testfx and dotnet/sdk repositories. It is an implementation detail of 'dotnet test' integration and is not intended for direct end-user consumption.]]>
This is an INTERNAL, source-only package: it shares - as compiled source - the pieces of the 'dotnet test' <-> Microsoft.Testing.Platform integration that must stay a single source of truth across the microsoft/testfx and dotnet/sdk repositories (today: the named-pipe wire contract; designed to also host the terminal reporter). It is an implementation detail of 'dotnet test' integration and is NOT intended for direct end-user consumption.]]>
</PackageDescription>
</PropertyGroup>

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Microsoft.Testing.Platform.Internal.DotnetTest

This is an **internal, source-only** package. It shares — **as compiled source** — the pieces of the `dotnet test`
↔ [Microsoft.Testing.Platform](https://www.nuget.org/packages/Microsoft.Testing.Platform) integration that must
stay a **single source of truth** across the [microsoft/testfx](https://github.com/microsoft/testfx) and
[dotnet/sdk](https://github.com/dotnet/sdk) repositories, instead of being hand-copied (where any drift is a silent
break).

> ⚠️ This package is an **implementation detail** of `dotnet test` integration — that is what the `Internal` in the
> name signals. It is `IsShipping=false` (not published to nuget.org) and is **not** intended for direct end-user
> consumption. (A *public* MTP client/orchestration library was proposed in
> [#5667](https://github.com/microsoft/testfx/issues/5667); that is a separate effort, closed pending a real use
> case.)

## What's inside

The package ships shared source files as `contentFiles/cs/any` with `BuildAction=Compile`, so the consumer compiles
them into its **own** assembly and the `internal` types are visible without any `InternalsVisibleTo` plumbing.

Today it ships the `dotnet test` named-pipe **wire contract**:

- `ObjectFieldIds.cs` — serializer ids and per-message field ids.
- `Constants.cs` — handshake property names, execution modes, session-event types, test states and the protocol
version.

It is designed to grow to host the other source shared with `dotnet test` (e.g. the terminal reporter).

## Scope

Only the wire **contract** (ids + constants) is shared today. The message **models** and **serializers** are not
included yet because they still depend on `TestMetadataProperty`
(`Microsoft.Testing.Platform.Extensions.Messages`) and use a different class shape than the SDK's copy; sharing them
requires decoupling/unifying first.
Loading