]> git.saurik.com Git - apt.git/blob - test/integration/test-apt-get-install-deb
run update post-invokes even on (partial) failures
[apt.git] / test / integration / test-apt-get-install-deb
1 #!/bin/sh
2 set -e
3
4 TESTDIR="$(readlink -f "$(dirname "$0")")"
5 . "$TESTDIR/framework"
6
7 setupenvironment
8 configarchitecture 'amd64' 'i386'
9
10 # regression test for #754904
11 testfailureequal 'E: Unsupported file /dev/null given on commandline' aptget install -qq /dev/null
12
13 # only consider .deb files
14 cat > foo.rpm <<EOF
15 I'm not a deb, I'm a teapot.
16 EOF
17 testfailureequal 'E: Unsupported file ./foo.rpm given on commandline' aptget install -qq ./foo.rpm
18
19 # and ensure we fail for invalid debs
20 mv foo.rpm foo.deb
21 testfailuremsg "E: Sub-process Popen returned an error code (2)
22 E: Encountered a section with no Package: header
23 E: Problem with MergeList ${TMPWORKINGDIRECTORY}/foo.deb
24 E: The package lists or status file could not be parsed or opened." aptget install ./foo.deb
25
26 buildsimplenativepackage 'foo' 'i386,amd64' '1.0'
27
28 testfailureequal "Reading package lists...
29 Building dependency tree...
30 Note, selecting 'foo:i386' instead of './incoming/foo_1.0_i386.deb'
31 Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
32 Some packages could not be installed. This may mean that you have
33 requested an impossible situation or if you are using the unstable
34 distribution that some required packages have not yet been created
35 or been moved out of Incoming.
36 The following information may help to resolve the situation:
37
38 The following packages have unmet dependencies:
39 foo:i386 : Conflicts: foo but 1.0 is to be installed
40 foo : Conflicts: foo:i386 but 1.0 is to be installed
41 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
42
43 testdpkgnotinstalled 'foo' 'foo:i386'
44 testsuccess aptget install ./incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1
45 testdpkginstalled 'foo:i386'
46 testfailure aptget install incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1
47 cd downloaded
48 testsuccess aptget install "$(readlink -f ../incoming/foo_1.0_i386.deb)" -o Debug::pkgCacheGen=1 -y --allow-downgrades
49 testsuccess aptget install ../incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 -y --allow-downgrades
50 cd ..
51
52 testsuccessequal "Reading package lists...
53 Building dependency tree...
54 Reading state information...
55 Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
56 The following packages will be REMOVED:
57 foo:i386
58 The following NEW packages will be installed:
59 foo
60 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
61 Remv foo:i386 [1.0]
62 Inst foo (1.0 local-deb [amd64])
63 Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s
64
65 # Check that installing the local deb works if it is not the candidate
66 echo "Package: foo
67 Pin: version 1.0
68 Pin-Priority: -1" > rootdir/etc/apt/preferences
69
70 testsuccessequal "Reading package lists...
71 Building dependency tree...
72 Reading state information...
73 Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
74 The following packages will be REMOVED:
75 foo:i386
76 The following NEW packages will be installed:
77 foo
78 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
79 Remv foo:i386 [1.0]
80 Inst foo (1.0 local-deb [amd64])
81 Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s
82
83 createpkg() {
84 local PKG="pkg-$1"
85 mkdir -p ./incoming/$PKG/DEBIAN
86 if [ -n "$2" ]; then
87 echo -n "$2" >> ./incoming/$PKG/DEBIAN/control
88 fi
89 echo "Package: $PKG
90 Version: 0
91 Priority: extra
92 Maintainer: No Body <no@example.org>
93 Architecture: all
94 Description: test package" >> ./incoming/$PKG/DEBIAN/control
95 if [ -n "$3" ]; then
96 echo -n "$3" >> ./incoming/$PKG/DEBIAN/control
97 fi
98 testsuccess dpkg-deb --build ./incoming/$PKG/ ./incoming
99 #dpkg-deb -I ./incoming/${PKG}_0_all.deb control
100 }
101 createpkg 'as-it-should-be'
102 createpkg 'leading-newline' '
103
104 '
105 createpkg 'trailing-newline' '' '
106 '
107
108 testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb
109 testsuccess aptget install ./incoming/pkg-leading-newline_0_all.deb
110 testsuccess aptget install ./incoming/pkg-trailing-newline_0_all.deb
111
112 # see if permission dropping is checked before usage
113 if [ "$(id -u)" = '0' ]; then
114 apt clean
115 chmod 711 ./incoming
116 testsuccess aptget install -y --allow-downgrades ./incoming/pkg-as-it-should-be_0_all.deb
117 chmod 710 ./incoming
118 testsuccesswithnotice aptget install -y --allow-downgrades ./incoming/pkg-as-it-should-be_0_all.deb
119 chmod 700 ./incoming
120 testsuccesswithnotice aptget install -y --allow-downgrades ./incoming/pkg-as-it-should-be_0_all.deb
121 fi