diff --git a/.github/workflows/languages.yaml b/.github/workflows/languages.yaml index fccf2989..6b84acc5 100644 --- a/.github/workflows/languages.yaml +++ b/.github/workflows/languages.yaml @@ -67,7 +67,10 @@ 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' + - 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 6d70edd9..0ce31d39 100644 --- a/pre_commit/languages/julia.py +++ b/pre_commit/languages/julia.py @@ -106,7 +106,10 @@ def install_environment( # copy `src` files if they exist src_dir = prefix.path('src') if os.path.isdir(src_dir): - shutil.copytree(src_dir, os.path.join(envdir, 'src')) + shutil.copytree( + src_dir, os.path.join(envdir, 'src'), + dirs_exist_ok=True, + ) # Julia code to instantiate the hook environment julia_code = """ diff --git a/tests/languages/julia_test.py b/tests/languages/julia_test.py index 2c47b1db..ef6a5dcc 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