]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-essential-force-loopbreak
Fix segfault and out-of-bounds read in Binary fields
[apt.git] / test / integration / test-essential-force-loopbreak
index 842dce61c7b79104c8c780e568cbe90501f8236e..f585e9c424b02061e3356bc03092315c265a9466 100755 (executable)
@@ -1,22 +1,22 @@
 #!/bin/sh
 set -e
 
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
 
 setupenvironment
-configarchitecture 'amd64'
+configarchitecture 'native'
 
-insertinstalledpackage 'sysvinit' 'amd64' '1' 'Essential: yes'
+insertinstalledpackage 'sysvinit' 'native' '1' 'Essential: yes'
 
-buildsimplenativepackage 'sysvinit' 'amd64' '2' 'sid' 'Pre-Depends: sysvinit-core | systemd-sysv
+buildsimplenativepackage 'sysvinit' 'native' '2' 'sid' 'Pre-Depends: sysvinit-core | systemd-sysv
 Essential: yes'
-buildsimplenativepackage 'sysvinit-core' 'amd64' '2' 'sid'
+buildsimplenativepackage 'sysvinit-core' 'native' '2' 'sid'
 
-buildsimplenativepackage 'systemd-sysv' 'amd64' '2~conflict' 'sid-conflict' 'Conflicts: sysvinit (<< 2)
+buildsimplenativepackage 'systemd-sysv' 'native' '2~conflict' 'sid-conflict' 'Conflicts: sysvinit (<< 2)
 Breaks: sysvinit-core'
 
-buildsimplenativepackage 'systemd-sysv' 'amd64' '2~break' 'sid-break' 'Breaks: sysvinit (<< 2), sysvinit-core'
+buildsimplenativepackage 'systemd-sysv' 'native' '2~break' 'sid-break' 'Breaks: sysvinit (<< 2), sysvinit-core'
 
 setupaptarchive
 
@@ -25,25 +25,28 @@ cp -a rootdir/var/lib/dpkg/status dpkg.status.backup
 testforcebreak() {
        cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
        rm -f rootdir/var/lib/apt/extended_states
-       testequal 'Reading package lists...
+       testfailureequal "Reading package lists...
 Building dependency tree...
-The following extra packages will be installed:
+The following additional packages will be installed:
   sysvinit
 The following NEW packages will be installed:
   systemd-sysv
 The following packages will be upgraded:
   sysvinit
 1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
-E: This installation run will require temporarily removing the essential package sysvinit:amd64 due to a Conflicts/Pre-Depends loop. This is often bad, but if you really want to do it, activate the APT::Force-LoopBreak option.
-E: Internal Error, Could not early remove sysvinit:amd64 (2)' aptget install systemd-sysv -t "$1" -s
+E: This installation run will require temporarily removing the essential package sysvinit:$(getarchitecture 'native') due to a Conflicts/Pre-Depends loop. This is often bad, but if you really want to do it, activate the APT::Force-LoopBreak option.
+E: Internal Error, Could not early remove sysvinit:$(dpkg --print-architecture) (2)" aptget install systemd-sysv -t "$1" -s
        # ensure that really nothing happens
-       testfailure aptget install systemd-sysv -y -t "$1" -o Debug::pkgPackageManager=1
+       testfailure aptget install systemd-sysv -y -t "$1"
        testdpkginstalled 'sysvinit'
        testdpkgnotinstalled 'systemd-sysv'
 
        # with enough force however …
        cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
-       testsuccess aptget install systemd-sysv -y -t "$1" -o Debug::pkgPackageManager=1 -o APT::Force-LoopBreak=1
+       testsuccess aptget install systemd-sysv -y -t "$1" -o APT::Force-LoopBreak=1 -o Debug::pkgDpkgPm=1
+       cp rootdir/tmp/testsuccess.output apt.output
+       testsuccess grep -- '--force-remove-essential --remove sysvinit' apt.output
+       testsuccess aptget install systemd-sysv -y -t "$1" -o APT::Force-LoopBreak=1
        testdpkginstalled 'sysvinit' 'systemd-sysv'
 }