Merge pull request #1094 from geieredgar/windows-docker-fix

Fix docker based hooks failing on Windows
This commit is contained in:
Anthony Sottile 2019-07-25 06:19:21 -07:00 committed by GitHub
commit 376d283ba3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View file

@ -73,11 +73,18 @@ def install_environment(
os.mkdir(directory) os.mkdir(directory)
def get_docker_user(): # pragma: windows no cover
try:
return '{}:{}'.format(os.getuid(), os.getgid())
except AttributeError:
return '1000:1000'
def docker_cmd(): # pragma: windows no cover def docker_cmd(): # pragma: windows no cover
return ( return (
'docker', 'run', 'docker', 'run',
'--rm', '--rm',
'-u', '{}:{}'.format(os.getuid(), os.getgid()), '-u', get_docker_user(),
# https://docs.docker.com/engine/reference/commandline/run/#mount-volumes-from-container-volumes-from # 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 # The `Z` option tells Docker to label the content with a private
# unshared label. Only the current container can use a private volume. # unshared label. Only the current container can use a private volume.

View file

@ -13,3 +13,14 @@ def test_docker_is_running_process_error():
side_effect=CalledProcessError(*(None,) * 4), side_effect=CalledProcessError(*(None,) * 4),
): ):
assert docker.docker_is_running() is False assert docker.docker_is_running() is False
def test_docker_fallback_user():
def invalid_attribute():
raise AttributeError
with mock.patch.multiple(
'os', create=True,
getuid=invalid_attribute,
getgid=invalid_attribute,
):
assert docker.get_docker_user() == '1000:1000'