Skip to content

Commit 897da0a

Browse files
auxesisclaude
andcommitted
ci: install the stack-* cargo tools from the test environment
The import PR moved the cargo tools (nextest, llvm-cov, crap, mutants, fuzz, udeps) from the root mise.toml to mise.test.toml, pinned, so that EQL and protect-ffi stop inheriting them. mise loads that file only in the test environment, so every job here that uses one now sets MISE_ENV: test. This also fixes udeps.yml, which built the floating `latest` cargo-udeps (0.1.61, which needs rustc 1.93) with the runner's rustc 1.92; the test environment pins 0.1.60. `mise run` and `mise x` install whatever tool of the toolset is missing, and mise-action caches only what its own install step installed. So tests-crates (rust), tests-golang (wasi-check), crap-crates and fuzz, whose steps go through `mise run` or `mise x`, drop `install_args` and install the whole test toolset, which then shares one cache. mutants and udeps call their tool directly, so they keep a narrow install. The workflows that read mise.test.toml now list it in their path filters. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PaY5xYydZUWhv8Nex9Sw8a
1 parent a8ce61a commit 897da0a

6 files changed

Lines changed: 43 additions & 8 deletions

File tree

‎.github/workflows/crap-crates.yml‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ on:
2424
- Cargo.toml
2525
- Cargo.lock
2626
- mise.toml
27+
- mise.test.toml
2728
- .cargo-crap.toml
2829
- .github/workflows/crap-crates.yml
2930
# Keep these excludes last so docs-only changes are skipped.
@@ -44,6 +45,12 @@ concurrency:
4445
cancel-in-progress: true
4546

4647
env:
48+
# The cargo tools are pinned in mise.test.toml, which mise loads only in
49+
# the test environment. With no install_args, mise-action installs (and
50+
# caches) the whole test toolset once: `mise run` and `mise x` install any
51+
# tool of the toolset that is missing, uncached, so narrowing the install
52+
# would only move the rest out of the cache.
53+
MISE_ENV: test
4754
RUST_BACKTRACE: full
4855
CARGO_TERM_COLOR: always
4956
CARGO_NET_GIT_FETCH_WITH_CLI: true
@@ -65,7 +72,6 @@ jobs:
6572
version: 2026.4.0
6673
install: true
6774
working_directory: .
68-
install_args: rust cargo:cargo-nextest cargo:cargo-llvm-cov cargo:cargo-crap
6975
cache: true
7076

7177
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
@@ -87,7 +93,6 @@ jobs:
8793
version: 2026.4.0
8894
install: true
8995
working_directory: .
90-
install_args: rust cargo:cargo-nextest cargo:cargo-llvm-cov cargo:cargo-crap
9196
cache: true
9297

9398
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2

‎.github/workflows/fuzz.yml‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ on:
2727
- Cargo.toml
2828
- Cargo.lock
2929
- mise.toml
30+
- mise.test.toml
3031
- .github/workflows/fuzz.yml
3132
# Keep these excludes last so docs-only changes are skipped.
3233
- "!**.md"
@@ -48,6 +49,12 @@ permissions:
4849
contents: read
4950

5051
env:
52+
# The cargo tools are pinned in mise.test.toml, which mise loads only in
53+
# the test environment. With no install_args, mise-action installs (and
54+
# caches) the whole test toolset once: `mise run` and `mise x` install any
55+
# tool of the toolset that is missing, uncached, so narrowing the install
56+
# would only move the rest out of the cache.
57+
MISE_ENV: test
5158
RUST_BACKTRACE: full
5259
CARGO_TERM_COLOR: always
5360
CARGO_NET_GIT_FETCH_WITH_CLI: true
@@ -80,7 +87,6 @@ jobs:
8087
version: 2026.4.0
8188
install: true
8289
working_directory: .
83-
install_args: rust cargo:cargo-fuzz
8490
cache: true
8591

8692
- name: Install the nightly toolchain (cargo-fuzz requires it)
@@ -126,7 +132,6 @@ jobs:
126132
version: 2026.4.0
127133
install: true
128134
working_directory: .
129-
install_args: rust cargo:cargo-fuzz
130135
cache: true
131136

132137
- name: Install the nightly toolchain (cargo-fuzz requires it)

‎.github/workflows/mutants.yml‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ on:
3030
- Cargo.toml
3131
- Cargo.lock
3232
- mise.toml
33+
- mise.test.toml
3334
- .cargo/mutants.toml
3435
- .github/workflows/mutants.yml
3536
# Keep these excludes last so docs-only changes are skipped.
@@ -50,6 +51,12 @@ concurrency:
5051
cancel-in-progress: true
5152

