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