Merging upstream version 3.4.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
30c21d6b63
commit
e84e03e022
13 changed files with 183 additions and 19 deletions
|
@ -30,6 +30,19 @@ def homedir_mck():
|
|||
yield
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def no_sched_getaffinity():
|
||||
# Simulates an OS without os.sched_getaffinity available (mac/windows)
|
||||
# https://docs.python.org/3/library/os.html#interface-to-the-scheduler
|
||||
with mock.patch.object(
|
||||
os,
|
||||
'sched_getaffinity',
|
||||
create=True,
|
||||
side_effect=AttributeError,
|
||||
):
|
||||
yield
|
||||
|
||||
|
||||
def test_exe_exists_does_not_exist(find_exe_mck, homedir_mck):
|
||||
find_exe_mck.return_value = None
|
||||
assert lang_base.exe_exists('ruby') is False
|
||||
|
@ -116,7 +129,17 @@ def test_no_env_noop(tmp_path):
|
|||
assert before == inside == after
|
||||
|
||||
|
||||
def test_target_concurrency_normal():
|
||||
def test_target_concurrency_sched_getaffinity(no_sched_getaffinity):
|
||||
with mock.patch.object(
|
||||
os,
|
||||
'sched_getaffinity',
|
||||
return_value=set(range(345)),
|
||||
):
|
||||
with mock.patch.dict(os.environ, clear=True):
|
||||
assert lang_base.target_concurrency() == 345
|
||||
|
||||
|
||||
def test_target_concurrency_without_sched_getaffinity(no_sched_getaffinity):
|
||||
with mock.patch.object(multiprocessing, 'cpu_count', return_value=123):
|
||||
with mock.patch.dict(os.environ, {}, clear=True):
|
||||
assert lang_base.target_concurrency() == 123
|
||||
|
@ -134,7 +157,7 @@ def test_target_concurrency_on_travis():
|
|||
assert lang_base.target_concurrency() == 2
|
||||
|
||||
|
||||
def test_target_concurrency_cpu_count_not_implemented():
|
||||
def test_target_concurrency_cpu_count_not_implemented(no_sched_getaffinity):
|
||||
with mock.patch.object(
|
||||
multiprocessing, 'cpu_count', side_effect=NotImplementedError,
|
||||
):
|
||||
|
|
|
@ -128,7 +128,7 @@ def test_local_golang_additional_deps(tmp_path):
|
|||
deps=('golang.org/x/example/hello@latest',),
|
||||
)
|
||||
|
||||
assert ret == (0, b'Hello, Go examples!\n')
|
||||
assert ret == (0, b'Hello, world!\n')
|
||||
|
||||
|
||||
def test_golang_hook_still_works_when_gobin_is_set(tmp_path):
|
||||
|
|
50
tests/languages/haskell_test.py
Normal file
50
tests/languages/haskell_test.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from pre_commit.errors import FatalError
|
||||
from pre_commit.languages import haskell
|
||||
from pre_commit.util import win_exe
|
||||
from testing.language_helpers import run_language
|
||||
|
||||
|
||||
def test_run_example_executable(tmp_path):
|
||||
example_cabal = '''\
|
||||
cabal-version: 2.4
|
||||
name: example
|
||||
version: 0.1.0.0
|
||||
|
||||
executable example
|
||||
main-is: Main.hs
|
||||
|
||||
build-depends: base >=4
|
||||
default-language: Haskell2010
|
||||
'''
|
||||
main_hs = '''\
|
||||
module Main where
|
||||
|
||||
main :: IO ()
|
||||
main = putStrLn "Hello, Haskell!"
|
||||
'''
|
||||
tmp_path.joinpath('example.cabal').write_text(example_cabal)
|
||||
tmp_path.joinpath('Main.hs').write_text(main_hs)
|
||||
|
||||
result = run_language(tmp_path, haskell, 'example')
|
||||
assert result == (0, b'Hello, Haskell!\n')
|
||||
|
||||
# should not symlink things into environments
|
||||
exe = tmp_path.joinpath(win_exe('hs_env-default/bin/example'))
|
||||
assert exe.is_file()
|
||||
assert not exe.is_symlink()
|
||||
|
||||
|
||||
def test_run_dep(tmp_path):
|
||||
result = run_language(tmp_path, haskell, 'hello', deps=['hello'])
|
||||
assert result == (0, b'Hello, World!\n')
|
||||
|
||||
|
||||
def test_run_empty(tmp_path):
|
||||
with pytest.raises(FatalError) as excinfo:
|
||||
run_language(tmp_path, haskell, 'example')
|
||||
msg, = excinfo.value.args
|
||||
assert msg == 'Expected .cabal files or additional_dependencies'
|
|
@ -147,6 +147,15 @@ def test_xargs_retcode_normal():
|
|||
assert ret == 5
|
||||
|
||||
|
||||
@pytest.mark.xfail(sys.platform == 'win32', reason='posix only')
|
||||
def test_xargs_retcode_killed_by_signal():
|
||||
ret, _ = xargs.xargs(
|
||||
parse_shebang.normalize_cmd(('bash', '-c', 'kill -9 $$', '--')),
|
||||
('foo', 'bar'),
|
||||
)
|
||||
assert ret == -9
|
||||
|
||||
|
||||
def test_xargs_concurrency():
|
||||
bash_cmd = parse_shebang.normalize_cmd(('bash', '-c'))
|
||||
print_pid = ('sleep 0.5 && echo $$',)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue