diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9e743bd..ab6f83c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -46,3 +46,6 @@ updates: default-days: 7 commit-message: prefix: chore + ignore: + # The stable branch has no current versioned release; synchronize its commit pin manually. + - dependency-name: dtolnay/rust-toolchain diff --git a/.github/scripts/workflow-policy.test.mjs b/.github/scripts/workflow-policy.test.mjs index 42968a0..14fe9f7 100644 --- a/.github/scripts/workflow-policy.test.mjs +++ b/.github/scripts/workflow-policy.test.mjs @@ -14,6 +14,8 @@ const DEPENDABOT_CONFIG_URL = new URL(".github/dependabot.yml", ROOT_URL); const FALLOW_CONFIG_URL = new URL(".fallowrc.json", ROOT_URL); const PACKAGE_JSON_URL = new URL("package.json", ROOT_URL); const README_URL = new URL("README.md", ROOT_URL); +const RUST_TOOLCHAIN_ACTION = + "dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30"; const WASM_PACK_INSTALL_ACTION = "taiki-e/install-action@43aecc8d72668fbcfe75c31400bc4f890f1c5853"; const WASM_PACK_WORKFLOWS = new Map([ ["bench.yml", " if: matrix.kind == 'node'\n"], @@ -181,6 +183,33 @@ describe("Dependabot policy", () => { /# memchr 2\.8\.3 regressed the performance gate; retry with the next release\.\n\s+- dependency-name: memchr\n\s+versions: \["2\.8\.3"\]/, ); }); + + it("pins the manually managed stable Rust toolchain consistently", async () => { + let consumers = 0; + + for (const entry of await workflowFiles()) { + const workflow = await readFile(new URL(entry.name, WORKFLOWS_URL), "utf8"); + const uses = workflow + .split("\n") + .filter((line) => line.includes("dtolnay/rust-toolchain@")); + consumers += uses.length; + + for (const use of uses) { + assert.ok(use.includes(RUST_TOOLCHAIN_ACTION), `${entry.name}: ${use.trim()}`); + } + } + + assert.ok(consumers > 0, "expected at least one Rust toolchain consumer"); + + const config = await readFile(DEPENDABOT_CONFIG_URL, "utf8"); + const githubActionsStart = config.indexOf(" - package-ecosystem: github-actions\n"); + assert.notEqual(githubActionsStart, -1, "missing GitHub Actions ecosystem"); + const githubActions = config.slice(githubActionsStart); + assert.match( + githubActions, + /# The stable branch has no current versioned release; synchronize its commit pin manually\.\n\s+- dependency-name: dtolnay\/rust-toolchain/, + ); + }); }); describe("Checkout credential policy", () => { diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index cd57073..63c03cc 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -82,10 +82,10 @@ jobs: if: matrix.kind == 'node' run: corepack enable - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 if: matrix.kind == 'rust' - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 if: matrix.kind == 'node' with: targets: wasm32-unknown-unknown diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f86253c..fd29dcd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with: components: clippy, rustfmt - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 @@ -65,7 +65,7 @@ jobs: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - name: Test codec parallel feature run: cargo test -p srcmap-codec --features parallel @@ -82,7 +82,7 @@ jobs: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - name: Check documentation env: RUSTDOCFLAGS: "-D warnings" @@ -103,7 +103,7 @@ jobs: run: | MSRV=$(sed -n 's/^rust-version = "\(.*\)"/\1/p' Cargo.toml | head -1) echo "version=$MSRV" >> "$GITHUB_OUTPUT" - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with: toolchain: ${{ steps.msrv.outputs.version }} - name: Check MSRV @@ -215,7 +215,7 @@ jobs: node-version: 22 - name: Enable Corepack run: corepack enable - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with: targets: wasm32-unknown-unknown - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 @@ -241,7 +241,7 @@ jobs: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - name: Run conformance tests run: cargo test -p srcmap-sourcemap --test conformance @@ -255,7 +255,7 @@ jobs: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - name: Compile examples run: cargo build --examples --workspace @@ -269,7 +269,7 @@ jobs: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - name: Compile benchmarks run: cargo bench --workspace --no-run diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index e334a70..5004286 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -24,7 +24,7 @@ jobs: with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with: components: llvm-tools-preview diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b7a958c..8c04a0e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 @@ -129,7 +129,7 @@ jobs: - name: Install JS dependencies run: corepack pnpm install --ignore-scripts --frozen-lockfile - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with: targets: ${{ matrix.settings.target }} @@ -195,7 +195,7 @@ jobs: with: persist-credentials: false - - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 + - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with: targets: wasm32-unknown-unknown