From 12a40fdab29c6612d9b0b484ddabf18f506808cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20Flore-Th=C3=A9bault?= Date: Mon, 15 Jun 2020 14:44:05 +0200 Subject: [PATCH] docker.py tests thanks @hroncok --- pre_commit/languages/docker.py | 13 +++++++++---- tests/languages/docker_test.py | 34 ++++++++++++++++++++++------------ 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/pre_commit/languages/docker.py b/pre_commit/languages/docker.py index c0a00488..81cfbeed 100644 --- a/pre_commit/languages/docker.py +++ b/pre_commit/languages/docker.py @@ -78,23 +78,28 @@ def install_environment( os.mkdir(directory) -@functools.lru_cache(maxsize=1) -def docker_is_rootless() -> bool: +def _docker_is_rootless() -> bool: returncode, stdout, stderr = cmd_output( - ('docker', 'system', 'info'), + 'docker', 'system', 'info', ) for line in stdout.splitlines(): # rootless docker has "rootless" # rootless podman has "rootless: true" if line.strip().startswith('rootless'): if 'false' not in line: + print(line) return True break return False +@functools.lru_cache(maxsize=1) +def docker_is_rootless() -> bool: + return _docker_is_rootless() + + def get_docker_user() -> Tuple[str, ...]: # pragma: win32 no cover - if: docker_is_rootless(): + if docker_is_rootless(): return () try: return ('-u', f'{os.getuid()}:{os.getgid()}') diff --git a/tests/languages/docker_test.py b/tests/languages/docker_test.py index 34dc5e4f..808bbd6d 100644 --- a/tests/languages/docker_test.py +++ b/tests/languages/docker_test.py @@ -28,9 +28,9 @@ Server: Runtimes: runc Default Runtime: runc Init Binary: /usr/libexec/docker/docker-init - containerd version: + containerd version: runc version: fbdbaf85ecbc0e077f336c03062710435607dbf1 - init version: + init version: Security Options: seccomp Profile: default @@ -51,7 +51,7 @@ Server: Insecure Registries: 127.0.0.0/8 Live Restore Enabled: true -''' +''' # noqa DOCKER_ROOTLESS_SYSTEM_INFO = ''' Client: @@ -99,7 +99,7 @@ Server: 127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine -''' +''' # noqa PODMAN_SYSTEM_INFO = ''' host: @@ -183,7 +183,9 @@ store: number: 23 runRoot: /tmp/105971 volumePath: /home/remote/user/.local/share/containers/storage/volumes -''' +''' # noqa + + def test_docker_is_running_process_error(): with mock.patch( 'pre_commit.languages.docker.cmd_output_b', @@ -204,16 +206,24 @@ def test_docker_fallback_user(): def test_docker_is_not_rootless(): - with mock.patch.object(docker, 'cmd_output', return_value=(0, DOCKER_NOT_ROOTLESS_SYSTEM_INFO, '')): - assert docker.docker_is_rootless() == False + with mock.patch.object( + docker, 'cmd_output', + return_value=(0, DOCKER_NOT_ROOTLESS_SYSTEM_INFO, ''), + ): + assert docker._docker_is_rootless() is False def test_docker_is_rootless(): - with mock.patch.object(docker, 'cmd_output', return_value=(0, DOCKER_ROOTLESS_SYSTEM_INFO, '')): - assert docker.docker_is_rootless() == True + with mock.patch.object( + docker, 'cmd_output', + return_value=(0, DOCKER_ROOTLESS_SYSTEM_INFO, ''), + ): + assert docker._docker_is_rootless() is True def test_podman_is_rootless(): - with mock.patch.object(docker, 'cmd_output', return_value=(0, PODMAN_SYSTEM_INFO, '')): - assert docker.docker_is_rootless() == True - + with mock.patch.object( + docker, 'cmd_output', + return_value=(0, PODMAN_SYSTEM_INFO, ''), + ): + assert docker._docker_is_rootless() is True