From bb17c3f6a2782183800147a3b4c1952d2c3cede6 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Sat, 20 Jun 2026 07:48:18 -0400 Subject: [PATCH] tests.yml: set group env via shell: bash so GROUP propagates on Windows The "Set test group env" step writes `=` to $GITHUB_ENV with bash syntax but declared no `shell:`, so it ran under the windows runners' default shell (PowerShell). PowerShell does not expand the bash-style "$GITHUB_ENV"; the step wrote to a file literally named $GITHUB_ENV instead of appending to the runner's environment file, so the group env var (e.g. GROUP) was silently never set on Windows. With GROUP unset, a package's runtests.jl falls back to its default group (SciMLTesting's run_tests defaults to "All"), so a matrix entry scheduled as "Core" on windows-latest actually ran every group's folder -- including groups with their own test//Project.toml (e.g. an AD group pulling SciMLSensitivity) -- inside the main test environment. That activated a second project mid-session and upgraded already-loaded packages, producing precompile conflicts (observed in DiffEqCallbacks.jl: OrdinaryDiffEqCorePolyesterExt referencing OrdinaryDiffEqCore._polyester_batch against a stale loaded OrdinaryDiffEqCore) and a windows-only red. Linux/macOS runners default to bash and were unaffected. Add `shell: bash` so $GITHUB_ENV expands on every OS and the group is set correctly on Windows. downgrade.yml is unaffected (it sets GROUP via the step `env:` map, which is shell-independent). Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/tests.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f640da7..a818099 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -185,6 +185,13 @@ jobs: # read e.g. ODEDIFFEQ_TEST_GROUP work the same as the default GROUP. The # name must be dynamic, which the env: map can't express, so write it to # $GITHUB_ENV here. + # + # shell: bash is required: the default shell on windows runners is + # PowerShell, which does not expand the bash-style "$GITHUB_ENV" (it would + # write to a file literally named $GITHUB_ENV instead), so the group env + # var would silently never be set and the package's runtests.jl would fall + # back to its default group (e.g. "All") on Windows only. + shell: bash run: echo "${{ inputs.group-env-name }}=${{ inputs.group }}" >> "$GITHUB_ENV" - name: "Run tests ${{ inputs.self-hosted && '' || format('on {0}', inputs.os) }} with Julia v${{ inputs.julia-version }}"