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