Repository navigation
fix(ci): honor NEXTEST_NO_FAIL_FAST in Rust test runs - #7844
Conversation
Quest-Claim: 2a59f0f97c60eb05
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head 638707f1ae5ae408ef45a0f355110a6a35f83264.
I found no actionable issue. The shared launcher inserts the opt-in flag for both repository runner shapes, preserves explicit fail-fast and max-fail controls, avoids the compile-only conflict, and stops scanning at the test-filter boundary. The new tests exercise the direct and just rs test paths, with the coverage caller checked separately.
Verification: GitHub-only static review of the launcher, its callers, tests, and pinned nextest option definitions. I did not run the test suite or reproduce the macOS behavior.
(Written by review (OpenAI))
|
No actionable comments were generated in the recent review. WalkthroughWhen Merge Risk:
|
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Reviewed the full 638707f diff against d66c892: the launcher change, its behavioral tests, and the quest cleanup.
NEXTEST_NO_FAIL_FASTtranslation —sh/rs/nextest.shinjects--no-fail-fastinto native and llvm-cov nextest runs when the variable is nonempty, while explicit runner options and post---filters stay in control.- Behavioral coverage —
sh/rs/test-lints.test.pydrives a real two-failure fixture through bothjust rs testand the launcher across unset/empty/set, explicit fail-fast/no-fail-fast/max-fail, and compile-only cases;sh/coverage.test.pyasserts the flag reachescargo llvm-cov nextest. - Quest cleanup — removes the completed
quest/m0/ci/no-fail-fast.mdand its README entry.
I also re-ran the positional-slice block on Bash 3.2.57 built from source: it works with both 3 and 5 arguments under set -euo pipefail, so the earlier empty-array concern is resolved.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Problem
The pinned cargo-nextest 0.9.146 ignores
NEXTEST_NO_FAIL_FAST: two failing tests with one worker run only the first test, just like the unset default. Passing--no-fail-fastruns both.Approach
--no-fail-fastin the sharedsh/rs/nextest.shlauncher, for native nextest and llvm-cov nextest runs.--no-runconflicts, and insert before the test-filter--boundary. Other commands keep their arguments.just rs test, extend the coverage caller's test, and remove the completed quest and its parent link.Impact
Alternatives
The pinned runner options have no environment binding for fail-fast. No repository config or dispatcher argument overrides it.
just checkdispatches totest-changed, the Rust selector,just rs test, and this same launcher. Changing the genericsh/local.shgate or adding per-recipe flags would duplicate that shared source. The same-file gate change in moq-dev/moq#7710 is independent.Implementation choices made unattended: treat a nonempty value as opt-in, consistent with the other shell controls; explicit command-line controls take precedence over the environment default.
Validation
NEXTEST_NO_FAIL_FAST=1; the explicit flag ran two. Each run returned nextest's failure exit code 100.--boundary. Coverage passes the flag to llvm-cov; non-nextest argument passthrough was checked separately.NEXTEST_NO_FAIL_FAST=1 quest gate just ci: passed on head 638707f1ae5ae408ef45a0f355110a6a35f83264 in 119 seconds, including 11,618 Rust tests and all selected repository tooling/lints. The known launcher-environment assertion did not reproduce. Flake checks were not selected by this diff, so no uid_map reproduction or full-flake pass is claimed.git diff --check, andquest check --base origin/main: passed.kixtopwith stock Bash 3.2.57, then verified the fixed argument-dispatch block there for opt-in, compile-only, explicit no-fail-fast/max-fail, and--cases. No full macOS suite is claimed.Review
Claude Code / Claude Opus 5.5, medium effort, session
d366cdb0-132c-4781-b1fa-c8477095bfa1, round 2 reviewed 638707f1ae5ae408ef45a0f355110a6a35f83264 against d66c8928339d51eb4c76925ced1490b37a0ec9be: no findings.Round 1 reviewed bebbd78b6e49bd446803119ab3cb4063ea89f661. Both findings are fixed in the reviewed head:
The first attempt at the fixed-head review stopped before launching because Git fetch failed with
git@github.com: Permission denied (publickey); ordinary fetch and push reproduced it. The same review resumed successfully with the authorized per-command HTTPS URL rewrite. Publication reuses existing gh credentials through a temporary credential helper. No persistent Git or remote settings changed.Follow-ups
None. No open implementation, API, wire, or policy decisions.
(Written by GPT-6.1 Sol)