summaryrefslogtreecommitdiff
path: root/test/integration/test-apt-mark
blob: ec4ed83162d3fa10d4a08399bee389fe987d5f20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/sh
set -e

TESTDIR=$(readlink -f $(dirname $0))
. $TESTDIR/framework
setupenvironment
configarchitecture 'amd64' 'i386'

insertpackage 'unstable' 'bar' 'amd64,i386' '1'
insertpackage 'unstable' 'uninstalled' 'all' '1'
insertpackage 'unstable' 'uninstalled-native' 'amd64' '1'

insertinstalledpackage 'foo' 'all' '1'
insertinstalledpackage 'bar' 'amd64' '1'

setupaptarchive

# dpkg is "installed" by our test framework
testdpkginstalled dpkg

testnoautopkg() {
	testempty aptmark showauto
	testempty aptcache showauto
	testsuccessequal 'bar
dpkg
foo' aptmark showmanual
	testsuccessequal 'bar
foo' aptmark showmanual bar foo uninstalled
}
testfooisauto() {
	testsuccessequal 'foo' aptmark showauto
	testsuccessequal 'foo' aptcache showauto
	testsuccessequal 'foo' aptmark showauto foo
	testsuccessequal 'foo' aptcache showauto foo
	testsuccessequal 'bar
dpkg' aptmark showmanual
	testsuccessequal 'bar' aptmark showmanual bar
}
testmarkonpkgasauto() {
	testsuccess $1 $2 foo
	testfooisauto
	testsuccess $1 $2 foo
	testfooisauto

	testsuccess $1 $3 foo
	testnoautopkg
	testsuccess $1 $3 foo
	testnoautopkg
}

testfailureequal 'E: No packages found' aptmark auto
testfailureequal 'E: No packages found' aptmark manual

testnoautopkg
testmarkonpkgasauto 'aptmark' 'auto' 'manual'
testmarkonpkgasauto 'aptmark' 'markauto' 'unmarkauto'
testmarkonpkgasauto 'aptget' 'markauto' 'unmarkauto'

testnoholdpkg() {
	testempty aptmark showhold
	testempty aptmark showholds  # typical "typo"
	testempty aptmark showhold dpkg
	testempty aptmark showholds dpkg
}
testpkgonhold() {
	testsuccessequal "$1" aptmark showhold
	testsuccessequal "$1" aptmark showholds
	testsuccessequal "$1" aptmark showhold $1
	testsuccessequal "$1" aptmark showholds $1
}
testmarkonepkgashold() {
	testsuccess aptmark hold $1
	testpkgonhold $1
	testsuccess aptmark hold $1
	testpkgonhold $1
	testsuccess aptmark unhold $1
	testnoholdpkg
	testsuccess aptmark unhold $1
	testnoholdpkg
}

testfailureequal 'E: No packages found' aptmark hold
testfailureequal 'E: No packages found' aptmark unhold

testnoholdpkg
testmarkonepkgashold 'foo'
testmarkonepkgashold 'bar'

msgtest 'dpkg supports --merge-avail via' 'stdin'
if dpkg --merge-avail - < /dev/null >/dev/null 2>&1; then
	msgpass
else
	msgskip 'dpkg version too old'
	exit 0
fi

testmarkonepkgashold 'uninstalled'
testmarkonepkgashold 'uninstalled-native'

testsuccessequal 'uninstalled set on hold.' aptmark hold uninstalled
testsuccessequal 'uninstalled-native set on hold.' aptmark hold uninstalled-native
#FIXME: holds on uninstalled packages are not persistent in dpkg
testsuccessequal 'Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  uninstalled uninstalled-native
The following held packages will be changed:
  uninstalled-native
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst uninstalled (1 unstable [all])
Inst uninstalled-native (1 unstable [amd64])
Conf uninstalled (1 unstable [all])
Conf uninstalled-native (1 unstable [amd64])' aptget install uninstalled uninstalled-native -s