diff --git a/WORKFLOW.md b/WORKFLOW.md index b96cda1b..17e5399e 100644 --- a/WORKFLOW.md +++ b/WORKFLOW.md @@ -343,13 +343,15 @@ Each is a **MUST**, stated as input -> output plus the failure it prevents. same path and the last to finish overwrites the rest. The `.cobertura.xml` default it writes instead is a name `codecov-cli`'s own file finder does not match (its patterns are `*coverage*.*` and an exact `cobertura.xml`), so the step prefixes each report to `coverage-.cobertura.xml`, keeping the guid that - makes it unique. The extension is pinned at or above **18.9.0**, for two reasons rather than one. Below - 18.1.0 it is built against Microsoft.Testing.Platform 1.x, so an 18.0.x resolution throws a - `TypeLoadException` against the 2.x platform xunit.v3 4.0.0 carries, runs zero tests, and still writes a - well-formed Cobertura file reporting full coverage, leaving only the non-zero exit to say the run reported - nothing. 18.9.0 is then the first release on Microsoft.Testing.Platform 2.3.x, where every test project - writes into the one shared `--results-directory` the invocation names rather than resolving that relative - path per project, which is what the rename loop's glob depends on. + makes it unique. `Directory.Packages.props` pins the extension at or above the compatibility floor the + fleet's `dotnet-codestyle` testing guidance defines + ([`.github/skills/dotnet-codestyle/references/testing.md`](.github/skills/dotnet-codestyle/references/testing.md)), + for two reasons rather than one. First, an older + release is built against the Microsoft.Testing.Platform major version before the one xunit.v3 carries. + It throws a `TypeLoadException` and runs zero tests. It still writes a well-formed Cobertura file + reporting full coverage, so only the non-zero exit says the run reported nothing. Second, the floor is + the first release where every test project writes into the one shared `--results-directory` the + invocation names. The rename loop's glob depends on that, rather than on a path resolved per project. - **D1.3 Lint enforces the editor checks in CI.** Output: `validate-task`'s `lint` job runs CSharpier check, `dotnet format style --verify-no-changes`, `markdownlint-cli2`, `cspell` on the user-facing docs (README, HISTORY), `ruff` and `mypy` over the `RegressionTests` Python tooling, `actionlint` (which shellchecks every @@ -525,7 +527,8 @@ Read the workflow files plus `version.json` and assert the fact behind each appl `test.runner = Microsoft.Testing.Platform`, the unit-test step passes `--coverage --coverage-output-format cobertura` with no `--coverage-output`, and prefixes each report to `coverage-.cobertura.xml` before the upload reads the directory; - `Directory.Packages.props` pins `Microsoft.Testing.Extensions.CodeCoverage` at 18.9.0 or above; + `Directory.Packages.props` pins `Microsoft.Testing.Extensions.CodeCoverage` at or above the compatibility + floor the `dotnet-codestyle` testing guidance defines; `lint` runs CSharpier, `dotnet format style`, markdownlint, cspell on README/HISTORY, ruff, mypy, actionlint, editorconfig-checker; the aggregator `needs:` both and blocks on non-success.