#!/bin/sh set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment configarchitecture 'amd64' 'i386' # regression test for #754904 testfailureequal 'E: Unsupported file /dev/null given on commandline' aptget install -qq /dev/null # only consider .deb files cat > foo.rpm <<EOF I'm not a deb, I'm a teapot. EOF testfailureequal 'E: Unsupported file ./foo.rpm given on commandline' aptget install -qq ./foo.rpm # and ensure we fail for invalid debs mv foo.rpm foo.deb testfailuremsg "E: Sub-process Popen returned an error code (2) E: Encountered a section with no Package: header E: Problem with MergeList ${TMPWORKINGDIRECTORY}/foo.deb E: The package lists or status file could not be parsed or opened." aptget install ./foo.deb buildsimplenativepackage 'foo' 'i386,amd64' '1.0' testfailureequal "Reading package lists... Building dependency tree... Note, selecting 'foo:i386' instead of './incoming/foo_1.0_i386.deb' Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb' Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: foo:i386 : Conflicts: foo but 1.0 is to be installed foo : Conflicts: foo:i386 but 1.0 is to be installed E: Unable to correct problems, you have held broken packages." aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s -q=0 testdpkgnotinstalled 'foo' testsuccess aptget install ./incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 testdpkginstalled 'foo:i386' testsuccessequal "Reading package lists... Building dependency tree... Reading state information... Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb' The following packages will be REMOVED: foo:i386 The following NEW packages will be installed: foo 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv foo:i386 [1.0] Inst foo (1.0 local-deb [amd64]) Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s -q=0 # Check that installing the local deb works if it is not the candidate echo "Package: foo Pin: version 1.0 Pin-Priority: -1" > rootdir/etc/apt/preferences testsuccessequal "Reading package lists... Building dependency tree... Reading state information... Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb' The following packages will be REMOVED: foo:i386 The following NEW packages will be installed: foo 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv foo:i386 [1.0] Inst foo (1.0 local-deb [amd64]) Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s -q=0 createpkg() { local PKG="pkg-$1" mkdir -p ./incoming/$PKG/DEBIAN if [ -n "$2" ]; then echo -n "$2" >> ./incoming/$PKG/DEBIAN/control fi echo "Package: $PKG Version: 0 Priority: extra Maintainer: No Body <no@example.org> Architecture: all Description: test package" >> ./incoming/$PKG/DEBIAN/control if [ -n "$3" ]; then echo -n "$3" >> ./incoming/$PKG/DEBIAN/control fi testsuccess dpkg-deb --build ./incoming/$PKG/ ./incoming #dpkg-deb -I ./incoming/${PKG}_0_all.deb control } createpkg 'as-it-should-be' createpkg 'leading-newline' ' ' createpkg 'trailing-newline' '' ' ' testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb testsuccess aptget install ./incoming/pkg-leading-newline_0_all.deb testsuccess aptget install ./incoming/pkg-trailing-newline_0_all.deb