]> git.saurik.com Git - apt.git/blob - test/integration/test-external-installation-planner-protocol
add a testcase for support of various build-dependency types
[apt.git] / test / integration / test-external-installation-planner-protocol
1 #!/bin/sh
2 set -e
3
4 TESTDIR="$(readlink -f "$(dirname "$0")")"
5 . "$TESTDIR/framework"
6 setupenvironment
7 configarchitecture 'amd64'
8
9 buildsimplenativepackage 'libfoo' 'amd64' '3' 'experimental' 'Multi-Arch: same'
10 buildsimplenativepackage 'foo' 'all' '3' 'experimental' 'Depends: newstuff'
11 buildsimplenativepackage 'foo' 'all' '2' 'unstable' 'Depends: libfoo:amd64, stuff
12 Conflicts: bar, libfoo:i386
13 Recommends: unrelated'
14 buildsimplenativepackage 'libfoo' 'amd64' '2' 'unstable' 'Multi-Arch: same'
15 buildsimplenativepackage 'unrelated-2' 'amd64' '2' 'unstable'
16 insertinstalledpackage 'foo' 'all' '1'
17 insertinstalledpackage 'bar' 'all' '1'
18 insertinstalledpackage 'stuff' 'all' '1'
19 insertinstalledpackage 'unrelated-1' 'all' '1'
20
21 setupaptarchive --no-update
22
23 EIPPLOG="${TMPWORKINGDIRECTORY}/rootdir/var/log/apt/eipp.log"
24 echo "Dir::Log::Planner \"$EIPPLOG\";" > ./rootdir/etc/apt/apt.conf.d/eipp-logging
25
26 testsuccess apt update
27 export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/downloaded/dump.eipp"
28 testfailure test -r "$EIPPLOG"
29 testfailure aptget install foo --planner dump -y
30 testfailure test -r "$EIPPLOG"
31 testfailure grep 'unrelated-2' "$APT_EDSP_DUMP_FILENAME"
32 testsuccessequal '2' grep -c '^Package: foo$' "$APT_EDSP_DUMP_FILENAME"
33 testsuccessequal '1' grep -c '^Package: libfoo$' "$APT_EDSP_DUMP_FILENAME"
34 testsuccessequal 'Planner: dump' grep '^Planner: ' "$APT_EDSP_DUMP_FILENAME"
35
36 testsuccess aptget install foo -s
37 testsuccess aptget install foo -y
38 testsuccess test -r "$EIPPLOG"
39 testsuccessequal 'Request: EIPP 0.1
40 Architecture: amd64
41 Architectures: amd64
42 Remove: bar:amd64
43 Install: libfoo:amd64 foo:amd64
44 Planner: internal' head -n 6 "$EIPPLOG"
45 aptinternalplanner < "$EIPPLOG" > planner.log || true
46 testsuccessequal 'Remove: 7
47 Unpack: 2
48 Unpack: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
49
50 rm -f "$EIPPLOG"
51 testsuccess aptget install foo -s --reinstall
52 testsuccess aptget install foo -y --reinstall
53 testsuccess test -r "$EIPPLOG"
54 testsuccessequal 'Request: EIPP 0.1
55 Architecture: amd64
56 Architectures: amd64
57 ReInstall: foo:amd64
58 Planner: internal' head -n 5 "$EIPPLOG"
59 aptinternalplanner < "$EIPPLOG" > planner.log || true
60 testsuccessequal 'Unpack: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
61
62 rm -f "$EIPPLOG"
63 testsuccess aptget purge foo -s
64 testsuccess aptget purge foo -y
65 testsuccess test -r "$EIPPLOG"
66 testsuccessequal 'Request: EIPP 0.1
67 Architecture: amd64
68 Architectures: amd64
69 Remove: foo:amd64
70 Planner: internal' head -n 5 "$EIPPLOG"
71 aptinternalplanner < "$EIPPLOG" > planner.log || true
72 testsuccessequal 'Remove: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
73
74 testplannerfailuremsg() {
75 local PLANNER="rootdir/usr/lib/apt/planners/$1"
76 echo "$2" > "$PLANNER"
77 chmod +x "$PLANNER"
78 testfailuremsg "$3" apt install foo -s --planner $1
79 }
80
81 testplannerfailuremsg 'exit0withmsg' "#!/bin/sh
82 echo 'Error: instant-exit
83 Message: This planner exits instantly'
84 exit 0" 'E: External planner failed with: This planner exits instantly'
85
86 testplannerfailuremsg 'exit1withoutmsg' "#!/bin/sh
87 exit 1" 'E: Sub-process exit1withoutmsg returned an error code (1)'
88
89 testplannerfailuremsg 'exit1withmsg' "#!/bin/sh
90 echo 'Error: instant-exit
91 Message: This planner exits instantly'
92 exit 1" 'E: External planner failed with: This planner exits instantly
93 E: Sub-process exit1withmsg returned an error code (1)'