@@ -49,54 +49,83 @@ jobs:
4949 - uses : Swatinem/rust-cache@v2
5050 with :
5151 key : clippy-${{ matrix.label }}
52- - run : cargo clippy --workspace --no-deps ${{ matrix.features }} -- -D warnings
52+ # `--tests --examples` extends the lint sweep to the integration test
53+ # crate (`tako-rs/tests/*.rs`) and every example. Workspace-level
54+ # `pedantic = warn` opts those in too, so `-D warnings` catches
55+ # regressions like the ones surfaced by the v2 release audit (items
56+ # after statements, ignored unit patterns, map_unwrap_or).
57+ - run : cargo clippy --workspace --no-deps --tests --examples ${{ matrix.features }} -- -D warnings
5358
5459 test :
55- name : test (${{ matrix.os }} / ${{ matrix.label }})
60+ name : test (${{ matrix.os }} / ${{ matrix.toolchain }} / ${{ matrix. label }})
5661 runs-on : ${{ matrix.os }}
5762 strategy :
5863 fail-fast : false
5964 matrix :
6065 os : [ubuntu-latest, macos-latest, windows-latest]
66+ toolchain : [stable]
6167 label : [default]
6268 features : [""]
6369 include :
6470 - os : ubuntu-latest
71+ toolchain : stable
6572 label : rich
6673 features : --features "tls,http2,plugins,signals,multipart,simd,protobuf,ip-filter,hmac-signature,json-schema,zstd,client,typed-header,zero-copy-extractors,jwt-simple,file-stream"
6774 - os : ubuntu-latest
75+ toolchain : stable
6876 label : http3
6977 features : --features "tls,http2,http3,plugins,signals"
7078 - os : ubuntu-latest
79+ toolchain : stable
7180 label : all-features
7281 # Regression guard for A1 (compio/tokio !Send mismatch under
7382 # workspace-wide --all-features test-build). Re-fixing the
7483 # gated test bins requires both runtimes resolved at once.
7584 features : --all-features
85+ # Beta toolchain — early-warning for nightly→stable regressions
86+ # picked up by upstream crates.
87+ - os : ubuntu-latest
88+ toolchain : beta
89+ label : default
90+ features : " "
91+ # MSRV pin — make sure the declared `rust-version = "1.95"` actually
92+ # builds AND passes tests. The plain `msrv` job below only builds;
93+ # this one runs the rich feature set under the floor toolchain.
94+ - os : ubuntu-latest
95+ toolchain : " 1.95"
96+ label : msrv-rich
97+ features : --features "tls,http2,plugins,signals,multipart,simd,protobuf,jwt-simple,client,typed-header,zero-copy-extractors,file-stream"
7698 env :
7799 # Tests don't need to break on every clippy nit; only enforce build-warnings
78100 # in build/clippy/doc jobs.
79101 RUSTFLAGS : " "
80102 steps :
81103 - uses : actions/checkout@v4
82- - uses : dtolnay/rust-toolchain@stable
104+ - uses : dtolnay/rust-toolchain@master
105+ with :
106+ toolchain : ${{ matrix.toolchain }}
83107 - uses : Swatinem/rust-cache@v2
84108 with :
85- key : test-${{ matrix.os }}-${{ matrix.label }}
109+ key : test-${{ matrix.os }}-${{ matrix.toolchain }}-${{ matrix. label }}
86110 - run : cargo test --workspace ${{ matrix.features }}
87111
88112 msrv :
89- name : MSRV (latest stable )
113+ name : MSRV build (1.95 )
90114 runs-on : ubuntu-latest
91115 env :
92116 RUSTFLAGS : " "
93117 steps :
94118 - uses : actions/checkout@v4
95- - uses : dtolnay/rust-toolchain@stable
119+ - uses : dtolnay/rust-toolchain@master
120+ with :
121+ toolchain : " 1.95"
96122 - uses : Swatinem/rust-cache@v2
97123 with :
98- key : msrv-stable
99- - run : cargo build --workspace
124+ key : msrv-1.95
125+ # Plain `cargo build` on the declared MSRV — paired with the
126+ # `toolchain: 1.95` row of the test matrix above so we catch both
127+ # compilation errors and behaviour drift at the floor toolchain.
128+ - run : cargo build --workspace --all-features
100129
101130 doc :
102131 name : rustdoc
@@ -107,7 +136,11 @@ jobs:
107136 - uses : Swatinem/rust-cache@v2
108137 with :
109138 key : doc
110- - run : cargo doc --no-deps --workspace --features "tls,http2,http3,plugins,signals,multipart,simd,client,typed-header,zero-copy-extractors,utoipa,async-graphql,grpc"
139+ # `--all-features` catches broken intra-doc links that only appear on
140+ # feature-gated modules (timeout middleware, webtransport, compio
141+ # adapters). `RUSTDOCFLAGS: -D rustdoc::broken-intra-doc-links` from the
142+ # workflow `env` then turns those into hard failures.
143+ - run : cargo doc --no-deps --workspace --all-features
111144
112145 deny :
113146 name : cargo-deny
0 commit comments