summaryrefslogtreecommitdiff
path: root/test/integration/test-apt-patterns
blob: 0d7b1540d3751a723d09e193fae97ca83e841c7c (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
115
116
117
118
119
120
121
122
123
#!/bin/sh
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"

setupenvironment
configarchitecture 'i386' 'amd64'

insertpackage 'unstable' 'available' 'all' '1.0'

insertinstalledpackage 'manual1' 'i386' '1.0' 'Depends: automatic1'
insertinstalledpackage 'manual2' 'i386' '1.0'

insertinstalledpackage 'automatic1' 'i386' '1.0'
insertinstalledpackage 'automatic2' 'i386' '1.0'

insertinstalledpackage 'essential' 'i386' '1.0' 'Essential: yes'
insertinstalledpackage 'conf-only' 'i386' '1.0' '' '' 'deinstall ok config-files'
insertinstalledpackage 'broken' 'i386' '1.0' 'Depends: does-not-exist'

insertinstalledpackage 'not-obsolete' 'i386' '1.0'
insertpackage 'unstable' 'not-obsolete' 'all' '2.0'

insertpackage 'unstable' 'foreign' 'amd64' '2.0'

setupaptarchive

testsuccess aptmark auto automatic1 automatic2

msgmsg "Check that commands understand patterns"

testfailureequal "E: input:0-14: error: Unrecognized pattern '?not-a-pattern'
   ?not-a-pattern
   ^^^^^^^^^^^^^^
N: Unable to locate package ?not-a-pattern
N: Couldn't find any package by glob '?not-a-pattern'
E: Regex compilation error - Invalid preceding regular expression
N: Couldn't find any package by regex '?not-a-pattern'
E: input:0-14: error: Unrecognized pattern '?not-a-pattern'
   ?not-a-pattern
   ^^^^^^^^^^^^^^
N: Unable to locate package ?not-a-pattern
N: Couldn't find any package by glob '?not-a-pattern'
E: Regex compilation error - Invalid preceding regular expression
N: Couldn't find any package by regex '?not-a-pattern'
E: No packages found" apt show '?not-a-pattern'

testfailureequal "Listing...
E: input:0-14: error: Unrecognized pattern '?not-a-pattern'
   ?not-a-pattern
   ^^^^^^^^^^^^^^" apt list '?not-a-pattern'

testfailureequal "Reading package lists...
Building dependency tree...
Reading state information...
E: input:0-14: error: Unrecognized pattern '?not-a-pattern'
   ?not-a-pattern
   ^^^^^^^^^^^^^^
E: Unable to locate package ?not-a-pattern
E: Couldn't find any package by glob '?not-a-pattern'
E: Regex compilation error - Invalid preceding regular expression
E: Couldn't find any package by regex '?not-a-pattern'" apt install -s '?not-a-pattern'


msgmsg "Ensure that argument lists are present where needed, and absent elsewhere"

testfailureequal "Listing...
E: input:0-7: error: ?true does not expect an argument list
   ?true()
   ^^^^^^^"  apt list '?true()'
testfailureequal "Listing...
E: input:0-4: error: ?and expects an argument list
   ?and
   ^^^^" apt list '?and'
testfailureequal "Listing...
E: input:0-3: error: ?or expects an argument list
   ?or
   ^^^" apt list '?or'


msgmsg "Basic logic: true, false, not, ?or, ?and"
for pattern in '?true' '?not(?false)'; do
testsuccessequal "Listing...
automatic1/now 1.0 i386 [installed,local]
automatic2/now 1.0 i386 [installed,local]
available/unstable 1.0 all
broken/now 1.0 i386 [installed,local]
conf-only/now 1.0 i386 [residual-config]
dpkg/now 1.16.2+fake all [installed,local]
essential/now 1.0 i386 [installed,local]
foreign/unstable 2.0 amd64
manual1/now 1.0 i386 [installed,local]
manual2/now 1.0 i386 [installed,local]
not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]" apt list "$pattern"
done
testsuccessequal "Listing..." apt list '?false'
testsuccessequal "Listing..." apt list '?not(?true)'
testsuccessequal "Listing...
automatic1/now 1.0 i386 [installed,local]
automatic2/now 1.0 i386 [installed,local]
manual1/now 1.0 i386 [installed,local]
manual2/now 1.0 i386 [installed,local]" apt list '?or(?name(^automatic),?name(^manual))'
testsuccessequal "Listing...
automatic1/now 1.0 i386 [installed,local]" apt list '?and(?name(^automatic),?name(1$))'


msgmsg "Package patterns"

testsuccessequal "Listing...
foreign/unstable 2.0 amd64" apt list '?architecture(amd64)'

# XXX FIXME We should have support for foreign and native
testsuccessequal "Listing..." apt list '?architecture(foreign)'
testsuccessequal "Listing..." apt list '?architecture(native)'


testsuccessequal "Listing...
automatic1/now 1.0 i386 [installed,local]
automatic2/now 1.0 i386 [installed,local]" apt list '?name(^automatic)'

testsuccessequal "Listing..." apt list '?x-name-fnmatch(1)'
testsuccessequal "Listing...
automatic1/now 1.0 i386 [installed,local]
manual1/now 1.0 i386 [installed,local]" apt list '?x-name-fnmatch(*1)'