diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/integration/framework | 8 | ||||
-rwxr-xr-x | test/integration/test-apt-get-upgrade | 78 | ||||
-rwxr-xr-x | test/integration/test-apt-progress-fd | 71 | ||||
-rwxr-xr-x | test/integration/test-apt-progress-fd-error | 22 | ||||
-rwxr-xr-x | test/integration/test-apt-progress-fd-error-postinst | 22 | ||||
-rw-r--r-- | test/libapt/strutil_test.cc | 27 |
6 files changed, 226 insertions, 2 deletions
diff --git a/test/integration/framework b/test/integration/framework index d899bb574..20f3487cc 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -116,7 +116,7 @@ aptitude() { } gdb() { echo "gdb: run »$*«" - APT_CONFIG=aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which gdb) ${BUILDDIRECTORY}/$1 + APT_CONFIG=aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which gdb) ${BUILDDIRECTORY}/$1 --args $* } http() { LD_LIBRARY_PATH=${BUILDDIRECTORY} ${BUILDDIRECTORY}/methods/http @@ -335,6 +335,7 @@ buildsimplenativepackage() { local SECTION="${7:-others}" local PRIORITY="${8:-optional}" + local FILE_TREE="$9" local DISTSECTION if [ "$SECTION" = "$(echo "$SECTION" | cut -d'/' -f 2)" ]; then DISTSECTION="main" @@ -391,9 +392,12 @@ Package: $NAME" >> ${BUILDDIR}/debian/control mkdir -p ${BUILDDIR}/debian/tmp/DEBIAN ${BUILDDIR}/debian/tmp/usr/share/doc/${NAME} ${BUILDDIR}/debian/tmp/usr/bin cp ${BUILDDIR}/debian/copyright ${BUILDDIR}/debian/changelog ${BUILDDIR}/FEATURES ${BUILDDIR}/debian/tmp/usr/share/doc/${NAME} cp ${BUILDDIR}/${NAME} ${BUILDDIR}/debian/tmp/usr/bin/${NAME}-${arch} + if [ -n "$FILE_TREE" ]; then + cp -ar "$FILE_TREE" ${BUILDDIR}/debian/tmp + fi + (cd ${BUILDDIR}; dpkg-gencontrol -DArchitecture=$arch) (cd ${BUILDDIR}/debian/tmp; md5sum $(find usr/ -type f) > DEBIAN/md5sums) - dpkg-deb --build ${BUILDDIR}/debian/tmp ${BUILDDIR}/.. 2> /dev/null > /dev/null echo "pool/${NAME}_${VERSION}_${arch}.deb" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.pkglist done diff --git a/test/integration/test-apt-get-upgrade b/test/integration/test-apt-get-upgrade new file mode 100755 index 000000000..23446299c --- /dev/null +++ b/test/integration/test-apt-get-upgrade @@ -0,0 +1,78 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture "i386" + +# simple case +insertpackage 'stable' 'upgrade-simple' 'all' '1.0' +insertpackage 'unstable' 'upgrade-simple' 'all' '2.0' +insertinstalledpackage 'upgrade-simple' 'all' '1.0' + +# upgrade with a new dependency +insertpackage 'stable' 'upgrade-with-new-dep' 'all' '1.0' +insertpackage 'unstable' 'upgrade-with-new-dep' 'all' '2.0' 'Depends: new-dep' +insertpackage 'stable' 'new-dep' 'all' '1.0' +insertinstalledpackage 'upgrade-with-new-dep' 'all' '1.0' + +# upgrade with conflict and a new pkg with higher priority than conflict +insertpackage 'stable' 'upgrade-with-conflict' 'all' '1.0' +insertpackage 'unstable' 'upgrade-with-conflict' 'all' '2.0' 'Conflicts: conflicting-dep' 'standard' +insertpackage 'stable' 'conflicting-dep' 'all' '1.0' +insertinstalledpackage 'upgrade-with-conflict' 'all' '1.0' +insertinstalledpackage 'conflicting-dep' 'all' '1.0' + + +setupaptarchive + +# Test if normal upgrade works as expected +testequal 'Reading package lists... +Building dependency tree... +The following packages have been kept back: + upgrade-with-conflict upgrade-with-new-dep +The following packages will be upgraded: + upgrade-simple +1 upgraded, 0 newly installed, 0 to remove and 2 not upgraded. +Inst upgrade-simple [1.0] (2.0 unstable [all]) +Conf upgrade-simple (2.0 unstable [all])' aptget -s upgrade + +# Test if apt-get upgrade --with-new-pkgs works +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + new-dep +The following packages have been kept back: + upgrade-with-conflict +The following packages will be upgraded: + upgrade-simple upgrade-with-new-dep +2 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst new-dep (1.0 stable [all]) +Inst upgrade-simple [1.0] (2.0 unstable [all]) +Inst upgrade-with-new-dep [1.0] (2.0 unstable [all]) +Conf new-dep (1.0 stable [all]) +Conf upgrade-simple (2.0 unstable [all]) +Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s upgrade --with-new-pkgs + +# Test if apt-get dist-upgrade works +testequal 'Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + conflicting-dep +The following NEW packages will be installed: + new-dep +The following packages will be upgraded: + upgrade-simple upgrade-with-conflict upgrade-with-new-dep +3 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. +Remv conflicting-dep [1.0] +Inst upgrade-with-conflict [1.0] (2.0 unstable [all]) +Inst new-dep (1.0 stable [all]) +Inst upgrade-simple [1.0] (2.0 unstable [all]) +Inst upgrade-with-new-dep [1.0] (2.0 unstable [all]) +Conf upgrade-with-conflict (2.0 unstable [all]) +Conf new-dep (1.0 stable [all]) +Conf upgrade-simple (2.0 unstable [all]) +Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade + diff --git a/test/integration/test-apt-progress-fd b/test/integration/test-apt-progress-fd new file mode 100755 index 000000000..5f73c8f8c --- /dev/null +++ b/test/integration/test-apt-progress-fd @@ -0,0 +1,71 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture 'amd64' 'i386' + +buildsimplenativepackage 'testing' 'amd64' '0.1' 'stable' +buildsimplenativepackage 'testing' 'amd64' '0.8.15' 'stable' +buildsimplenativepackage 'testing2' 'amd64,i386' '0.8.15' 'stable' +setupaptarchive + +# install native +exec 3> apt-progress.log +testsuccess aptget install testing=0.1 -y -o APT::Status-Fd=3 +testequal "dlstatus:1:0:Retrieving file 1 of 1 +dlstatus:1:0:Retrieving file 1 of 1 +pmstatus:dpkg-exec:0:Running dpkg +pmstatus:testing:0:Installing testing +pmstatus:testing:20:Preparing testing +pmstatus:testing:40:Unpacking testing +pmstatus:testing:60:Preparing to configure testing +pmstatus:dpkg-exec:60:Running dpkg +pmstatus:testing:60:Configuring testing +pmstatus:testing:80:Configuring testing +pmstatus:testing:100:Installed testing" cat apt-progress.log + +# upgrade +exec 3> apt-progress.log +testsuccess aptget install testing=0.8.15 -y -o APT::Status-Fd=3 +testequal "dlstatus:1:0:Retrieving file 1 of 1 +dlstatus:1:0:Retrieving file 1 of 1 +pmstatus:dpkg-exec:0:Running dpkg +pmstatus:testing:20:Preparing testing +pmstatus:testing:40:Unpacking testing +pmstatus:testing:60:Preparing to configure testing +pmstatus:dpkg-exec:60:Running dpkg +pmstatus:testing:60:Configuring testing +pmstatus:testing:80:Configuring testing +pmstatus:testing:100:Installed testing" cat apt-progress.log + +# and remove +exec 3> apt-progress.log +testsuccess aptget remove testing -y -o APT::Status-Fd=3 +testequal "pmstatus:dpkg-exec:0:Running dpkg +pmstatus:testing:0:Removing testing +pmstatus:testing:33.3333:Preparing for removal of testing +pmstatus:testing:66.6667:Removing testing +pmstatus:testing:100:Removed testing" cat apt-progress.log + + +# install non-native and ensure we get proper progress info +exec 3> apt-progress.log +testsuccess aptget install testing2:i386 -y -o APT::Status-Fd=3 + +# and compare +testequal "dlstatus:1:0:Retrieving file 1 of 1 +dlstatus:1:0:Retrieving file 1 of 1 +pmstatus:dpkg-exec:0:Running dpkg +pmstatus:testing2:0:Installing testing2 +pmstatus:testing2:20:Preparing testing2 +pmstatus:testing2:40:Unpacking testing2 +pmstatus:testing2:60:Preparing to configure testing2 +pmstatus:dpkg-exec:60:Running dpkg +pmstatus:testing2:60:Configuring testing2 +pmstatus:testing2:80:Configuring testing2 +pmstatus:testing2:100:Installed testing2" cat apt-progress.log + +rm -f apt-progress*.log
\ No newline at end of file diff --git a/test/integration/test-apt-progress-fd-error b/test/integration/test-apt-progress-fd-error new file mode 100755 index 000000000..96d66371a --- /dev/null +++ b/test/integration/test-apt-progress-fd-error @@ -0,0 +1,22 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture 'amd64' 'i386' + +mkdir -p usr/bin +touch usr/bin/file-conflict + +buildsimplenativepackage 'foo1' 'amd64,i386' '0.8.15' 'stable' '' 'pkg with file conflicts' '' '' 'usr/' +buildsimplenativepackage 'foo2' 'amd64,i386' '0.8.15' 'stable' '' 'pkg with file conflicts' '' '' 'usr/' + +setupaptarchive + +exec 3> apt-progress.log +testfailure aptget install foo1 foo2 -y -o APT::Status-Fd=3 +msgtest "Ensure correct error message" +grep -q "aptarchive/pool/foo2_0.8.15_amd64.deb :40:trying to overwrite '/usr/bin/file-conflict', which is also in package foo1 0.8.15" apt-progress.log && msgpass || (cat apt-progress.log && msgfail) + diff --git a/test/integration/test-apt-progress-fd-error-postinst b/test/integration/test-apt-progress-fd-error-postinst new file mode 100755 index 000000000..0b6e70212 --- /dev/null +++ b/test/integration/test-apt-progress-fd-error-postinst @@ -0,0 +1,22 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture 'amd64' 'i386' + +mkdir -p DEBIAN/ +echo "#!/bin/sh\nexit 1" > DEBIAN/postinst +chmod 755 DEBIAN/postinst + +buildsimplenativepackage 'postinst-error' 'amd64,i386' '0.8.15' 'stable' '' 'pkg with posinst error' '' '' './DEBIAN' + +setupaptarchive + +exec 3> apt-progress.log +testfailure aptget install postinst-error -y -o APT::Status-Fd=3 +msgtest "Ensure correct error message for postinst error" +grep -q "pmerror:postinst-error :80:subprocess installed post-installation script returned error exit status 2" apt-progress.log && msgpass || msgfail + diff --git a/test/libapt/strutil_test.cc b/test/libapt/strutil_test.cc index bfe0d7222..110a20d27 100644 --- a/test/libapt/strutil_test.cc +++ b/test/libapt/strutil_test.cc @@ -42,5 +42,32 @@ int main(int argc,char *argv[]) output = DeEscapeString(input); equals(output, expected); + // Split + input = "status: libnet1:amd64: unpacked"; + vector<std::string> result = StringSplit(input, ": "); + equals(result[0], "status"); + equals(result[1], "libnet1:amd64"); + equals(result[2], "unpacked"); + equals(result.size(), 3); + + input = "status: libnet1:amd64: unpacked"; + result = StringSplit(input, "xxx"); + equals(result[0], input); + equals(result.size(), 1); + + input = "status: libnet1:amd64: unpacked"; + result = StringSplit(input, ""); + equals(result.size(), 0); + + input = "x:y:z"; + result = StringSplit(input, ":", 2); + equals(result.size(), 2); + equals(result[0], "x"); + equals(result[1], "y:z"); + + input = "abc"; + result = StringSplit(input, ""); + equals(result.size(), 0); + return 0; } |