]> git.saurik.com Git - apt.git/blame - test/integration/test-essential-force-loopbreak
apt-key: warn instead of fail on unreadable keyrings
[apt.git] / test / integration / test-essential-force-loopbreak
CommitLineData
0eb4af9d
DK
1#!/bin/sh
2set -e
3
3abb6a6a
DK
4TESTDIR="$(readlink -f "$(dirname "$0")")"
5. "$TESTDIR/framework"
0eb4af9d
DK
6
7setupenvironment
d91e3cfa 8configarchitecture 'native'
0eb4af9d 9
d91e3cfa 10insertinstalledpackage 'sysvinit' 'native' '1' 'Essential: yes'
0eb4af9d 11
d91e3cfa 12buildsimplenativepackage 'sysvinit' 'native' '2' 'sid' 'Pre-Depends: sysvinit-core | systemd-sysv
0eb4af9d 13Essential: yes'
d91e3cfa 14buildsimplenativepackage 'sysvinit-core' 'native' '2' 'sid'
0eb4af9d 15
d91e3cfa 16buildsimplenativepackage 'systemd-sysv' 'native' '2~conflict' 'sid-conflict' 'Conflicts: sysvinit (<< 2)
0eb4af9d
DK
17Breaks: sysvinit-core'
18
d91e3cfa 19buildsimplenativepackage 'systemd-sysv' 'native' '2~break' 'sid-break' 'Breaks: sysvinit (<< 2), sysvinit-core'
0eb4af9d
DK
20
21setupaptarchive
22
23cp -a rootdir/var/lib/dpkg/status dpkg.status.backup
24
25testforcebreak() {
26 cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
27 rm -f rootdir/var/lib/apt/extended_states
25b86db1 28 testfailureequal "Reading package lists...
0eb4af9d 29Building dependency tree...
e7ebb414 30The following additional packages will be installed:
0eb4af9d
DK
31 sysvinit
32The following NEW packages will be installed:
33 systemd-sysv
34The following packages will be upgraded:
35 sysvinit
361 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
d91e3cfa 37E: 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.
eb197ed7 38E: Internal Error, Could not early remove sysvinit:$(dpkg --print-architecture) (2)" aptget install systemd-sysv -t "$1" -s
0eb4af9d 39 # ensure that really nothing happens
1df24acf 40 testfailure aptget install systemd-sysv -y -t "$1"
0eb4af9d
DK
41 testdpkginstalled 'sysvinit'
42 testdpkgnotinstalled 'systemd-sysv'
43
44 # with enough force however …
45 cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
d3930f87
DK
46 testsuccess aptget install systemd-sysv -y -t "$1" -o APT::Force-LoopBreak=1 -o Debug::pkgDpkgPm=1
47 cp rootdir/tmp/testsuccess.output apt.output
48 testsuccess grep -- '--force-remove-essential --remove sysvinit' apt.output
1df24acf 49 testsuccess aptget install systemd-sysv -y -t "$1" -o APT::Force-LoopBreak=1
0eb4af9d
DK
50 testdpkginstalled 'sysvinit' 'systemd-sysv'
51}
52
53testforcebreak 'sid-conflict'
54testforcebreak 'sid-break'