[pkg] Add new autopkgtest for skeleton packaging 3.26
authorJérémy Bobbio <jeremy.bobbio@irq7.fr>
Wed, 10 Jul 2019 14:58:41 +0200
branch3.26
changeset 12690 d1b5fd6129bd
parent 12689 376168d1b14a
child 12697 3b48af0ec776
[pkg] Add new autopkgtest for skeleton packaging When running `cubicweb-ctl newcube`, the generated template provides debian packaging. So let's add automated tests for that using autopkgtest. The new test will generated a new cube, build a source tarball, build the package, try to install it, see if the Python 2 and 3 modules are available and even run autopkgtest against the newly created packages. Along the way it will also print information about the generated package: buildinfo, package content, and lintian report.
debian/tests/control
debian/tests/skeleton-packaging
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/tests/control	Wed Jul 10 14:58:41 2019 +0200
@@ -0,0 +1,6 @@
+Tests: skeleton-packaging
+Depends:
+ python-cubicweb, cubicweb-ctl,
+ python-pyramid, python-wsgicors,
+ devscripts, equivs, lintian, autopkgtest
+Restrictions: allow-stderr, needs-root
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/tests/skeleton-packaging	Wed Jul 10 14:58:41 2019 +0200
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+set -e
+set -x
+
+if [ -z "$AUTOPKGTEST_TMP" ]; then
+	echo "Not running as part as autopkgtest" >&2
+	exit 250
+fi
+
+# Switch to unprivileged user if needed
+if [ "$(id -u)" = 0 ]; then
+	apt-get install -q -y sudo
+	echo 'Defaults !fqdn' > /etc/sudoers.d/fqdn
+	echo 'nobody ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/nobody
+	chown nobody:nogroup "$AUTOPKGTEST_TMP"
+	exec su nobody -s /bin/sh -c "$0"
+fi
+
+cd "$AUTOPKGTEST_TMP"
+
+# Create a cube
+PACKAGE="cubicweb-mytest"
+cubicweb-ctl newcube -s 'Just a test cube' ${PACKAGE#cubicweb-}
+cd "$PACKAGE"
+
+UPSTREAM_VERSION=$(python setup.py --version)
+DEBIAN_VERSION=$(dpkg-parsechangelog -S Version)
+
+# Create source tarball
+python setup.py sdist
+mv "dist/${PACKAGE}-${UPSTREAM_VERSION}.tar.gz" "../${PACKAGE}_${UPSTREAM_VERSION}.orig.tar.gz"
+
+# Install build-dependencies
+mk-build-deps --install --root-cmd sudo --remove \
+	--tool 'apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --quiet --assume-yes'
+
+# Build!
+dpkg-buildpackage
+
+# Output .buildinfo for posterity
+cat ../*.buildinfo
+
+# Output package content, again for posterity
+debc
+
+# Install the package
+sudo debi --with-depends
+
+lintian -i ../*.dsc ../*.changes
+
+# Test if Python module is usable
+python -c 'import cubicweb_mytest; print(dir(cubicweb_mytest))'
+
+# Test if Python3 module is usable
+python3 -c 'import cubicweb_mytest; print(dir(cubicweb_mytest))'
+
+# Run autopkgtest (uh… inception, anyone?)
+sudo autopkgtest ../*.changes -- null