from __future__ import annotations import pytest from pre_commit.errors import FatalError from pre_commit.languages import coursier from testing.language_helpers import run_language def test_coursier_hook(tmp_path): echo_java_json = '''\ { "repositories": ["central"], "dependencies": ["io.get-coursier:echo:latest.stable"] } ''' channel_dir = tmp_path.joinpath('.pre-commit-channel') channel_dir.mkdir() channel_dir.joinpath('echo-java.json').write_text(echo_java_json) ret = run_language( tmp_path, coursier, 'echo-java', args=('Hello', 'World', 'from', 'coursier'), ) assert ret == (0, b'Hello World from coursier\n') def test_coursier_hook_additional_dependencies(tmp_path): ret = run_language( tmp_path, coursier, 'scalafmt --version', deps=('scalafmt:3.6.1',), ) assert ret == (0, b'scalafmt 3.6.1\n') def test_error_if_no_deps_or_channel(tmp_path): with pytest.raises(FatalError) as excinfo: run_language(tmp_path, coursier, 'dne') msg, = excinfo.value.args assert msg == 'expected .pre-commit-channel dir or additional_dependencies'