aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattia Rizzolo <mattia@mapreri.org>2015-09-18 09:19:22 +0000
committerMattia Rizzolo <mattia@mapreri.org>2015-09-18 09:19:22 +0000
commit86f8423f481d8e9cddcfd8da808eee600f96675a (patch)
treea418c07c1bbb4225d81088a555313319abeb4bbf
parentc72975124a45c9f0e4295ac89c5d73b7e566e182 (diff)
downloadpbuilder-86f8423f481d8e9cddcfd8da808eee600f96675a.tar
pbuilder-86f8423f481d8e9cddcfd8da808eee600f96675a.tar.gz
Add a new example hook B20autopkgtest to automatically run DEP8 tests when available
More info: http://dep.debian.net/deps/dep8/ https://anonscm.debian.org/cgit/autopkgtest/autopkgtest.git/plain/doc/README.package-tests.rst The initial script is licensed under another license. Agreement in changing the license from Expat to GPL-2+ is available in https://bugs.debian.org/750137 Thanks: Christoph Berg and Michael Prokop for writing the initial script Closes: #750137
-rw-r--r--examples/B20autopkgtest94
1 files changed, 94 insertions, 0 deletions
diff --git a/examples/B20autopkgtest b/examples/B20autopkgtest
new file mode 100644
index 0000000..ef50a0c
--- /dev/null
+++ b/examples/B20autopkgtest
@@ -0,0 +1,94 @@
+#!/bin/sh
+# Copyright © 2012 Christoph Berg <myon@debian.org>
+# © 2013 Michael Prokop <mika@debian.org>
+# © 2015 Mattia Rizzolo <mattia@mapreri.org>
+#
+# This file is part of pbuilder -- personal Debian package builder
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+BUILDDIR="${BUILDDIR:-/tmp/buildd}"
+
+if [ "${ADT:-}" = "skip" ]; then
+ echo "Skipping autopkgtests as requested (ADT is set to 'skip')"
+ exit 0
+fi
+
+if [ "${ADT:-}" = "external" ]; then
+ echo "Skipping internal autopkgtests as external testing was requested via ADT variable"
+ exit 0
+fi
+
+set -ex
+
+cd "$BUILDDIR/*/debian/.."
+
+if [ ! -f debian/tests/control ]; then
+ echo "Package does not have autopkgtest support, debian/tests/control is missing"
+ exit 0
+fi
+
+if [ ! -f debian/files ]; then
+ echo "Package source is not built, debian/files is missing" >&2
+ exit 1
+fi
+
+if [ -n "${ADT_OPTIONS:-}" ] ; then
+ echo "*** Using provided ADT_OPTIONS $ADT_OPTIONS ***"
+fi
+
+# try to launch adt-run in a new PID namespace so several testsuites can run
+# in parallel, newpid exists in jessie and newer only though
+unset newpid_name
+if ! apt-cache policy newpid | grep -q 'newpid:' ; then
+ echo "The newpid package doesn't seem to be available, not considering for installation"
+else
+ echo "The newpid package seems to be available, considering for installation"
+ newpid_name='newpid'
+fi
+
+# runner/adt-run uses apt-utils's apt-ftparchive and
+# pbuilder's pbuilder-satisfydepends-classic
+apt-get install -y autopkgtest apt-utils pbuilder $newpid_name
+
+# since autopkgtest 3.16 the --tmp-dir option is gone, make sure
+# we've --output-dir available though before using it
+if adt-run --help | grep -q -- --output-dir 2>/dev/null ; then
+ OUTPUT_OPTION='--output-dir'
+else
+ OUTPUT_OPTION='--tmp-dir'
+fi
+
+mkdir -p "$BUILDDIR/autopkgtest.out"
+
+$newpid_name adt-run \
+ ${OUTPUT_OPTION} "$BUILDDIR/autopkgtest.out" \
+ --summary "$BUILDDIR/autopkgtest.summary" \
+ "$BUILDDIR"/*.deb \
+ --built-tree "${PWD}" \
+ ${ADT_OPTIONS:-} --- adt-virt-null || EXIT=$?
+
+# collect autopkgtest output in a single file so pbuilder automatically copies it
+tar -caf "$BUILDDIR/autopkgtest.tar.gz" "$BUILDDIR/autopkgtest.out"
+
+case ${EXIT:-0} in
+ 2|4|6|8) # let adtsummary_tap report the failure
+ exit 0
+ ;;
+ *)
+ exit ${EXIT:-0}
+ ;;
+esac