[PATCH 3 of 3 cubicweb update-skel-pkg] [pkg] Add new autopkgtest for skeleton packaging

Jérémy Bobbio jeremy.bobbio at irq7.fr
Sun Jun 23 09:12:41 CEST 2019


# HG changeset patch
# User Jérémy Bobbio <jeremy.bobbio at irq7.fr>
# Date 1560785104 -7200
#      Mon Jun 17 17:25:04 2019 +0200
# Node ID 3fa50f2af63e29ce312502ef064c090cdb976a3a
# Parent  1ce09fce640946c1719ed66b8d9e8ab42416375e
# EXP-Topic update-skel-pkg
[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 3 module is
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.

diff -r 1ce09fce6409 -r 3fa50f2af63e debian/tests/control
--- a/debian/tests/control	Wed Jun 19 09:51:38 2019 +0200
+++ b/debian/tests/control	Mon Jun 17 17:25:04 2019 +0200
@@ -7,3 +7,10 @@
  postgresql, postgresql-plpython,
  firefox
 Restrictions: allow-stderr, isolation-container
+
+Tests: skeleton-packaging
+Depends:
+ python3-cubicweb, cubicweb-ctl,
+ python3-pyramid, python3-wsgicors,
+ devscripts, equivs, lintian, autopkgtest
+Restrictions: allow-stderr, needs-root
diff -r 1ce09fce6409 -r 3fa50f2af63e debian/tests/skeleton-packaging
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/tests/skeleton-packaging	Mon Jun 17 17:25:04 2019 +0200
@@ -0,0 +1,58 @@
+#!/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=$(python3 setup.py --version)
+DEBIAN_VERSION=$(dpkg-parsechangelog -S Version)
+
+# Create source tarball
+python3 setup.py sdist
+mv "dist/${PACKAGE}-${UPSTREAM_VERSION}.tar.gz" "../${PACKAGE}_${UPSTREAM_VERSION}.orig.tar.gz"
+
+# Install build-dependencies
+mk-build-deps
+mv "${PACKAGE}-build-deps_${DEBIAN_VERSION}_all.deb" ..
+sudo dpkg --unpack "../${PACKAGE}-build-deps_${DEBIAN_VERSION}_all.deb"
+sudo apt-get -q -y -f install --no-install-recommends
+
+# 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
+python3 -c 'import cubicweb_mytest; print(dir(cubicweb_mytest))'
+
+# Run autopkgtest (uh… inception, anyone?)
+sudo autopkgtest ../*.changes -- null


More information about the cubicweb-devel mailing list