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)'
|