ci: split into lint + build matrix with warnings-as-errors#66
Merged
Conversation
Replace single-job CI with two: * lint — CSharpier format check + -warnaserror build on net10 * build — matrix across net8.0/net9.0/net10.0, tests + coverage Add concurrency group so superseded PR runs are cancelled. Coverage upload is gated to the net10 matrix entry to avoid duplicate Codecov reports. Integration tests only target net10.0, so the net8/net9 matrix entries run unit tests only (which is the point — catch TFM-specific breakage in the library and unit suite).
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #66 +/- ##
==========================================
- Coverage 99.66% 99.56% -0.10%
==========================================
Files 25 25
Lines 1177 1157 -20
Branches 128 128
==========================================
- Hits 1173 1152 -21
Misses 1 1
- Partials 3 4 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
daniel3303
added a commit
that referenced
this pull request
May 14, 2026
The CI matrix added in #66 silently skipped IntegrationTests on net8/net9 because the project was net10-only. That meant the library's own net8/net9 TFM-conditional code paths (Npgsql.EntityFrameworkCore.PostgreSQL 8.x/9.x) went untested end-to-end. Match the unit Tests project pattern: - <TargetFrameworks>net8.0;net9.0;net10.0</TargetFrameworks> - Conditional package references pinning Npgsql.EFCore to the matching 8.0.11 / 9.0.4 / 10.0.1 release per TFM (same scheme the library uses). - <LangVersion>latest</LangVersion> so the C# 14 compiler is used on every TFM — required because several tests use named arguments inside LINQ expression trees (a C# 14 feature; net8/net9 default to C# 12/13 which emit CS0853). Verified locally: 69 integration tests pass on each TFM.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
lintjob (CSharpier format check +-warnaserrorbuild) and abuildmatrix across net8/net9/net10.concurrencygroup keyed on PR/branch so superseded runs are cancelled (saves Actions minutes and avoids stale status checks).Code changes
.github/workflows/ci.yml— rewritten withlintandbuildjobs, matrix onframework: [net8.0, net9.0, net10.0],concurrencycancel-in-progress, and Codecov upload only on net10.Notes
lintjob usesdotnet csharpier checkagainst the.config/dotnet-tools.jsonmanifest added in chore: add CSharpier and apply one-time format pass #64.dotnet csharpier check .passes,dotnet build -warnaserrorproduces 0 warnings/errors, full test suite passes on net10.