[pkg] Run test suite as part of autopkgtest
authorJérémy Bobbio <jeremy.bobbio@irq7.fr>
Wed, 05 Jun 2019 18:35:51 +0200
changeset 12643 c0ff60cd4c1f
parent 12642 5722d8c461eb
child 12644 9ac55b30896d
[pkg] Run test suite as part of autopkgtest Add support for autopkgtest. The test “unittest” will run the test suite using pytest. As we need PostgreSQL in the test environment and open network connection, the test is marked with `isolation-container` and requires at least LXC to be run, e.g: autopkgtest -s -- lxc -s autopkgtest-sid
debian/changelog
debian/tests/control
debian/tests/unittest
--- a/debian/changelog	Wed Jun 05 16:29:04 2019 +0200
+++ b/debian/changelog	Wed Jun 05 18:35:51 2019 +0200
@@ -2,6 +2,7 @@
 
   * Switch all Debian packages to Python 3.
   * Switch to Debian source format 3.0 (quilt).
+  * Run test suite as part of autopkgtest.
 
  -- Jérémy Bobbio <jeremy.bobbio@irq7.fr>  Wed, 29 May 2019 16:06:20 +0200
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/tests/control	Wed Jun 05 18:35:51 2019 +0200
@@ -0,0 +1,9 @@
+Tests: unittest
+Depends:
+ python3-cubicweb,
+ @builddeps@,
+ python3-pytest,
+ python3-crypto, python3-psycopg2,
+ postgresql, postgresql-plpython,
+ firefox
+Restrictions: allow-stderr, isolation-container
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/tests/unittest	Wed Jun 05 18:35:51 2019 +0200
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+set -e
+set -x
+
+### Setup tests
+
+find cubicweb -type d -name 'test' | while read dir; do
+	mkdir -p "$AUTOPKGTEST_TMP"/$(dirname "$dir")
+	cp -r "$dir" "$AUTOPKGTEST_TMP/$dir"
+done
+chown -R nobody:nogroup "$AUTOPKGTEST_TMP"
+
+### Find PostgreSQL binaries
+
+POSTGRESQL_BINDIR=$(find /usr/lib/postgresql -type f -name 'initdb' -printf "%h\n" | head -n 1)
+test "$POSTGRESQL_BINDIR" || { echo "Unable to find 'initdb'" >&2; exit 1; }
+
+### Run tests
+
+for py in $(py3versions -r 2>/dev/null); do
+	cd "$AUTOPKGTEST_TMP"
+	echo "Testing with $py:"
+	su nobody --shell /bin/sh \
+		-c "env PATH='$PATH:$POSTGRESQL_BINDIR' $py -m pytest -v"
+done