# HG changeset patch # User Jérémy Bobbio # Date 1562763521 -7200 # Node ID d1b5fd6129bd26566acc82828e076d62349d1bf5 # Parent 376168d1b14a0f5a20adb276227a06910d7f2aff [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. diff -r 376168d1b14a -r d1b5fd6129bd debian/tests/control --- /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 diff -r 376168d1b14a -r d1b5fd6129bd debian/tests/skeleton-packaging --- /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