build(deps): bump rstest from 0.26.1 to 0.27.0 - #2192
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #2192 +/- ##
========================================
Coverage 84.96% 84.96%
========================================
Files 351 351
Lines 30208 30208
Branches 30208 30208
========================================
+ Hits 25665 25667 +2
+ Misses 4171 4169 -2
Partials 372 372 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@dependabot rebase |
0191aa9 to
7d01076
Compare
da2ce7
left a comment
There was a problem hiding this comment.
Reviewed at 7d010760a26188d6e11b1983be8f3f82efceaee3.
Verified on a detached worktree at this exact head (rebased onto develop 89d45145, 0 behind), toolchain rustc 1.100.0-nightly (a69a63265 2026-09-03).
Diff. Cargo.lock only, four lines: rstest and rstest_macros each 0.26.1 to 0.27.0 with new checksums. Both nodes keep their dependency lists unchanged. packages/swarm-coordination-registry and packages/torrent-repository-benchmarking declare rstest = "0" under [dev-dependencies], which 0.27 satisfies, so no manifest edit is needed. cargo tree --workspace -i rstest -e normal,build,dev shows one version in the graph before and after, reached only through those two dev-dependency edges — no duplicate, and nothing rstest-related on a normal-dependency path.
Change set. The packaged crate ships no changelog, so 0.27.0's changes were derived by diffing the 0.26.1 and 0.27.0 sources; the result matches the upstream release notes quoted in the description item for item:
- MSRV raised 1.70.0 to 1.85.0 for both crates — absorbed by the workspace's
rust-version = "1.88". futures-utilnow taken withdefault-features = false; affects only theasync-timeoutinternals.#[values(...)]accepts a doc comment before each entry to name the generated matrix case. This is the only change touching an attribute this workspace uses, and it is purely additive: rstest's own new unit test asserts that an entry without a doc comment still gets the sanitized-expression description, so existing#[values]lists keep their current generated test names.async-timeoutinternals rewritten inrstest/src/timeout.rsfromfutures_util::select!tofutures_util::future::selectwithEitherandpin!. The feature is on by default so this compiles here, but it is only reached by#[timeout].rstest_macrosparser refactors — aMatrixValuestype behind#[values]parsing,TestCaseargs built viaExpressions::take(), aBox<Pat>deref cleanup — all private to the macro crate.- Fixes: fully-qualified
coreimport;mutarguments failing to compile under#[trace];proc-macro-crateraised to 3.4.0 for bazel builds. - Metadata only:
homepageandreadmekeys dropped from both manifests.
Feature tables are unchanged (default = ["async-timeout", "crate-name"] for both crates), and the exported macro surface diffs clean — the pub use list in rstest/src/lib.rs and the proc_macro_attribute list in rstest_macros/src/lib.rs are identical.
Consumers. rstest is used in exactly three files: packages/swarm-coordination-registry/src/statistics/event/handler.rs, packages/torrent-repository-benchmarking/tests/entry/mod.rs and .../tests/repository/mod.rs. The attribute forms in use across them are #[rstest], #[case] and named #[case::name(expr)], #[values(...)] on an argument, #[fixture] on plain synchronous factory functions invoked explicitly as expressions, and #[tokio::test] for async cases. Not used anywhere: #[files], #[timeout], #[future], #[awt], #[once], #[from], #[with], #[default], #[trace], #[by_ref], and the legacy arg => [..] matrix syntax.
Cross-referencing that against the change set: item 3 is the only one that lands on a used attribute and it is additive; items 4 and 6 concern #[timeout] and #[trace], neither of which appears here; the rest are internal or metadata.
Gates at this head, --workspace --all-targets --all-features:
| gate | exit | wall |
|---|---|---|
cargo check |
0 | 8.9s |
cargo clippy … -- -D warnings |
0 | 7.0s |
cargo test |
0 | 144.7s — 57 suites, 2603 passed, 0 failed |
cargo machete --with-metadata |
0 | 7.7s |
cargo deny check bans |
0 | 1.3s |
linter all |
0 | 23.3s |
contrib/dev-tools/git/hooks/pre-commit.sh |
0 | 32.8s — all 6 steps pass |
cargo test --doc --workspace |
0 | 6.2s — 30 passed |
The suite and case totals are identical to two other bumps measured on the same base that do not touch rstest, which is the empirical confirmation that 0.27.0 expands these #[case] and #[values] matrices into exactly the same set of tests 0.26.1 did.
Checklist items a lockfile-only change cannot exercise are non-applicable: no new functionality so no new tests, no public API added so no doc comments, no user-facing behaviour change so no docs update, no new terms for project-words.txt. Title is Conventional Commits, base branch is develop, and the description carries the upstream release notes and changelog.
CI at this head. Every workflow run is green except one: Testing (push) run 34460542869, whose sole failing job is Docker E2E. Green: Testing (pull_request) 34460549625, OS Compatibility 34460549659 / 34460542820, Container 34460549629, Generate Coverage Report (PR) 34460549735, Docs Lint 34460549634 / 34460542839.
That Docker E2E red is #2179's defect, not this bump's. The job log fails at cargo run --bin e2e_tests_runner … with error: no bin target named 'e2e_tests_runner' in default-run packages / help: available bin in 'torrust-tracker-e2e-tools' package, i.e. the missing -p flag described in #2179 (specification in #2194). It reproduces identically on the other two dependabot heads currently open and cannot be affected by a dependency version, since it fails before any test runs. The pull_request run's Docker E2E is skipped by design, because container.yaml covers that event.
|
ACK 7d01076 — rstest 0.27.0: the only 0.27 change touching a used attribute is the additive #[values] doc-comment naming, and check, clippy -D warnings, test (57 suites, 2603 passed, unchanged totals), machete, deny bans, linter all, doctests and the pre-commit hook all green at this head. |
|
@dependabot rebase |
Bumps [rstest](https://github.com/la10736/rstest) from 0.26.1 to 0.27.0. - [Release notes](https://github.com/la10736/rstest/releases) - [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md) - [Commits](la10736/rstest@v0.26.1...v0.27.0) --- updated-dependencies: - dependency-name: rstest dependency-version: 0.27.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
7d01076 to
af62b55
Compare
da2ce7
left a comment
There was a problem hiding this comment.
Re-reviewed at af62b5586b8bf90216237a2a27851889b0c1f3e0 on 2026-09-10, after the rebase onto develop 65a077b5 (merge-base is 65a077b5, 0 behind).
Verified on a detached worktree at this exact head, toolchain rustc 1.100.0-nightly (a69a63265 2026-09-03), cargo 1.100.0-nightly (b2e9d5f9d 2026-09-02).
Rebase. The head moved from 7d010760a26188d6e11b1983be8f3f82efceaee3 to af62b5586b8bf90216237a2a27851889b0c1f3e0 when the branch was rebased from develop 89d45145 onto 65a077b5. The patch itself did not change: git diff 89d45145 7d010760 and git diff 65a077b5 af62b558 produce byte-identical output (875 bytes, 28 lines), so the diff-of-diffs is empty and this is the same change re-parented. Both old and new head are single commits whose only parent is the respective base.
What develop gained in between is #2188 and #2189 — six documentation files plus tests/AGENTS.md and tests/common/workspace.rs, which drops the environment-variable guard from the integration-test fixture in favour of an explicit config path. Nothing in that delta mentions base64, syn or rstest, and it touches no Cargo.toml and no Cargo.lock, so it cannot interact with this bump. The gates below were nonetheless re-run in full at the new head rather than carried over.
Diff. Cargo.lock only, four lines: rstest and rstest_macros each move 0.26.1 to 0.27.0 with new checksums. Both nodes keep their dependency lists unchanged.
API, re-derived from the vendored sources at the locked versions. The packaged crate ships no changelog, so 0.27.0's changes were re-derived by diffing the rstest-0.26.1 / rstest-0.27.0 and rstest_macros-0.26.1 / rstest_macros-0.27.0 sources. The attribute surface this workspace uses is #[rstest], #[fixture], #[case] and named #[case::name(expr)], and #[values(...)], across exactly three files: packages/swarm-coordination-registry/src/statistics/event/handler.rs, packages/torrent-repository-benchmarking/tests/entry/mod.rs and .../tests/repository/mod.rs.
Exactly one 0.27 change lands on that surface, and it is additive. #[values(...)] parsing moves from Expressions to a new MatrixValues type in rstest_macros/src/parse/vlist.rs, which reads a doc comment before each entry and uses it as that matrix case's name. An entry without a doc comment keeps its sanitized-expression description, which rstest's own new unit test in parse/rstest.rs asserts directly (values[2].description() is "2" for a bare 2). Every #[values] list here is bare expressions, so the generated test names are unchanged — corroborated by the test gate, which produces the same 57 suites and 2603 cases as the two sibling heads that keep rstest at 0.26.1.
The rest does not reach this repository: the ::core:: hygiene fixes in render/inject.rs and render/mod.rs, the Box<Pat> deref cleanup in parse/arguments.rs, the last() to next_back() change in utils.rs, the futures-util default-features = false narrowing and the timeout.rs rewrite behind #[timeout], and the proc-macro-crate 3.2.0 to 3.4.0 bump. #[timeout], #[future], #[awt], #[files], #[once], #[with], #[trace] and #[by_ref] are used nowhere here. The exported surface is unchanged: rstest/src/lib.rs's pub use list and rstest_macros/src/lib.rs's proc_macro_attribute entry points diff clean.
MSRV rises from 1.70.0 to 1.85.0 for both crates and is absorbed by the workspace's rust-version = "1.88". Both manifests declare rstest = "0" under [dev-dependencies], which 0.27.0 satisfies, so the lockfile-only change needs no manifest edit.
Gates at this head, all on the server, one shared target directory, the three PRs serialized under a lock:
| gate | exit | wall |
|---|---|---|
cargo check --workspace --all-targets --all-features |
0 | 0.6s |
cargo clippy --workspace --all-targets --all-features -- -D warnings |
0 | 0.7s |
cargo test --workspace --all-targets --all-features |
0 | 129.2s — 57 suites, 2603 passed, 0 failed, 0 ignored |
cargo test --doc --workspace |
0 | 6.3s — 30 passed, 0 failed, 2 ignored |
cargo machete --with-metadata |
0 | 7.3s — no unused dependencies |
cargo deny check bans |
0 | 1.3s — bans ok |
linter all |
0 | 18.9s |
contrib/dev-tools/git/hooks/pre-commit.sh |
0 | 32.9s — all 6 steps pass |
The suite and case totals are identical across all three rebased heads and identical to the previous round, which is the empirical statement that this bump changes no test outcome.
CI at this head.
| workflow (event) | run | conclusion |
|---|---|---|
| Testing (pull_request) | 34498398846 | success |
| Testing (push) | 34498393831 | failure — Docker E2E only |
| Container (pull_request) | 34498398928 | success |
| OS Compatibility (pull_request) | 34498398659 | success |
| OS Compatibility (push) | 34498393871 | success |
| Generate Coverage Report (PR) | 34498398796 | success |
| Docs Lint (pull_request) | 34498398787 | success |
| Docs Lint (push) | 34498393832 | success |
That one red is #2179, not this bump. In each failing run the only failing job is Docker E2E and within it the only failing step is Run E2E Tests; the preceding Build Tracker Image step succeeds and the three qBittorrent steps are skipped as downstream of the failure. The step runs cargo run --bin e2e_tests_runner -- … and cargo answers error: no bin target named 'e2e_tests_runner' in default-run packages, with its own help line naming the owning package: available bin in 'torrust-tracker-e2e-tools' package. That is the missing -p flag #2179 describes, it fails before any test executes, and it reproduces identically on all three rebased dependabot heads. The Docker E2E job is skipped on every pull_request run here because the job's if: guard excludes pull requests whose base is develop or main.
Everything else at this head is green: Unit (nightly), Unit (stable) and Layer Boundary Bans pass in both the push and the pull_request Testing runs.
Bumps rstest from 0.26.1 to 0.27.0.
Release notes
Sourced from rstest's releases.
Changelog
Sourced from rstest's changelog.
Commits
59cd3d1Release 0.27.00821ebctest: Add E2E test for mut arguments with #[trace]509ffeffix:mutarguments with#[trace]043437dfix: Resolve clippy warnings and truncate long test project names9aa8d1afix: Suppress nightly cargo lints in test scaffolding3d3c76cfix: Bump rstest_test MSRV to 1.85 and mark as unpublishedd9ae990chore: Add changelog entry05d4b1afix: Use fully-qualified core import6da56a1Bump msrv to 1.85 also for rstest_reuse (#342)1e9963bAdd CLAUDE.md for Claude Code guidance (#340)