5253
env:
54+
# The cargo tools are pinned in mise.test.toml, which mise loads only in
55+
# the test environment. This job calls cargo-mutants (which runs nextest)
56+
# directly, never through `mise run` or `mise x`, which would install the
57+
# rest of the toolset. So mise-action installs only rust, nextest and
58+
# cargo-mutants.
59+
MISE_ENV: test
5360
RUST_BACKTRACE: full
5461
CARGO_TERM_COLOR: always
5562
CARGO_NET_GIT_FETCH_WITH_CLI: true

‎.github/workflows/tests-crates.yml‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,20 +86,24 @@ jobs:
8686
# `[target.wasm32-unknown-unknown]` rustflags in .cargo/config.toml,
8787
# which the stack-auth-wasm build in `node-bindings` needs.
8888
RUSTFLAGS: "-D warnings"
89+
# nextest is pinned in mise.test.toml, which mise loads only in the
90+
# test environment. See the mise-action step.
91+
MISE_ENV: test
8992
steps:
9093
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
9194
with:
9295
persist-credentials: false
9396

9497
# At the repository root: the root mise.toml pins rust 1.94.1, which the
95-
# trybuild snapshots record. Only the tools this job runs are installed;
96-
# the cargo: tools build from source.
98+
# trybuild snapshots record. No install_args: `mise x` and `mise run`
99+
# install any tool of the toolset that is missing, uncached, so this
100+
# installs (and caches) the whole test toolset once. The cargo: tools
101+
# build from source.
97102
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
98103
with:
99104
version: 2026.4.0
100105
install: true
101106
working_directory: .
102-
install_args: rust cargo:cargo-nextest
103107
cache: true
104108

105109
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2

‎.github/workflows/tests-golang.yml‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ on:
3737
- Cargo.lock
3838
- .cargo/**
3939
- mise.toml
40+
- mise.test.toml
4041
- .github/actions/require-cs-secrets/**
4142
- .github/workflows/tests-golang.yml
4243
# Keep these excludes last so docs-only changes are skipped.
@@ -58,6 +59,7 @@ on:
5859
- Cargo.lock
5960
- .cargo/**
6061
- mise.toml
62+
- mise.test.toml
6163
- .github/actions/require-cs-secrets/**
6264
- .github/workflows/tests-golang.yml
6365
- "!**.md"
@@ -86,6 +88,12 @@ jobs:
8688
name: WASI check, guests and Go (Linux)
8789
runs-on: blacksmith-16vcpu-ubuntu-2204
8890
timeout-minutes: 60
91+
env:
92+
# wasm:guest:test and wasm:auth-guest:test run nextest, which is pinned
93+
# in mise.test.toml. In the test environment mise-action installs (and
94+
# caches) the whole test toolset, which `mise run` would otherwise
95+
# install uncached.
96+
MISE_ENV: test
8997
steps:
9098
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
9199
with:
@@ -96,7 +104,6 @@ jobs:
96104
version: 2026.4.0
97105
install: true
98106
working_directory: .
99-
install_args: rust cargo:cargo-nextest go
100107
cache: true
101108

102109
# The root workspace and both guest workspaces, each with its own

‎.github/workflows/udeps.yml‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ on:
2222
- languages/typescript/packages/stack-auth-wasm/**
2323
- Cargo.toml
2424
- Cargo.lock
25+
- mise.test.toml
2526
- .github/workflows/udeps.yml
2627
# Keep these excludes last so docs-only changes are skipped.
2728
- "!**.md"
@@ -40,6 +41,7 @@ on:
4041
- languages/typescript/packages/stack-auth-wasm/**
4142
- Cargo.toml
4243
- Cargo.lock
44+
- mise.test.toml
4345
- .github/workflows/udeps.yml
4446
- "!**.md"
4547
- "!**.example"
@@ -53,6 +55,11 @@ permissions:
5355
contents: read
5456

5557
env:
58+
# The cargo tools are pinned in mise.test.toml, which mise loads only in
59+
# the test environment. This job calls cargo-udeps directly, never through
60+
# `mise run` or `mise x`, which would install the rest of the toolset. So
61+
# mise-action installs only rust and cargo-udeps.
62+
MISE_ENV: test
5663
RUST_BACKTRACE: full
5764
CARGO_TERM_COLOR: always
5865
CARGO_NET_GIT_FETCH_WITH_CLI: true

0 commit comments

Comments
 (0)