Add cwd argument to DockerContainer
This commit is contained in:
@@ -27,12 +27,14 @@ class DockerContainer:
|
|||||||
bash_stdin: IO[bytes]
|
bash_stdin: IO[bytes]
|
||||||
bash_stdout: IO[bytes]
|
bash_stdout: IO[bytes]
|
||||||
|
|
||||||
def __init__(self, docker_image: str, simulate_32_bit=False):
|
def __init__(self, docker_image: str, simulate_32_bit: bool = False, cwd: Optional[Union[str, PathLike]] = None):
|
||||||
self.docker_image = docker_image
|
self.docker_image = docker_image
|
||||||
self.simulate_32_bit = simulate_32_bit
|
self.simulate_32_bit = simulate_32_bit
|
||||||
|
self.cwd = cwd
|
||||||
|
|
||||||
def __enter__(self) -> 'DockerContainer':
|
def __enter__(self) -> 'DockerContainer':
|
||||||
self.name = f'cibuildwheel-{uuid.uuid4()}'
|
self.name = f'cibuildwheel-{uuid.uuid4()}'
|
||||||
|
cwd_args = ['-w', str(self.cwd)] if self.cwd else []
|
||||||
shell_args = ['linux32', '/bin/bash'] if self.simulate_32_bit else ['/bin/bash']
|
shell_args = ['linux32', '/bin/bash'] if self.simulate_32_bit else ['/bin/bash']
|
||||||
subprocess.run(
|
subprocess.run(
|
||||||
[
|
[
|
||||||
@@ -41,6 +43,7 @@ class DockerContainer:
|
|||||||
'--name', self.name,
|
'--name', self.name,
|
||||||
'-i',
|
'-i',
|
||||||
'-v', '/:/host', # ignored on CircleCI
|
'-v', '/:/host', # ignored on CircleCI
|
||||||
|
*cwd_args,
|
||||||
self.docker_image,
|
self.docker_image,
|
||||||
*shell_args
|
*shell_args
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -41,6 +41,13 @@ def test_environment():
|
|||||||
assert container.call(['sh', '-c', 'echo $TEST_VAR'], env={'TEST_VAR': '1'}, capture_output=True) == '1\n'
|
assert container.call(['sh', '-c', 'echo $TEST_VAR'], env={'TEST_VAR': '1'}, capture_output=True) == '1\n'
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.docker
|
||||||
|
def test_cwd():
|
||||||
|
with DockerContainer(DEFAULT_IMAGE, cwd='/cibuildwheel/working_directory') as container:
|
||||||
|
assert container.call(['pwd'], capture_output=True) == '/cibuildwheel/working_directory\n'
|
||||||
|
assert container.call(['pwd'], capture_output=True, cwd='/opt') == '/opt\n'
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.docker
|
@pytest.mark.docker
|
||||||
def test_container_removed():
|
def test_container_removed():
|
||||||
with DockerContainer(DEFAULT_IMAGE) as container:
|
with DockerContainer(DEFAULT_IMAGE) as container:
|
||||||
|
|||||||
Reference in New Issue
Block a user