[PATCH 6/7] Enable tox tests in Docker

Daniel Axtens dja at axtens.net
Tue Aug 2 10:24:45 AEST 2016


 * Install the python2 dev packages. Update the readme to tell
   people we now download > 200MB of packages, not ~ 200MB.

 * Update the tox.ini file:

    * python3.4 -> python3.5 as that's what's shipped with Ubuntu 16.04
    * Drop Django 1.6, it's not supported by django-request-framework
    * Drop Django 1.7, it seems to break with sqlparse

   If any of these changes are controversial I'm happy to revisit them.
   Also:

    * Pass in the new environment variables for db host and port.
    * Pass in DISPLAY, XAUTHORITY and HOME to fix seleinum tests.

 * Update the entrypoint script to allow you to do --tox and
   --quick-tox in the same way as --test and --quick-test.
   Update the readme appropriately.

Signed-off-by: Daniel Axtens <dja at axtens.net>
---
 README.md            | 4 +++-
 docker/Dockerfile    | 3 ++-
 docker/entrypoint.sh | 7 +++++++
 tox.ini              | 9 ++++-----
 4 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/README.md b/README.md
index 6f889c09def0..ca212bc6d707 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ of community projects.
 
 1. Install Docker and docker-compose.
 2. Clone this repo, as with vagrant.
-3. Build the images. This will download ~200MB from the internet:
+3. Build the images. (This will download over 200MB from the internet.)
 
         $ docker-compose build
 
@@ -60,6 +60,8 @@ of community projects.
 
           $ docker-compose run --rm web --test
 
+  * Tox tests can be run with `--quick-tox` and `--tox`.
+
   * To reset the database before beginning, add `--reset` to the command line after `web` and before any other arguments.
 
   * If you want to run non-headless tests, you'll need something like this ugly hack:
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 507e6c843fe2..365becd107ca 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -20,7 +20,8 @@ COPY docker/google-chrome.list /etc/apt/sources.list.d/
 # to install succesfully
 RUN apt-get update -qq && \
     apt-get install -y --allow-unauthenticated --no-install-recommends \
-    python python3-dev python3-pip python3-setuptools python3-wheel \
+    python-dev python-pip python-setuptools python-wheel \
+    python3-dev python3-pip python3-setuptools python3-wheel \
     libmysqlclient-dev mysql-client curl unzip xvfb google-chrome-stable \
     hicolor-icon-theme build-essential && \
     curl http://chromedriver.storage.googleapis.com/$chromedriver_version/chromedriver_linux64.zip -o /tmp/chromedriver.zip && \
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
index 7a42165455b1..15b8dceee2a5 100755
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -71,6 +71,13 @@ elif [ "$1" == "--quick-test" ]; then
     python3 manage.py test
 elif [ "$1" == "--test" ]; then
     xvfb-run --server-args='-screen 0, 1024x768x16' python3 manage.py test
+elif [ "$1" == "--quick-tox" ]; then
+    shift
+    export PW_SKIP_BROWSER_TESTS=yes
+    tox $@
+elif [ "$1" == "--tox" ]; then
+    shift
+    xvfb-run --server-args='-screen 0, 1024x768x16' tox $@
 else # run whatever CMD is set to
     $@
 fi
diff --git a/tox.ini b/tox.ini
index d1703251a197..4050d1f8e7b9 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,21 +1,20 @@
 [tox]
 minversion = 2.0
-envlist = py{27,34}-django{16,17,18,19}
+envlist = py{27,35}-django{18,19}
 skipsdist = True
 
 [testenv]
 deps =
     -r{toxinidir}/requirements-test.txt
-    django16: django>=1.6,<1.7
-    django17: django>=1.7,<1.8
     django18: django>=1.8,<1.9
     django19: django>=1.9,<1.10
 setenv =
     DJANGO_SETTINGS_MODULE = patchwork.settings.dev
 passenv =
     http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
-    PW_TEST_DB_TYPE PW_TEST_DB_USER PW_TEST_DB_PASS
-    DISPLAY SELENIUM_BROWSER PW_SKIP_BROWSER_TESTS
+    PW_TEST_DB_TYPE PW_TEST_DB_USER PW_TEST_DB_PASS PW_TEST_DB_HOST
+    PW_TEST_DB_PORT DISPLAY SELENIUM_BROWSER PW_SKIP_BROWSER_TESTS
+    DISPLAY HOME XAUTHORITY
 commands =
     {toxinidir}/manage.py test --noinput --liveserver=localhost:9000-9200 \
         '{posargs:patchwork}'
-- 
2.7.4



More information about the Patchwork mailing list