From 514ab7d985a89d25e5b0dc0dfac6bba8eb3c91e7 Mon Sep 17 00:00:00 2001 From: yuvipanda Date: Sat, 29 Jul 2017 16:05:26 -0700 Subject: [PATCH] Add integration tests! We run jupyter-repo2docker and verify that the things we expect to be installed are installed. --- tests/conftest.py | 32 +++++++++++++++++++++++++++++++ tests/venv/numpy/requirements.txt | 1 + tests/venv/numpy/verify | 6 ++++++ tests/venv/py2/requirements.txt | 1 + tests/venv/py2/runtime.txt | 1 + tests/venv/py2/verify | 7 +++++++ 6 files changed, 48 insertions(+) create mode 100644 tests/conftest.py create mode 100644 tests/venv/numpy/requirements.txt create mode 100755 tests/venv/numpy/verify create mode 100644 tests/venv/py2/requirements.txt create mode 100644 tests/venv/py2/runtime.txt create mode 100755 tests/venv/py2/verify diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..dc8a0a82 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,32 @@ +""" +Custom test collector for our integration tests. + +Each directory that has a script named 'verify' is considered +a test. jupyter-repo2docker is run on that directory, +and then ./verify is run inside the built container. It should +return a non-zero exit code for the test to be considered a +success. +""" +import pytest +import subprocess + +def pytest_collect_file(parent, path): + if path.basename == 'verify': + return Repo(path, parent) + +class Repo(pytest.File): + def collect(self): + yield RepoTest(self.fspath.basename, self, self.fspath) + + +class RepoTest(pytest.Item): + def __init__(self, name, parent, path): + super().__init__(name, parent) + self.path = path + + def runtest(self): + subprocess.check_call([ + 'jupyter-repo2docker', + str(self.path.dirname), + './verify' + ]) diff --git a/tests/venv/numpy/requirements.txt b/tests/venv/numpy/requirements.txt new file mode 100644 index 00000000..24ce15ab --- /dev/null +++ b/tests/venv/numpy/requirements.txt @@ -0,0 +1 @@ +numpy diff --git a/tests/venv/numpy/verify b/tests/venv/numpy/verify new file mode 100755 index 00000000..660c1f48 --- /dev/null +++ b/tests/venv/numpy/verify @@ -0,0 +1,6 @@ +#!/usr/bin/env python +import sys + +assert sys.version_info[:2] == (3, 5) + +import numpy diff --git a/tests/venv/py2/requirements.txt b/tests/venv/py2/requirements.txt new file mode 100644 index 00000000..24ce15ab --- /dev/null +++ b/tests/venv/py2/requirements.txt @@ -0,0 +1 @@ +numpy diff --git a/tests/venv/py2/runtime.txt b/tests/venv/py2/runtime.txt new file mode 100644 index 00000000..16e82143 --- /dev/null +++ b/tests/venv/py2/runtime.txt @@ -0,0 +1 @@ +python-2.7 diff --git a/tests/venv/py2/verify b/tests/venv/py2/verify new file mode 100755 index 00000000..3f854a8b --- /dev/null +++ b/tests/venv/py2/verify @@ -0,0 +1,7 @@ +#!/usr/bin/env python2 +import sys + +print(sys.version_info) +assert sys.version_info[:2] == (2, 7) + +import numpy