Skip to content
Merged
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
19 changes: 11 additions & 8 deletions WORKFLOW.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 `<guid>.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-<guid>.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
Expand Down Expand Up @@ -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-<guid>.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.
Expand Down
Loading