From fcf3b76016b9529b9cda4ad3ba5a640a531da138 Mon Sep 17 00:00:00 2001 From: Defnull <879658+define-null@users.noreply.github.com> Date: Thu, 3 Sep 2026 14:50:40 +0200 Subject: [PATCH] ci: fetch LFS in clippy and heal stale pointers in test Self-hosted jobs share one working tree. Without lfs, actions/checkout sets GIT_LFS_SKIP_SMUDGE=1, so an LFS file that clippy checks out first lands as a pointer and later checkouts never rewrite it. That is why the monad fixture from 0182f4d fails on dev-server-2 with `Error("expected value", line: 1, column: 1)`. `lfs: true` on clippy stops new pointers; `git lfs checkout` in test replaces the ones already on disk from the fetched object cache. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/tests.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index d82dad88..70ea0a34 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -34,6 +34,11 @@ jobs: if: github.event_name == 'push' || !github.event.pull_request.draft steps: - uses: actions/checkout@v4 + with: + # Self-hosted jobs share one working tree. Without lfs, checkout writes new LFS files + # as pointers and later checkouts never rewrite them, so `test` read pointers and the + # query fixtures failed. Objects are cached under .git/lfs, so this is cheap. + lfs: true - uses: dsherret/rust-toolchain-file@v1 - uses: Swatinem/rust-cache@v2 with: @@ -66,6 +71,10 @@ jobs: - uses: actions/checkout@v4 with: lfs: true + # `git lfs fetch` above only fills the object cache. Pointers that an earlier checkout + # without lfs left in the shared working tree are never rewritten by git, so replace + # them from the cache here. + - run: git lfs checkout - uses: dsherret/rust-toolchain-file@v1 - uses: Swatinem/rust-cache@v2 with: