summaryrefslogtreecommitdiffstats
path: root/tests/languages/julia_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/languages/julia_test.py')
-rw-r--r--tests/languages/julia_test.py97
1 files changed, 97 insertions, 0 deletions
diff --git a/tests/languages/julia_test.py b/tests/languages/julia_test.py
new file mode 100644
index 0000000..4ea3c25
--- /dev/null
+++ b/tests/languages/julia_test.py
@@ -0,0 +1,97 @@
+from __future__ import annotations
+
+from pre_commit.languages import julia
+from testing.language_helpers import run_language
+from testing.util import cwd
+
+
+def _make_hook(tmp_path, julia_code):
+ src_dir = tmp_path.joinpath('src')
+ src_dir.mkdir()
+ src_dir.joinpath('main.jl').write_text(julia_code)
+ tmp_path.joinpath('Project.toml').write_text(
+ '[deps]\n'
+ 'Example = "7876af07-990d-54b4-ab0e-23690620f79a"\n',
+ )
+
+
+def test_julia_hook(tmp_path):
+ code = """
+ using Example
+ function main()
+ println("Hello, world!")
+ end
+ main()
+ """
+ _make_hook(tmp_path, code)
+ expected = (0, b'Hello, world!\n')
+ assert run_language(tmp_path, julia, 'src/main.jl') == expected
+
+
+def test_julia_hook_manifest(tmp_path):
+ code = """
+ using Example
+ println(pkgversion(Example))
+ """
+ _make_hook(tmp_path, code)
+
+ tmp_path.joinpath('Manifest.toml').write_text(
+ 'manifest_format = "2.0"\n\n'
+ '[[deps.Example]]\n'
+ 'git-tree-sha1 = "11820aa9c229fd3833d4bd69e5e75ef4e7273bf1"\n'
+ 'uuid = "7876af07-990d-54b4-ab0e-23690620f79a"\n'
+ 'version = "0.5.4"\n',
+ )
+ expected = (0, b'0.5.4\n')
+ assert run_language(tmp_path, julia, 'src/main.jl') == expected
+
+
+def test_julia_hook_args(tmp_path):
+ code = """
+ function main(argv)
+ foreach(println, argv)
+ end
+ main(ARGS)
+ """
+ _make_hook(tmp_path, code)
+ expected = (0, b'--arg1\n--arg2\n')
+ assert run_language(
+ tmp_path, julia, 'src/main.jl --arg1 --arg2',
+ ) == expected
+
+
+def test_julia_hook_additional_deps(tmp_path):
+ code = """
+ using TOML
+ function main()
+ project_file = Base.active_project()
+ dict = TOML.parsefile(project_file)
+ for (k, v) in dict["deps"]
+ println(k, " = ", v)
+ end
+ end
+ main()
+ """
+ _make_hook(tmp_path, code)
+ deps = ('TOML=fa267f1f-6049-4f14-aa54-33bafae1ed76',)
+ ret, out = run_language(tmp_path, julia, 'src/main.jl', deps=deps)
+ assert ret == 0
+ assert b'Example = 7876af07-990d-54b4-ab0e-23690620f79a' in out
+ assert b'TOML = fa267f1f-6049-4f14-aa54-33bafae1ed76' in out
+
+
+def test_julia_repo_local(tmp_path):
+ env_dir = tmp_path.joinpath('envdir')
+ env_dir.mkdir()
+ local_dir = tmp_path.joinpath('local')
+ local_dir.mkdir()
+ local_dir.joinpath('local.jl').write_text(
+ 'using TOML; foreach(println, ARGS)',
+ )
+ with cwd(local_dir):
+ deps = ('TOML=fa267f1f-6049-4f14-aa54-33bafae1ed76',)
+ expected = (0, b'--local-arg1\n--local-arg2\n')
+ assert run_language(
+ env_dir, julia, 'local.jl --local-arg1 --local-arg2',
+ deps=deps, is_local=True,
+ ) == expected