diff --git a/.github/workflows/languages.yaml b/.github/workflows/languages.yaml index be8963ba..c7ed8c35 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 7559b5ba..3ea0c6e9 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 175622d6..2a5d09e7 100644 --- a/tests/languages/julia_test.py +++ b/tests/languages/julia_test.py @@ -31,6 +31,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_with_startup(tmp_path): depot_path = tmp_path.joinpath('depot') depot_path.joinpath('config').mkdir(parents=True)