From d4a9ff4d1f044d17040fa0b4b93ea93a8da4888e Mon Sep 17 00:00:00 2001 From: Edgar Geier Date: Thu, 25 Jul 2019 11:20:03 +0200 Subject: [PATCH] Simplify docker user fallback implementation and test --- pre_commit/languages/docker.py | 17 ++++------------- tests/languages/docker_test.py | 17 +++++++---------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/pre_commit/languages/docker.py b/pre_commit/languages/docker.py index 8f7c72df..4517050b 100644 --- a/pre_commit/languages/docker.py +++ b/pre_commit/languages/docker.py @@ -14,8 +14,6 @@ from pre_commit.util import cmd_output ENVIRONMENT_DIR = 'docker' PRE_COMMIT_LABEL = 'PRE_COMMIT' -FALLBACK_UID = 1000 -FALLBACK_GID = 1000 get_default_version = helpers.basic_get_default_version healthy = helpers.basic_healthy @@ -75,25 +73,18 @@ def install_environment( os.mkdir(directory) -def getuid(): # pragma: windows no cover +def get_docker_user(): # pragma: windows no cover try: - return os.getuid() + return '{}:{}'.format(os.getuid(), os.getgid()) except AttributeError: - return FALLBACK_UID - - -def getgid(): # pragma: windows no cover - try: - return os.getgid() - except AttributeError: - return FALLBACK_GID + return '1000:1000' def docker_cmd(): # pragma: windows no cover return ( 'docker', 'run', '--rm', - '-u', '{}:{}'.format(getuid(), getgid()), + '-u', get_docker_user(), # https://docs.docker.com/engine/reference/commandline/run/#mount-volumes-from-container-volumes-from # The `Z` option tells Docker to label the content with a private # unshared label. Only the current container can use a private volume. diff --git a/tests/languages/docker_test.py b/tests/languages/docker_test.py index a4cfbac1..1a96e69d 100644 --- a/tests/languages/docker_test.py +++ b/tests/languages/docker_test.py @@ -15,15 +15,12 @@ def test_docker_is_running_process_error(): assert docker.docker_is_running() is False -def test_docker_fallback_uid(): +def test_docker_fallback_user(): def invalid_attribute(): raise AttributeError - with mock.patch('os.getuid', invalid_attribute, create=True): - assert docker.getuid() == docker.FALLBACK_UID - - -def test_docker_fallback_gid(): - def invalid_attribute(): - raise AttributeError - with mock.patch('os.getgid', invalid_attribute, create=True): - assert docker.getgid() == docker.FALLBACK_GID + with mock.patch.multiple( + 'os', create=True, + getuid=invalid_attribute, + getgid=invalid_attribute, + ): + assert docker.get_docker_user() == '1000:1000'