debian experimental exim-daemon-heavy config
[exim.git] / test / scripts / 0000-Basic / 0002
CommitLineData
59371ea7
PH
1# Common string expansions
2#
3# This is the main string expansion test that tests those expansions that will
4# be present in the basic Exim binary which we require in order to run these
5# tests at all. Specialized expansion tests also exist for optional features
6# in other test scripts.
c9a55f6a 7munge dnssec
59371ea7
PH
8
9exim -be
10
11# These expansions can test variables in the configuration, but as there
12# is no message being processed, there is no message-related data. But
13# that of course gets tested in plenty of other places.
14
15# Some fixed variables
16
17exim_path: $exim_path
71224040 18exim_version: $exim_version
98b8312f
HSHR
19config_dir: $config_dir
20config_file: $config_file
59371ea7
PH
21primary_hostname: $primary_hostname
22primary_hostname: ${primary_hostname}
23qualify_domain: $qualify_domain
24bounce_return_size_limit: ${bounce_return_size_limit}
25spool_directory: $spool_directory
0cd5fd23 26queue_name: $queue_name
59371ea7
PH
27unknown: ${unknown}
28h_subject: $h_subject:(should be empty)
29h_subject:$h_subject (should be empty)
30header in curlies: ${header_subject:} (should fail)
31
32# \$message_headers should be empty
33message_headers: >$message_headers<
34
35# Continuation
36x\
37y
38x\
39 y
40
41# Overlong names and overbig numbers
42
43+$aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
44+${aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
45+$11111111111111111111111111111111111
46+${11111111111111111111111111111111111}
47
26dd3aa0
JH
48eval: ${eval:0}
49eval: ${eval:1}
50eval: ${eval:-1}
51eval: ${eval:+1}
52eval: ${eval:1+1}
53eval: ${eval:1+2*3}
54eval: ${eval:(1+2)*3}
55eval: ${eval:3/2*4}
56eval: ${eval:3*4/2}
57eval: ${eval:42}
58eval: ${eval:}
59eval: ${eval:-2}
60eval: ${eval:-2 - -3}
61eval: ${eval:-2 - (-3)}
62eval: ${eval:-2 - (-3}
63eval: ${eval:-2 - -3)}
64eval: ${eval:-2 --3}
65eval: ${eval:-2 -+3}
66eval: ${eval:-2 -+-3}
67eval: ${eval:(2*(1+1))/2 + 40K}
68eval: ${eval:077}
69eval: ${eval:08}
70eval10: ${eval10:077}
71eval10: ${eval10:08}
72eval10: ${eval10:0x1234}
73eval: ${eval:2+42%5}
74eval: ${eval:0xc&5}
75eval: ${eval:0xc & 5 }
76eval: ${eval:0x0c|5}
77eval: ${eval:0xc^5}
78eval: ${eval:0xc>>1}
79eval: ${eval:0xc >> 2}
80eval: ${eval:0xc >> 4 }
81eval: ${eval:0xc<<1}
82eval: ${eval:~255&0x1234}
83eval: ${eval:~ 255&0x1234}
84eval: ${eval: -(~255&0x1234)}
85
29f89cad
PH
86# List operations
87
88filter: "${filter{a:b:c}{eq{1}{1}}}"
89filter: ${filter{a:b:c}{!eq{$item}{b}}}
90filter: ${filter{<' a'b'c}{!eq{$item}{b}}}
91filter: ${filter{<' ''a'b' ''c}{!eq{$item}{b}}}
92filter: "${filter{}{!eq{$item}{b}}}"
93
94map: "${map{}{$item}}"
95map: ${map{a:b:c}{$item}}
96map: ${map{a:b:c}{:$item:}}
97map: ${if eq{1}{0}{${map{a:b:c}{:$item:}}}{fail string}}
98map: ${map{:b:c}{[$item]}}
99
100reduce: "${reduce{}{+}{$value$item}}"
101reduce: ${reduce{a:b:c}{+}{$value$item}}
102reduce: ${reduce {<, 1,2,3}{0}{${eval:$value+$item}}}
103reduce: ${reduce {3:0:9:4:6}{0}{${if >{$item}{$value}{$item}{$value}}}}
1e0a93cf
JH
104# Check for extract corrupting reduce's $value
105reduce: ${reduce {b}{a aaa}{${extract{1}{ }{$value}} , $item}}
29f89cad 106
a64a3dfa
JH
107listnamed: ${listnamed:dlist}
108listnamed: ${listnamed:+dlist}
109listnamed: ${listnamed:hlist}
110listnamed: ${listnamed:elist}
111listnamed: ${listnamed:flist}
112listnamed: ${listnamed:nolist}
113listnamed: ${listnamed_d:dlist}
114listnamed: ${listnamed_d:hlist}
115listnamed: ${listnamed_z:dlist}
116
117listcount: ${listcount:a:b:c}
118listcount: ${listcount:}
119listcount: ${listcount:<;a;b;c}
120listcount: ${listcount:${listnamed:dlist}}
042eb971 121
aa26e137
JH
122listextract: ${listextract{ 2}{a:b:c:d}}
123listextract: ${listextract{-2}{<,a,b,c,d}{X${value}X}}
124listextract: ${listextract{ 5}{a:b:c:d}}
125listextract: ${listextract{-5}{a:b:c:d}}
126listextract: ${listextract{ 5}{a:b:c:d}{}{fail}}
127listextract: ${listextract{ 5}{a:b:c:d}{}fail}
128
48b30ae1
JH
129listquote: ${listquote{:}{abcd}}
130listquote: ${listquote{:}{ab:cd}}
131listquote: ${listquote{:}{:a:b:c:d:}}
132listquote: ${listquote{:}{ab::cd}}
133listquote: ${listquote{;}{ab:cd}}
134listquote: ${listquote{;}{ab;cd}}
135listquote: ${listquote{ }{ ab cd}}
136
ac4ef9bd
JH
137sort: ${sort{3:2:1:4}{<}{$item}}
138sort: ${sort {<, 3,2,1,4}{>}{$item}}
139sort: ${sort{c:B:a:aa}{lti}{$item}}
140sort: ${sort{666 r99.ex.com:10 smtp.ex.com:100 r2.ex.com}{<}{${sg {$item}{([0-9]*).*\$}{\$1}}}}
141sort: ${sort{666,r99.ex.com:10,smtp.ex.com:100,r2.ex.com}{<}{${listextract{1}{<,$item}}}}
142sort: "${sort{}{<}{$item}}"
143
ec95d1a6
PH
144# Tests with iscntrl() and illegal separators
145
146map: ${map{<\n a\n\nb\nc}{'$item'}}
147
148reduce: ${reduce {<n 1\n2\n3}{0}{${eval:$value+$item}}}
149reduce: ${reduce {<\n 1\n2\n3}{0}{${eval:$value+$item}}}
150reduce: ${reduce { <\n 1\n 2 \n 3 }{0}{${eval:$value+$item}}}
151reduce: ${reduce {<\x7f 1\x7f2\177 3}{0}{${eval:$value+$item}}}
152
59371ea7
PH
153# Operators
154
723c72e6
JH
155acl: ${acl
156acl: ${acl}
bef3ea7f 157acl: ${acl {a_nosuch}}
723c72e6
JH
158acl: ${acl {a_ret}}
159acl: ${acl {a_ret}{person@dom.ain}}
525239c1
JH
160acl: ${acl {a_ret}{firstarg}{secondarg}}
161acl: ${acl {a_ret}{arg with spaces}}
723c72e6
JH
162acl: ${acl {a_none}}
163acl: ${acl {a_none}{person@dom.ain}}
164acl: ${acl {a_deny}}
165acl: ${acl {a_deny}{person@dom.ain}}
bef3ea7f
JH
166acl: ${acl {a_defer}}
167acl: ${acl {a_sub}{top_arg_1}{top_arg_2}{top_arg_3}}
723c72e6
JH
168acl: ${reduce {1:2:3:4} {} {$value ${acl {a_ret}{$item}}}}
169
59371ea7
PH
170addrss: ${address:local-part@dom.ain}
171addrss: ${address:Exim Person <local-part@dom.ain> (that's me)}
e2ff8e24
JB
172addrss: ${address:Exim Person <local-part(comment)@dom.ain> (that's me)}
173addrss: ${address:Exim Person <local-part@dom.ain(comment)> (that's me)}
174addrss: ${address:Exim Person <local-part(comment)@dom.ain(comment2)> (that's me)}
175addrss: ${address:Exim Person <local-part.(comment)dot-atom@dom.ain(comment2)> (that's me)}
176addrss: ${address:Exim Person <(comment)local-part@dom.ain(comment2)> (that's me)}
59371ea7
PH
177domain: ${domain:local-part@dom.ain}
178domain: ${domain:Exim Person <local-part@dom.ain> (that's me)}
e2ff8e24 179domain: ${domain:Exim Person <local-part(foo)@(bar)dom.ain> (that's me)}
c5b03406 180domain: ${domain:a.b.c}
29f89cad
PH
181
182addresses: ${addresses:>' 'abc@xyz, 'pqr@xyz}
183addresses: ${addresses:Exim Person <local-part@dom.ain> (that's me)}
184addresses: ${addresses:>+ Exim Person <local-part@dom.ain> (that's me),\
185 xyz@abc}
186addresses: ${addresses:Exim Person <local-part@dom.ain> (that's me), \
187 xyz@abc, nullgroupname:;, group: p@q, r@s; }
188addresses: ${addresses:local-part@dom.ain <local-part@dom.ain>}
1b7cf216 189addresses: ${addresses:>}
29f89cad 190
3367f8c2
JH
191