Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use covdefaults to handle coveragerc #1349

Merged
merged 1 commit into from
Feb 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
37 changes: 0 additions & 37 deletions .coveragerc

This file was deleted.

3 changes: 0 additions & 3 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ jobs:
parameters:
toxenvs: [py37]
os: windows
additional_variables:
COVERAGE_IGNORE_WINDOWS: '# pragma: windows no cover'
TOX_TESTENV_PASSENV: COVERAGE_IGNORE_WINDOWS
pre_test:
- powershell: Write-Host "##vso[task.prependpath]$env:CONDA\Scripts"
displayName: Add conda to PATH
Expand Down
2 changes: 1 addition & 1 deletion pre_commit/color.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def bool_errcheck(result, func, args):
terminal_supports_color = False
else:
terminal_supports_color = True
else: # pragma: windows no cover
else: # pragma: win32 no cover
terminal_supports_color = True

RED = '\033[41m'
Expand Down
2 changes: 1 addition & 1 deletion pre_commit/commands/install_uninstall.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def _hook_paths(


def is_our_script(filename: str) -> bool:
if not os.path.exists(filename): # pragma: windows no cover (symlink)
if not os.path.exists(filename): # pragma: win32 no cover (symlink)
return False
with open(filename) as f:
contents = f.read()
Expand Down
2 changes: 1 addition & 1 deletion pre_commit/file_lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def _locked(
# before closing a file or exiting the program."
# TODO: https://github.com/python/typeshed/pull/3607
msvcrt.locking(fileno, msvcrt.LK_UNLCK, _region) # type: ignore
else: # pragma: windows no cover
else: # pragma: win32 no cover
import fcntl

@contextlib.contextmanager
Expand Down
18 changes: 9 additions & 9 deletions pre_commit/languages/docker.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@
healthy = helpers.basic_healthy


def md5(s: str) -> str: # pragma: windows no cover
def md5(s: str) -> str: # pragma: win32 no cover
return hashlib.md5(s.encode()).hexdigest()


def docker_tag(prefix: Prefix) -> str: # pragma: windows no cover
def docker_tag(prefix: Prefix) -> str: # pragma: win32 no cover
md5sum = md5(os.path.basename(prefix.prefix_dir)).lower()
return f'pre-commit-{md5sum}'


def docker_is_running() -> bool: # pragma: windows no cover
def docker_is_running() -> bool: # pragma: win32 no cover
try:
cmd_output_b('docker', 'ps')
except CalledProcessError:
Expand All @@ -35,7 +35,7 @@ def docker_is_running() -> bool: # pragma: windows no cover
return True


def assert_docker_available() -> None: # pragma: windows no cover
def assert_docker_available() -> None: # pragma: win32 no cover
assert docker_is_running(), (
'Docker is either not running or not configured in this environment'
)
Expand All @@ -45,7 +45,7 @@ def build_docker_image(
prefix: Prefix,
*,
pull: bool,
) -> None: # pragma: windows no cover
) -> None: # pragma: win32 no cover
cmd: Tuple[str, ...] = (
'docker', 'build',
'--tag', docker_tag(prefix),
Expand All @@ -60,7 +60,7 @@ def build_docker_image(

def install_environment(
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
) -> None: # pragma: windows no cover
) -> None: # pragma: win32 no cover
helpers.assert_version_default('docker', version)
helpers.assert_no_additional_deps('docker', additional_dependencies)
assert_docker_available()
Expand All @@ -76,14 +76,14 @@ def install_environment(
os.mkdir(directory)


def get_docker_user() -> str: # pragma: windows no cover
def get_docker_user() -> str: # pragma: win32 no cover
try:
return f'{os.getuid()}:{os.getgid()}'
except AttributeError:
return '1000:1000'


def docker_cmd() -> Tuple[str, ...]: # pragma: windows no cover
def docker_cmd() -> Tuple[str, ...]: # pragma: win32 no cover
return (
'docker', 'run',
'--rm',
Expand All @@ -100,7 +100,7 @@ def run_hook(
hook: Hook,
file_args: Sequence[str],
color: bool,
) -> Tuple[int, bytes]: # pragma: windows no cover
) -> Tuple[int, bytes]: # pragma: win32 no cover
assert_docker_available()
# Rebuild the docker image in case it has gone missing, as many people do
# automated cleanup of docker images.
Expand Down
2 changes: 1 addition & 1 deletion pre_commit/languages/docker_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def run_hook(
hook: Hook,
file_args: Sequence[str],
color: bool,
) -> Tuple[int, bytes]: # pragma: windows no cover
) -> Tuple[int, bytes]: # pragma: win32 no cover
assert_docker_available()
cmd = docker_cmd() + hook.cmd
return helpers.run_xargs(hook, cmd, file_args, color=color)
2 changes: 1 addition & 1 deletion pre_commit/languages/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def get_env_patch(venv: str) -> PatchesT:
elif sys.platform == 'win32': # pragma: no cover
install_prefix = bin_dir(venv)
lib_dir = 'Scripts'
else: # pragma: windows no cover
else: # pragma: win32 no cover
install_prefix = venv
lib_dir = 'lib'
return (
Expand Down
12 changes: 6 additions & 6 deletions pre_commit/languages/ruby.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
def get_env_patch(
venv: str,
language_version: str,
) -> PatchesT: # pragma: windows no cover
) -> PatchesT: # pragma: win32 no cover
patches: PatchesT = (
('GEM_HOME', os.path.join(venv, 'gems')),
('RBENV_ROOT', venv),
Expand All @@ -43,7 +43,7 @@ def get_env_patch(
return patches


@contextlib.contextmanager # pragma: windows no cover
@contextlib.contextmanager # pragma: win32 no cover
def in_env(
prefix: Prefix,
language_version: str,
Expand All @@ -64,7 +64,7 @@ def _extract_resource(filename: str, dest: str) -> None:
def _install_rbenv(
prefix: Prefix,
version: str = C.DEFAULT,
) -> None: # pragma: windows no cover
) -> None: # pragma: win32 no cover
directory = helpers.environment_dir(ENVIRONMENT_DIR, version)

_extract_resource('rbenv.tar.gz', prefix.path('.'))
Expand All @@ -80,7 +80,7 @@ def _install_rbenv(
def _install_ruby(
prefix: Prefix,
version: str,
) -> None: # pragma: windows no cover
) -> None: # pragma: win32 no cover
try:
helpers.run_setup_cmd(prefix, ('rbenv', 'download', version))
except CalledProcessError: # pragma: no cover (usually find with download)
Expand All @@ -90,7 +90,7 @@ def _install_ruby(

def install_environment(
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
) -> None: # pragma: windows no cover
) -> None: # pragma: win32 no cover
additional_dependencies = tuple(additional_dependencies)
directory = helpers.environment_dir(ENVIRONMENT_DIR, version)
with clean_path_on_failure(prefix.path(directory)):
Expand Down Expand Up @@ -121,6 +121,6 @@ def run_hook(
hook: Hook,
file_args: Sequence[str],
color: bool,
) -> Tuple[int, bytes]: # pragma: windows no cover
) -> Tuple[int, bytes]: # pragma: win32 no cover
with in_env(hook.prefix, hook.language_version):
return helpers.run_xargs(hook, hook.cmd, file_args, color=color)
8 changes: 4 additions & 4 deletions pre_commit/languages/swift.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@
BUILD_CONFIG = 'release'


def get_env_patch(venv: str) -> PatchesT: # pragma: windows no cover
def get_env_patch(venv: str) -> PatchesT: # pragma: win32 no cover
bin_path = os.path.join(venv, BUILD_DIR, BUILD_CONFIG)
return (('PATH', (bin_path, os.pathsep, Var('PATH'))),)


@contextlib.contextmanager # pragma: windows no cover
@contextlib.contextmanager # pragma: win32 no cover
def in_env(prefix: Prefix) -> Generator[None, None, None]:
envdir = prefix.path(
helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT),
Expand All @@ -37,7 +37,7 @@ def in_env(prefix: Prefix) -> Generator[None, None, None]:

def install_environment(
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
) -> None: # pragma: windows no cover
) -> None: # pragma: win32 no cover
helpers.assert_version_default('swift', version)
helpers.assert_no_additional_deps('swift', additional_dependencies)
directory = prefix.path(
Expand All @@ -59,6 +59,6 @@ def run_hook(
hook: Hook,
file_args: Sequence[str],
color: bool,
) -> Tuple[int, bytes]: # pragma: windows no cover
) -> Tuple[int, bytes]: # pragma: win32 no cover
with in_env(hook.prefix):
return helpers.run_xargs(hook, hook.cmd, file_args, color=color)
2 changes: 1 addition & 1 deletion pre_commit/parse_shebang.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def _error(msg: str) -> 'NoReturn':
_error('is a directory')
elif not os.path.isfile(orig):
_error('not found')
elif not os.access(orig, os.X_OK): # pragma: windows no cover
elif not os.access(orig, os.X_OK): # pragma: win32 no cover
_error('is not executable')
else:
return orig
Expand Down
2 changes: 1 addition & 1 deletion pre_commit/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ def cmd_output(*cmd: str, **kwargs: Any) -> Tuple[int, str, Optional[str]]:
return returncode, stdout, stderr


if os.name != 'nt': # pragma: windows no cover
if os.name != 'nt': # pragma: win32 no cover
from os import openpty
import termios

Expand Down
3 changes: 1 addition & 2 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
-e .

covdefaults
coverage
pytest
pytest-env
4 changes: 4 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ exclude =
[bdist_wheel]
universal = True

[coverage:run]
plugins = covdefaults
omit = pre_commit/resources/*

[mypy]
check_untyped_defs = true
disallow_any_generics = true
Expand Down
2 changes: 0 additions & 2 deletions tests/commands/install_uninstall_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
from testing.util import cmd_output_mocked_pre_commit_home
from testing.util import cwd
from testing.util import git_commit
from testing.util import xfailif_windows


def test_is_not_script():
Expand Down Expand Up @@ -823,7 +822,6 @@ def test_prepare_commit_msg_legacy(
assert 'Signed off by: ' in f.read()


@xfailif_windows # pragma: windows no cover (once AP has git 2.24)
def test_pre_merge_commit_integration(tempdir_factory, store):
expected = re.compile(
r'^\[INFO\] Initializing environment for .+\n'
Expand Down
4 changes: 2 additions & 2 deletions tests/languages/python_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@

def test_norm_version_expanduser():
home = os.path.expanduser('~')
if os.name == 'nt': # pragma: no cover (nt)
if os.name == 'nt': # pragma: nt cover
path = r'~\python343'
expected_path = fr'{home}\python343'
else: # pragma: windows no cover
else: # pragma: nt no cover
path = '~/.pyenv/versions/3.4.3/bin/python'
expected_path = f'{home}/.pyenv/versions/3.4.3/bin/python'
result = python.norm_version(path)
Expand Down
2 changes: 1 addition & 1 deletion tests/parse_shebang_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def test_normexe_does_not_exist_sep():


@pytest.mark.xfail(os.name == 'nt', reason='posix only')
def test_normexe_not_executable(tmpdir): # pragma: windows no cover
def test_normexe_not_executable(tmpdir): # pragma: win32 no cover
tmpdir.join('exe').ensure()
with tmpdir.as_cwd(), pytest.raises(OSError) as excinfo:
parse_shebang.normexe('./exe')
Expand Down
14 changes: 7 additions & 7 deletions tests/repository_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ def test_versioned_python_hook(tempdir_factory, store):
)


@skipif_cant_run_docker # pragma: windows no cover
@skipif_cant_run_docker # pragma: win32 no cover
def test_run_a_docker_hook(tempdir_factory, store):
_test_hook_repo(
tempdir_factory, store, 'docker_hooks_repo',
Expand All @@ -206,7 +206,7 @@ def test_run_a_docker_hook(tempdir_factory, store):
)


@skipif_cant_run_docker # pragma: windows no cover
@skipif_cant_run_docker # pragma: win32 no cover
def test_run_a_docker_hook_with_entry_args(tempdir_factory, store):
_test_hook_repo(
tempdir_factory, store, 'docker_hooks_repo',
Expand All @@ -215,7 +215,7 @@ def test_run_a_docker_hook_with_entry_args(tempdir_factory, store):
)


@skipif_cant_run_docker # pragma: windows no cover
@skipif_cant_run_docker # pragma: win32 no cover
def test_run_a_failing_docker_hook(tempdir_factory, store):
_test_hook_repo(
tempdir_factory, store, 'docker_hooks_repo',
Expand All @@ -226,7 +226,7 @@ def test_run_a_failing_docker_hook(tempdir_factory, store):
)


@skipif_cant_run_docker # pragma: windows no cover
@skipif_cant_run_docker # pragma: win32 no cover
@pytest.mark.parametrize('hook_id', ('echo-entrypoint', 'echo-cmd'))
def test_run_a_docker_image_hook(tempdir_factory, store, hook_id):
_test_hook_repo(
Expand Down Expand Up @@ -297,7 +297,7 @@ def test_system_hook_with_spaces(tempdir_factory, store):
)


@skipif_cant_run_swift # pragma: windows no cover
@skipif_cant_run_swift # pragma: win32 no cover
def test_swift_hook(tempdir_factory, store):
_test_hook_repo(
tempdir_factory, store, 'swift_hooks_repo',
Expand Down Expand Up @@ -514,7 +514,7 @@ def test_additional_dependencies_roll_forward(tempdir_factory, store):
assert 'mccabe' not in cmd_output('pip', 'freeze', '-l')[1]


@xfailif_windows_no_ruby # pragma: windows no cover
@xfailif_windows_no_ruby # pragma: win32 no cover
def test_additional_ruby_dependencies_installed(tempdir_factory, store):
path = make_repo(tempdir_factory, 'ruby_hooks_repo')
config = make_config_from_repo(path)
Expand Down Expand Up @@ -758,7 +758,7 @@ def local_python_config():
return {'repo': 'local', 'hooks': hooks}


@pytest.mark.xfail( # pragma: windows no cover
@pytest.mark.xfail( # pragma: win32 no cover
sys.platform == 'win32',
reason='microsoft/azure-pipelines-image-generation#989',
)
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ passenv = HOME LOCALAPPDATA RUSTUP_HOME
commands =
coverage erase
coverage run -m pytest {posargs:tests}
coverage report --fail-under 100
coverage report
pre-commit install

[testenv:pre-commit]
Expand Down