From 0370b7513e301884bae2ab924897a6245c6acfed Mon Sep 17 00:00:00 2001 From: yuvipanda Date: Sun, 19 May 2019 23:00:43 -0700 Subject: [PATCH] Add test for failure when running inside a plain docker container --- integration-tests/test_bootstrap.py | 33 +++++++++++++++++++---------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/integration-tests/test_bootstrap.py b/integration-tests/test_bootstrap.py index 5bf143f..a93fc5a 100644 --- a/integration-tests/test_bootstrap.py +++ b/integration-tests/test_bootstrap.py @@ -2,14 +2,9 @@ Test running bootstrap script in different circumstances """ import subprocess +from textwrap import dedent - -def test_ubuntu_too_old(): - """ - Error with a useful message when running in older Ubuntu - """ - container_name = 'old-distro-test' - +def run_bootstrap(container_name, image): # stop container if it is already running subprocess.run([ 'docker', 'rm', '-f', container_name @@ -17,7 +12,7 @@ def test_ubuntu_too_old(): # Start a detached Ubuntu 16.04 container subprocess.check_call([ - 'docker', 'run', '--detach', '--name', container_name, 'ubuntu:16.04', + 'docker', 'run', '--detach', '--name', container_name, image, '/bin/bash', '-c', 'sleep 1000s' ]) # Install python3 inside the ubuntu container @@ -35,10 +30,26 @@ def test_ubuntu_too_old(): 'bootstrap/', f'{container_name}:/srv' ]) - # Run bootstrap script, validate that it fails appropriately - output = subprocess.run([ + # Run bootstrap script, return the output + return subprocess.run([ 'docker', 'exec', '-i', container_name, 'python3', '/srv/bootstrap/bootstrap.py' ], check=False, stdout=subprocess.PIPE, encoding='utf-8') + +def test_ubuntu_too_old(): + """ + Error with a useful message when running in older Ubuntu + """ + output = run_bootstrap('old-distro-test', 'ubuntu:16.04') assert output.stdout == 'The Littlest JupyterHub requires Ubuntu 18.04 or higher\n' - assert output.returncode == 1 \ No newline at end of file + assert output.returncode == 1 + + +def test_inside_plain_docker(): + output = run_bootstrap('plain-docker-test', 'ubuntu:18.04') + assert output.stdout.strip() == dedent(""" + Systemd is required to run TLJH + Running inside a plain docker container isn't supported + For local development, see http://tljh.jupyter.org/en/latest/contributing/dev-setup.html + """).strip() + assert output.returncode == 1