From e7509272b31867c1461d983ddbc49b074ac25adf Mon Sep 17 00:00:00 2001 From: Eric Hanson <5846501+ericphanson@users.noreply.github.com> Date: Mon, 21 Jul 2025 18:16:15 +0200 Subject: [PATCH] Julia: support language_version --- .github/workflows/languages.yaml | 7 ++++++- pre_commit/languages/julia.py | 7 ++++++- tests/languages/julia_test.py | 16 ++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/.github/workflows/languages.yaml b/.github/workflows/languages.yaml index fccf2989..e45332ab 100644 --- a/.github/workflows/languages.yaml +++ b/.github/workflows/languages.yaml @@ -67,7 +67,12 @@ jobs: if: matrix.language == 'haskell' - uses: r-lib/actions/setup-r@v2 if: matrix.os == 'ubuntu-latest' && matrix.language == 'r' - + - uses: julia-actions/install-juliaup@v2 + if: matrix.language == 'julia' + with: + channel: 'release' + - run: juliaup add 1.10.10 + if: matrix.language == 'julia' - name: install deps run: python -mpip install -e . -r requirements-dev.txt - name: run tests diff --git a/pre_commit/languages/julia.py b/pre_commit/languages/julia.py index df91c069..910eb8eb 100644 --- a/pre_commit/languages/julia.py +++ b/pre_commit/languages/julia.py @@ -49,8 +49,13 @@ def run_hook( def get_env_patch(target_dir: str, version: str) -> PatchesT: return ( ('JULIA_LOAD_PATH', target_dir), - # May be set, remove it to not interfer with LOAD_PATH + # May be set, remove it to not interfere with LOAD_PATH ('JULIA_PROJECT', UNSET), + # Only set JULIAUP_CHANNEL if we don't want use the system's default + *( + (('JULIAUP_CHANNEL', version),) + if version not in ('system', 'default') else () + ), ) diff --git a/tests/languages/julia_test.py b/tests/languages/julia_test.py index 4ea3c25b..cefd6833 100644 --- a/tests/languages/julia_test.py +++ b/tests/languages/julia_test.py @@ -28,6 +28,22 @@ def test_julia_hook(tmp_path): assert run_language(tmp_path, julia, 'src/main.jl') == expected +def test_julia_hook_version(tmp_path): + code = """ + using Example + function main() + println("Hello, Julia $(VERSION)!") + end + main() + """ + _make_hook(tmp_path, code) + expected = (0, b'Hello, Julia 1.10.10!\n') + assert run_language( + tmp_path, julia, 'src/main.jl', + version='1.10.10', + ) == expected + + def test_julia_hook_manifest(tmp_path): code = """ using Example