[PATCH] Testsuite for checkarchitecture, and adjustments to pass the testsuite

Matt Palmer mpalmer at hezmatt.org
Thu Dec 16 01:16:11 UTC 2010


This contains a minimal test suite for pbuilder-buildpackage-funcs (just
covering the newly added checkarchitecture function), with tests as
suggested by http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=363193#186

There are also a couple of minor modifications to the checkarchitecture code
to fix bugs exposed by the testsuite.
---
 pbuilder-buildpackage-funcs      |    4 +-
 test_pbuilder-buildpackage-funcs |   74 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+), 2 deletions(-)
 create mode 100755 test_pbuilder-buildpackage-funcs

diff --git a/pbuilder-buildpackage-funcs b/pbuilder-buildpackage-funcs
index a757963..47d5da3 100644
--- a/pbuilder-buildpackage-funcs
+++ b/pbuilder-buildpackage-funcs
@@ -36,12 +36,12 @@ function checkarchitecture () {
     local ARCHES="$(cat $DSCFILE | grep Architecture | sed 's/^[^:]\+:\s*//')"
     local VALID_ARCH
     for d in $ARCHES; do
-        if dpkg-architecture -a$ARCH -i$d; then
+        if dpkg-architecture -a$ARCH -i$d >/dev/null 2>&1 || [ "$d" = "all" ]; then
             VALID_ARCH="yes"
             break
         fi
     done
-    if [ ! $VALID_ARCH ] && [ ! "$ARCHES" = "all" ]; then
+    if [ "$VALID_ARCH" != "yes" ]; then
         return 1
     fi
 }
diff --git a/test_pbuilder-buildpackage-funcs b/test_pbuilder-buildpackage-funcs
new file mode 100755
index 0000000..f14f2ba
--- /dev/null
+++ b/test_pbuilder-buildpackage-funcs
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+# testsuite to test pbuilder-buildpackage-funcs.
+
+if [ -n "$PBUILDER_CHECKOUT" ]; then
+    . "$PBUILDER_CHECKOUT/testlib.sh"
+
+    . "$PBUILDER_CHECKOUT/pbuilder-buildpackage-funcs"
+else
+    # these currently don't need to be exported
+    PBUILDER_TEST_ROOT="${PBUILDER_ROOT:-}"
+    PBUILDER_TEST_PKGLIBDIR="${PBUILDER_PKGLIBDIR:-$PBUILDER_ROOT/usr/lib/pbuilder}"
+    . "$PBUILDER_TEST_PKGLIBDIR/testlib.sh"
+
+    . "$PBUILDER_TEST_PKGLIBDIR/pbuilder-buildpackage-funcs"
+fi
+
+DSC=""
+
+cleanup() {
+    if [ -n "$DSC" ]; then
+        rm -f "$DSC"
+    fi
+}
+
+write_dsc_for_checkarchitecture() {
+    local ARCHLIST="$1"
+    cat <<EOF >"$DSC"
+Source: test
+Architecture: $ARCHLIST
+EOF
+}
+
+trap cleanup sigpipe sighup exit
+
+# TODO move to build dir
+DSC="$(tempfile)"
+
+write_dsc_for_checkarchitecture "any"
+expect_success checkarchitecture $DSC "i386"
+expect_success checkarchitecture $DSC "amd64"
+expect_success checkarchitecture $DSC "armel"
+expect_success checkarchitecture $DSC "kfreebsd-i386"
+
+write_dsc_for_checkarchitecture "all"
+expect_success checkarchitecture $DSC "i386"
+expect_success checkarchitecture $DSC "amd64"
+expect_success checkarchitecture $DSC "armel"
+expect_success checkarchitecture $DSC "kfreebsd-i386"
+
+write_dsc_for_checkarchitecture "i386 amd64"
+expect_success checkarchitecture $DSC "i386"
+expect_success checkarchitecture $DSC "amd64"
+expect_fail checkarchitecture $DSC "armel"
+
+write_dsc_for_checkarchitecture "linux-any"
+expect_success checkarchitecture $DSC "i386"
+expect_success checkarchitecture $DSC "amd64"
+expect_success checkarchitecture $DSC "armel"
+expect_fail checkarchitecture $DSC "kfreebsd-i386"
+
+write_dsc_for_checkarchitecture "hurd-any"
+expect_fail checkarchitecture $DSC "i386"
+expect_fail checkarchitecture $DSC "amd64"
+expect_success checkarchitecture $DSC "hurd-i386"
+
+# Policy 5.6.8 says that .dsc files can have this style of architecture list
+write_dsc_for_checkarchitecture "all i386 amd64"
+expect_success checkarchitecture $DSC "i386"
+expect_success checkarchitecture $DSC "amd64"
+expect_success checkarchitecture $DSC "armel"
+expect_success checkarchitecture $DSC "kfreebsd-i386"
+
+testlib_summary
-- 
1.5.6.5


--qjNfmADvan18RZcF--





More information about the Pbuilder-maint mailing list