get unittests passing again

fix some relative paths, temporary dirs, etc.
pull/512/head
Min RK 2018-12-17 13:11:45 +01:00
rodzic a5d5e77ad1
commit 22de9f40d0
14 zmienionych plików z 225 dodań i 238 usunięć

Wyświetl plik

@ -230,7 +230,7 @@ def make_r2d(argv=None):
if os.path.isdir(args.repo):
r2d.volumes[os.path.abspath(args.repo)] = '.'
else:
r2d.log.error('Can not mount "{}" in editable mode '
r2d.log.error('Cannot mount "{}" in editable mode '
'as it is not a directory'.format(args.repo),
extra=dict(phase='failed'))
sys.exit(1)

Wyświetl plik

@ -399,10 +399,10 @@ class Repo2Docker(Application):
)
if self.dry_run and (self.run or self.push):
raise ValueError("Can not push or run image if we are not building it")
raise ValueError("Cannot push or run image if we are not building it")
if self.volumes and not self.run:
raise ValueError("Can not mount volumes if container is not run")
raise ValueError("Cannot mount volumes if container is not run")
def push_image(self):
"""Push docker image to registry"""

Wyświetl plik

@ -5,8 +5,23 @@ Tests that runs validity checks on arguments passed in from shell
import os
import subprocess
import pytest
def validate_arguments(builddir, args_list, expected, disable_dockerd=False):
here = os.path.dirname(os.path.abspath(__file__))
test_dir = os.path.dirname(here)
docker_simple = os.path.join(test_dir, 'dockerfile', 'simple')
# default to building in the cwd (a temporary directory)
builddir = '.'
@pytest.fixture
def temp_cwd(tmpdir):
tmpdir.chdir()
def validate_arguments(builddir, args_list='.', expected=None, disable_dockerd=False):
try:
cmd = ['repo2docker']
for k in args_list:
@ -19,19 +34,20 @@ def validate_arguments(builddir, args_list, expected, disable_dockerd=False):
return True
except subprocess.CalledProcessError as e:
output = e.output.decode()
if expected in output:
if expected is not None:
assert expected in output
return False
else:
print(output)
raise
def test_image_name_fail():
def test_image_name_fail(temp_cwd):
"""
Test to check if repo2docker throws image_name validation error on --image-name argument containing
uppercase characters and _ characters in incorrect positions.
"""
builddir = os.path.dirname(__file__)
image_name = 'Test/Invalid_name:1.0.0'
args_list = ['--no-run', '--no-build', '--image-name', image_name]
expected = (
@ -42,12 +58,11 @@ def test_image_name_fail():
assert not validate_arguments(builddir, args_list, expected)
def test_image_name_underscore_fail():
def test_image_name_underscore_fail(temp_cwd):
"""
Test to check if repo2docker throws image_name validation error on --image-name argument starts with _.
"""
builddir = os.path.dirname(__file__)
image_name = '_test/invalid_name:1.0.0'
args_list = ['--no-run', '--no-build', '--image-name', image_name]
expected = (
@ -58,12 +73,11 @@ def test_image_name_underscore_fail():
assert not validate_arguments(builddir, args_list, expected)
def test_image_name_double_dot_fail():
def test_image_name_double_dot_fail(temp_cwd):
"""
Test to check if repo2docker throws image_name validation error on --image-name argument contains consecutive dots.
"""
builddir = os.path.dirname(__file__)
image_name = 'test..com/invalid_name:1.0.0'
args_list = ['--no-run', '--no-build', '--image-name', image_name]
expected = (
@ -74,13 +88,12 @@ def test_image_name_double_dot_fail():
assert not validate_arguments(builddir, args_list, expected)
def test_image_name_valid_restircted_registry_domain_name_fail():
def test_image_name_valid_restircted_registry_domain_name_fail(temp_cwd):
"""
Test to check if repo2docker throws image_name validation error on -image-name argument being invalid. Based on the
regex definitions first part of registry domain cannot contain uppercase characters
"""
builddir = os.path.dirname(__file__)
image_name = 'Test.com/valid_name:1.0.0'
args_list = ['--no-run', '--no-build', '--image-name', image_name]
expected = (
@ -92,85 +105,87 @@ def test_image_name_valid_restircted_registry_domain_name_fail():
assert not validate_arguments(builddir, args_list, expected)
def test_image_name_valid_registry_domain_name_success():
def test_image_name_valid_registry_domain_name_success(temp_cwd):
"""
Test to check if repo2docker runs with a valid --image-name argument.
"""
builddir = os.path.dirname(__file__) + '/dockerfile/simple/'
builddir = docker_simple
image_name = 'test.COM/valid_name:1.0.0'
args_list = ['--no-run', '--no-build', '--image-name', image_name]
assert validate_arguments(builddir, args_list, None)
def test_image_name_valid_name_success():
def test_image_name_valid_name_success(temp_cwd):
"""
Test to check if repo2docker runs with a valid --image-name argument.
"""
builddir = os.path.dirname(__file__) + '/dockerfile/simple/'
builddir = docker_simple
image_name = 'test.com/valid_name:1.0.0'
args_list = ['--no-run', '--no-build', '--image-name', image_name]
assert validate_arguments(builddir, args_list, None)
def test_volume_no_build_fail():
def test_volume_no_build_fail(temp_cwd):
"""
Test to check if repo2docker fails when both --no-build and -v arguments are given
"""
builddir = os.path.dirname(__file__)
args_list = ['--no-build', '-v', '/data:/data']
assert not validate_arguments(builddir, args_list, 'To Mount volumes with -v, you also need to run the container')
assert not validate_arguments(
builddir,
args_list,
'Cannot mount volumes if container is not run',
)
def test_volume_no_run_fail():
def test_volume_no_run_fail(temp_cwd):
"""
Test to check if repo2docker fails when both --no-run and -v arguments are given
"""
builddir = os.path.dirname(__file__)
args_list = ['--no-run', '-v', '/data:/data']
assert not validate_arguments(builddir, args_list, 'To Mount volumes with -v, you also need to run the container')
assert not validate_arguments(
builddir,
args_list,
'Cannot mount volumes if container is not run',
)
def test_env_no_run_fail():
def test_env_no_run_fail(temp_cwd):
"""
Test to check if repo2docker fails when both --no-run and -e arguments are given
"""
builddir = os.path.dirname(__file__)
args_list = ['--no-run', '-e', 'FOO=bar', '--']
assert not validate_arguments(builddir, args_list, 'To specify environment variables, you also need to run the container')
def test_port_mapping_no_run_fail():
def test_port_mapping_no_run_fail(temp_cwd):
"""
Test to check if repo2docker fails when both --no-run and --publish arguments are specified.
"""
builddir = os.path.dirname(__file__)
args_list = ['--no-run', '--publish', '8000:8000']
assert not validate_arguments(builddir, args_list, 'To publish user defined port mappings, the container must also be run')
def test_all_ports_mapping_no_run_fail():
def test_all_ports_mapping_no_run_fail(temp_cwd):
"""
Test to check if repo2docker fails when both --no-run and -P arguments are specified.
"""
builddir = os.path.dirname(__file__)
args_list = ['--no-run', '-P']
assert not validate_arguments(builddir, args_list, 'To publish user defined port mappings, the container must also be run')
def test_invalid_port_mapping_fail():
def test_invalid_port_mapping_fail(temp_cwd):
"""
Test to check if r2d fails when an invalid port is specified in the port mapping
"""
builddir = os.path.dirname(__file__)
# Specifying builddir here itself to simulate passing in a run command
# builddir passed in the function will be an argument for the run command
args_list = ['-p', '75000:80', builddir, 'ls']
@ -178,11 +193,10 @@ def test_invalid_port_mapping_fail():
assert not validate_arguments(builddir, args_list, 'Invalid port mapping')
def test_invalid_protocol_port_mapping_fail():
def test_invalid_protocol_port_mapping_fail(temp_cwd):
"""
Test to check if r2d fails when an invalid protocol is specified in the port mapping
"""
builddir = os.path.dirname(__file__)
# Specifying builddir here itself to simulate passing in a run command
# builddir passed in the function will be an argument for the run command
args_list = ['-p', '80/tpc:8000', builddir, 'ls']
@ -190,11 +204,10 @@ def test_invalid_protocol_port_mapping_fail():
assert not validate_arguments(builddir, args_list, 'Invalid port mapping')
def test_invalid_container_port_protocol_mapping_fail():
def test_invalid_container_port_protocol_mapping_fail(temp_cwd):
"""
Test to check if r2d fails when an invalid protocol is specified in the container port in port mapping
"""
builddir = os.path.dirname(__file__)
# Specifying builddir here itself to simulate passing in a run command
# builddir passed in the function will be an argument for the run command
args_list = ['-p', '80:8000/upd', builddir, 'ls']
@ -202,31 +215,39 @@ def test_invalid_container_port_protocol_mapping_fail():
assert not validate_arguments(builddir, args_list, 'Invalid port mapping')
def test_docker_handle_fail():
@pytest.mark.xfail(reason="Regression in new arg parsing")
def test_docker_handle_fail(temp_cwd):
"""
Test to check if r2d fails with minimal error message on not being able to connect to docker daemon
"""
args_list = []
builddir = os.path.dirname(__file__) + '/../'
assert not validate_arguments(builddir, args_list, "Docker client initialization error. Check if docker is running on the host.", True)
assert not validate_arguments(
builddir,
args_list,
"Docker client initialization error. Check if docker is running on the host.",
disable_dockerd=True,
)
def test_docker_handle_debug_fail():
def test_docker_handle_debug_fail(temp_cwd):
"""
Test to check if r2d fails with stack trace on not being able to connect to docker daemon and debug enabled
"""
args_list = ['--debug']
builddir = os.path.dirname(__file__) + '/../'
assert not validate_arguments(builddir, args_list, "docker.errors.DockerException", True)
assert not validate_arguments(
builddir,
args_list,
"docker.errors.DockerException",
disable_dockerd=True,
)
def test_docker_no_build_success():
def test_docker_no_build_success(temp_cwd):
"""
Test to check if r2d succeeds with --no-build argument with not being able to connect to docker daemon
"""
args_list = ['--no-build', '--no-run']
builddir = os.path.dirname(__file__) + '/../'
assert validate_arguments(builddir, args_list, "", True)
assert validate_arguments(builddir, args_list, disable_dockerd=True)

Wyświetl plik

@ -1,13 +1,15 @@
"""
Test that --cache-from is passed in to docker API properly.
"""
import os
import docker
from unittest.mock import MagicMock, patch
from repo2docker.buildpacks import BaseImage, DockerBuildPack, LegacyBinderDockerBuildPack
from tempfile import TemporaryDirectory
def test_cache_from_base(monkeypatch):
from unittest.mock import MagicMock
import docker
from repo2docker.buildpacks import BaseImage, DockerBuildPack, LegacyBinderDockerBuildPack
def test_cache_from_base(tmpdir):
FakeDockerClient = MagicMock()
cache_from = [
'image-1:latest'
@ -16,9 +18,8 @@ def test_cache_from_base(monkeypatch):
fake_client = MagicMock(spec=docker.APIClient)
fake_client.build.return_value = iter([fake_log_value])
with TemporaryDirectory() as d:
# Test base image build pack
monkeypatch.chdir(d)
tmpdir.chdir()
for line in BaseImage().build(fake_client, 'image-2', '1Gi', {}, cache_from):
assert line == fake_log_value
called_args, called_kwargs = fake_client.build.call_args
@ -27,7 +28,7 @@ def test_cache_from_base(monkeypatch):
def test_cache_from_docker(monkeypatch):
def test_cache_from_docker(tmpdir):
FakeDockerClient = MagicMock()
cache_from = [
'image-1:latest'
@ -36,9 +37,9 @@ def test_cache_from_docker(monkeypatch):
fake_client = MagicMock(spec=docker.APIClient)
fake_client.build.return_value = iter([fake_log_value])
with TemporaryDirectory() as d:
# Test docker image
with open(os.path.join(d, 'Dockerfile'), 'w') as f:
tmpdir.chdir()
# test dockerfile
with tmpdir.join("Dockerfile").open('w') as f:
f.write('FROM scratch\n')
for line in DockerBuildPack().build(fake_client, 'image-2', '1Gi', {}, cache_from):
@ -47,19 +48,8 @@ def test_cache_from_docker(monkeypatch):
assert 'cache_from' in called_kwargs
assert called_kwargs['cache_from'] == cache_from
# Test legacy docker image
with open(os.path.join(d, 'Dockerfile'), 'w') as f:
f.write('FROM andrewosh/binder-base\n')
for line in LegacyBinderDockerBuildPack().build(fake_client, 'image-2', '1Gi', {}, cache_from):
print(line)
assert line == fake_log_value
called_args, called_kwargs = fake_client.build.call_args
assert 'cache_from' in called_kwargs
assert called_kwargs['cache_from'] == cache_from
def test_cache_from_legacy(monkeypatch):
def test_cache_from_legacy(tmpdir):
FakeDockerClient = MagicMock()
cache_from = [
'image-1:latest'
@ -68,9 +58,8 @@ def test_cache_from_legacy(monkeypatch):
fake_client = MagicMock(spec=docker.APIClient)
fake_client.build.return_value = iter([fake_log_value])
with TemporaryDirectory() as d:
# Test legacy docker image
with open(os.path.join(d, 'Dockerfile'), 'w') as f:
with tmpdir.join("Dockerfile").open('w') as f:
f.write('FROM andrewosh/binder-base\n')
for line in LegacyBinderDockerBuildPack().build(fake_client, 'image-2', '1Gi', {}, cache_from):
@ -79,4 +68,3 @@ def test_cache_from_legacy(monkeypatch):
assert 'cache_from' in called_kwargs
assert called_kwargs['cache_from'] == cache_from

Wyświetl plik

@ -21,15 +21,16 @@ def test_clone_depth():
"""Test a remote repository, without a refspec"""
with TemporaryDirectory() as d:
app = Repo2Docker()
argv = [URL]
app.initialize(argv)
app.build = False
app.run = False
app = Repo2Docker(
repo=URL,
dry_run=True,
run=False,
# turn of automatic clean up of the checkout so we can inspect it
# we also set the work directory explicitly so we know where to look
app.cleanup_checkout = False
app.git_workdir = d
cleanup_checkout=False,
git_workdir=d,
)
app.initialize()
app.start()
cmd = ['git', 'rev-parse', 'HEAD']
@ -46,15 +47,17 @@ def test_clone_depth_full():
"""Test a remote repository, with a refspec of 'master'"""
with TemporaryDirectory() as d:
app = Repo2Docker()
argv = ['--ref', 'master', URL]
app.initialize(argv)
app.run = False
app.build = False
app = Repo2Docker(
repo=URL,
ref='master',
dry_run=True,
run=False,
# turn of automatic clean up of the checkout so we can inspect it
# we also set the work directory explicitly so we know where to look
app.cleanup_checkout = False
app.git_workdir = d
cleanup_checkout=False,
git_workdir=d,
)
app.initialize()
app.start()
# Building the image has already put us in the cloned repository directory
@ -72,16 +75,17 @@ def test_clone_depth_full2():
"""Test a remote repository, with a refspec of the master commit hash"""
with TemporaryDirectory() as d:
app = Repo2Docker()
argv = ['--ref', '703322e', URL]
app.initialize(argv)
app.run = False
app.build = False
app = Repo2Docker(
repo=URL,
ref='703322e',
dry_run=True,
run=False,
# turn of automatic clean up of the checkout so we can inspect it
# we also set the work directory explicitly so we know where to look
app.cleanup_checkout = False
app.git_workdir = d
cleanup_checkout=False,
git_workdir=d,
)
app.initialize()
app.start()
# Building the image has already put us in the cloned repository directory
@ -99,16 +103,17 @@ def test_clone_depth_mid():
"""Test a remote repository, with a refspec of a commit hash halfway"""
with TemporaryDirectory() as d:
app = Repo2Docker()
argv = ['--ref', '8bc4f21', URL]
app.initialize(argv)
app.run = False
app.build = False
app = Repo2Docker(
repo=URL,
ref='8bc4f21',
dry_run=True,
run=False,
# turn of automatic clean up of the checkout so we can inspect it
# we also set the work directory explicitly so we know where to look
app.cleanup_checkout = False
app.git_workdir = d
cleanup_checkout=False,
git_workdir=d,
)
app.initialize()
app.start()
# Building the image has already put us in the cloned repository directory

Wyświetl plik

@ -7,17 +7,11 @@ from repo2docker.app import Repo2Docker
def test_connect_url(tmpdir):
tmpdir.chdir()
#q = tmpdir.join("environment.yml")
#q.write("dependencies:\n"
# " - notebook==5.6.0")
p = tmpdir.join("requirements.txt")
p.write("notebook==5.6.0")
p.write("notebook>=5.6.0")
app = Repo2Docker()
argv = [str(tmpdir), ]
app.initialize(argv)
app.debug = True
app.run = False
app = Repo2Docker(repo=str(tmpdir), run=False)
app.initialize()
app.start() # This just build the image and does not run it.
container = app.start_container()
container_url = 'http://{}:{}/api'.format(app.hostname, app.port)

Wyświetl plik

@ -1,12 +1,14 @@
import os
import time
import re
import tempfile
from conftest import make_test_func
import time
from repo2docker.app import Repo2Docker
from repo2docker.__main__ import make_r2d
from conftest import make_test_func
DIR = os.path.join(os.path.dirname(__file__), 'dockerfile', 'editable')
DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'dockerfile', 'editable')
def test_editable(run_repo2docker):
@ -33,10 +35,9 @@ def test_editable_by_host():
"""Test whether a new file created by the host environment, is
detected in the container"""
app = Repo2Docker()
app.initialize(['--editable', DIR])
app.run = False
app.start() # This just build the image and does not run it.
app = make_r2d(['--editable', DIR])
app.initialize()
app.build()
container = app.start_container()
# give the container a chance to start
time.sleep(1)

Wyświetl plik

@ -26,22 +26,19 @@ def test_buildpack_labels_rendered():
(None, None, 'local'),
])
def test_Repo2Docker_labels(ref, repo, expected_repo_label, tmpdir):
if repo is None:
repo = str(tmpdir)
if ref is not None:
argv = ['--ref', ref, repo]
else:
argv = [repo]
app = Repo2Docker()
app = Repo2Docker(dry_run=True)
# Add mock BuildPack to app
mock_buildpack = Mock()
mock_buildpack.return_value.labels = {}
app.buildpacks = [mock_buildpack]
app.initialize(argv)
app.build = False
app.run = False
if repo is None:
repo = str(tmpdir)
app.repo = repo
if ref is not None:
app.ref = ref
app.initialize()
app.start()
expected_labels = {
'repo2docker.ref': ref,

Wyświetl plik

@ -5,81 +5,67 @@ We give the container image at least 128M of RAM (so base things like
apt and pip can run), and then try to allocate & use 256MB in postBuild.
This should fail!
"""
import os
import subprocess
import shutil
import time
def does_build(builddir, mem_limit, mem_allocate_mb):
import pytest
from repo2docker.app import Repo2Docker
basedir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def does_build(tmpdir, build_src_dir, mem_limit, mem_allocate_mb):
builddir = tmpdir.join('build')
shutil.copytree(build_src_dir, builddir)
builddir.chdir()
print(os.getcwd(), os.listdir('.'))
mem_allocate_mb_file = os.path.join(builddir, 'mem_allocate_mb')
# Cache bust so we actually do a rebuild each time this is run!
with open(os.path.join(builddir, 'cachebust'), 'w') as cachebust:
with builddir.join('cachebust').open('w') as cachebust:
cachebust.write(str(time.time()))
try:
# we don't have an easy way to pass env vars or whatever to
# postBuild from here, so we write a file into the repo that is
# read by the postBuild script!
with open(mem_allocate_mb_file, 'w') as f:
f.write(str(mem_allocate_mb))
r2d = Repo2Docker(build_memory_limit=str(mem_limit) + 'M')
r2d.initialize()
try:
output = subprocess.check_output(
[
'repo2docker',
'--no-run',
'--build-memory-limit', '{}M'.format(mem_limit),
builddir
],
stderr=subprocess.STDOUT,
).decode()
print(output)
return True
except subprocess.CalledProcessError as e:
output = e.output.decode()
print(output)
if "/postBuild' returned a non-zero code: 137" in output:
r2d.build()
except Exception:
return False
else:
raise
finally:
os.remove(mem_allocate_mb_file)
return True
def test_memlimit_nondockerfile_fail():
@pytest.mark.parametrize(
'test, mem_limit, mem_allocate_mb, expected',
[
('dockerfile', 128, 256, False),
('dockerfile', 512, 256, True),
('non-dockerfile', 128, 256, False),
('non-dockerfile', 512, 256, True),
]
)
def test_memlimit_nondockerfile(tmpdir, test, mem_limit, mem_allocate_mb, expected):
"""
Test if memory limited builds are working for non dockerfile builds
"""
basedir = os.path.dirname(__file__)
assert not does_build(
os.path.join(basedir, 'memlimit/non-dockerfile'),
128,
256
)
assert does_build(
os.path.join(basedir, 'memlimit/non-dockerfile'),
512,
256
success = does_build(
tmpdir,
os.path.join(basedir, 'memlimit', test),
mem_limit,
mem_allocate_mb,
)
assert success == expected
def test_memlimit_dockerfile_fail():
"""
Test if memory limited builds are working for dockerfile builds
"""
basedir = os.path.dirname(__file__)
assert not does_build(
os.path.join(basedir, 'memlimit/dockerfile'),
128,
256
)
assert does_build(
os.path.join(basedir, 'memlimit/dockerfile'),
512,
256
)
def test_memlimit_same_postbuild():
"""
@ -87,7 +73,6 @@ def test_memlimit_same_postbuild():
Until https://github.com/jupyter/repo2docker/issues/160 gets fixed.
"""
basedir = os.path.dirname(__file__)
filepaths = [
os.path.join(basedir, 'memlimit', t, "postBuild")
for t in ("dockerfile", "non-dockerfile")

Wyświetl plik

@ -10,7 +10,7 @@ import signal
import random
def read_port_mapping_response(host, port, protocol = None):
def read_port_mapping_response(host, port, protocol=None):
"""
Deploy container and test if port mappings work as expected
@ -30,6 +30,7 @@ def read_port_mapping_response(host, port, protocol = None):
host = 'localhost'
with tempfile.TemporaryDirectory() as tmpdir:
username = os.getlogin()
tmpdir = os.path.realpath(tmpdir)
# Deploy a test container using r2d in a subprocess
# Added the -v volumes to be able to poll for changes within the container from the
@ -42,7 +43,7 @@ def read_port_mapping_response(host, port, protocol = None):
'--user-name', username,
'.',
'/bin/bash', '-c', 'echo \'hi\' > /home/ts && python -m http.server 8000'],
cwd=builddir + "/../",
cwd=builddir,
stderr=subprocess.STDOUT)
try:
# Wait till docker builds image and starts up
@ -71,6 +72,7 @@ def test_all_port_mapping_response():
builddir = os.path.dirname(__file__)
with tempfile.TemporaryDirectory() as tmpdir:
username = os.getlogin()
tmpdir = os.path.realpath(tmpdir)
# Deploy a test container using r2d in a subprocess
# Added the -v volumes to be able to poll for changes within the container from the
@ -84,7 +86,7 @@ def test_all_port_mapping_response():
'--user-name', username,
'.',
'/bin/bash', '-c', 'echo \'hi\' > /home/ts && python -m http.server 52000'],
cwd=builddir + "/../",
cwd=builddir,
stderr=subprocess.STDOUT)
try:

Wyświetl plik

@ -27,18 +27,10 @@ def test_subdir_invalid(caplog):
# test an error is raised when requesting a non existent subdir
#caplog.set_level(logging.INFO, logger='Repo2Docker')
app = Repo2Docker()
argv = ['--subdir', 'invalid-sub-dir', TEST_REPO]
app.initialize(argv)
app.debug = True
# no build does not imply no run
app.build = False
app.run = False
with pytest.raises(SystemExit) as excinfo:
app.start() # Just build the image and do not run it.
# The build should fail
assert excinfo.value.code == 1
# Can't get this to record the logs?
#assert caplog.text == "Subdirectory tests/conda/invalid does not exist"
app = Repo2Docker(
repo=TEST_REPO,
subdir='invalid-sub-dir',
)
app.initialize()
with pytest.raises(FileNotFoundError):
app.build() # Just build the image and do not run it.

Wyświetl plik

@ -40,8 +40,8 @@ def test_capture_cmd_capture_fail():
assert line == 'test\n'
def test_chdir():
with TemporaryDirectory() as d:
def test_chdir(tmpdir):
d = str(tmpdir.mkdir('cwd'))
cur_cwd = os.getcwd()
with utils.chdir(d):
assert os.getcwd() == d

Wyświetl plik

@ -12,6 +12,8 @@ def test_volume_abspath():
"""
ts = str(time.time())
with tempfile.TemporaryDirectory() as tmpdir:
tmpdir = os.path.realpath(tmpdir)
username = os.getlogin()
subprocess.check_call([
'repo2docker',