2 JSON_SCRIPT_BIN
=.
/json_script-example
3 FILE_STDOUT
=tests.stdout
4 FILE_STDERR
=tests.stderr
5 FILE_EXPECTED
=tests.expected
8 #export LD_PRELOAD=../libjson_script.so
9 $JSON_SCRIPT_BIN "$@" "$JSON_SCRIPT" >"$FILE_STDOUT" 2>"$FILE_STDERR"
16 echo "$expected" >"$FILE_EXPECTED"
17 if [ -z "$expected" ]; then
18 # we are expecting empty output, but we deliberately added a newline
19 # with echo above, so adding another echo to compensate for that
22 diff -up "$FILE_EXPECTED" "$file_stdio" >/dev
/null
2>&1 ||
{
34 assertStdoutEquals
() {
35 assertStdioEquals
"$1" "$FILE_STDOUT"
38 assertStderrEquals
() {
39 assertStdioEquals
"$1" "$FILE_STDERR"
43 cat >"$JSON_SCRIPT" <<-EOF
50 assertStderrEquals
"load JSON data from $JSON_SCRIPT failed."
54 cat >"$JSON_SCRIPT" <<-EOF
57 [ "eq", "VAR", "foo" ],
63 call_json_script
"VAR=foo"
64 assertStdoutEquals
"echo bar"
65 call_json_script
"VAR=xxx"
66 assertStdoutEquals
"echo baz"
70 cat >"$JSON_SCRIPT" <<-EOF
79 call_json_script
"VAR=foo"
80 assertStdoutEquals
"echo bar"
82 assertStdoutEquals
"echo baz"
85 test_expr_regex_single
() {
86 cat >"$JSON_SCRIPT" <<-EOF
89 [ "regex", "VAR", ".ell." ],
95 call_json_script
"VAR=hello"
96 assertStdoutEquals
"echo bar"
97 call_json_script
"VAR=.ell."
98 assertStdoutEquals
"echo bar"
100 assertStdoutEquals
"echo baz"
101 call_json_script
"VAR="
102 assertStdoutEquals
"echo baz"
103 call_json_script
"VAR=hell"
104 assertStdoutEquals
"echo baz"
107 test_expr_regex_multi
() {
108 cat >"$JSON_SCRIPT" <<-EOF
111 [ "regex", "VAR", [ ".ell.", "w.rld" ] ],
117 call_json_script
"VAR=hello"
118 assertStdoutEquals
"echo bar"
119 call_json_script
"VAR=world"
120 assertStdoutEquals
"echo bar"
121 call_json_script
"VAR=.ell."
122 assertStdoutEquals
"echo bar"
123 call_json_script
"VAR=w.rld"
124 assertStdoutEquals
"echo bar"
126 assertStdoutEquals
"echo baz"
127 call_json_script
"VAR="
128 assertStdoutEquals
"echo baz"
129 call_json_script
"VAR=hell"
130 assertStdoutEquals
"echo baz"
134 cat >"$JSON_SCRIPT" <<-EOF
137 [ "not", [ "has", "VAR" ] ],
143 call_json_script
"VAR=foo"
144 assertStdoutEquals
"echo baz"
146 assertStdoutEquals
"echo bar"
150 cat >"$JSON_SCRIPT" <<-EOF
153 [ "and", [ "eq", "EQVAR", "eqval" ],
154 [ "regex", "REGEXVAR", "regex..." ]
161 call_json_script
"EQVAR=eqval" "REGEXVAR=regexval"
162 assertStdoutEquals
"echo bar"
163 call_json_script
"EQVAR=foo"
164 assertStdoutEquals
"echo baz"
165 call_json_script
"REGEXVAR=regex***"
166 assertStdoutEquals
"echo baz"
168 assertStdoutEquals
"echo baz"
172 cat >"$JSON_SCRIPT" <<-EOF
175 [ "or", [ "not", [ "eq", "EQVAR", "eqval" ] ],
176 [ "regex", "REGEXVAR", [ "regexva.[0-9]", "regexva.[a-z]" ] ]
183 call_json_script
"EQVAR=eqval" "REGEXVAR=regexval1"
184 assertStdoutEquals
"echo bar"
185 call_json_script
"EQVAR=neq" "REGEXVAR=sxc"
186 assertStdoutEquals
"echo bar"
187 call_json_script
"REGEXVAR=sxc"
188 assertStdoutEquals
"echo bar"
189 call_json_script
"EQVAR=foo"
190 assertStdoutEquals
"echo bar"
192 assertStdoutEquals
"echo bar"
193 call_json_script
"EQVAR=eqval" "REGEXVAR=regexval"
194 assertStdoutEquals
"echo baz"
198 cat >"$JSON_SCRIPT" <<-EOF
201 [ "isdir", "%VAR%" ],
207 call_json_script
"VAR=/"
208 assertStdoutEquals
"echo bar"
209 call_json_script
"VAR=$(mktemp -u)"
210 assertStdoutEquals
"echo baz"
212 assertStdoutEquals
"echo baz"
216 cat >"$JSON_SCRIPT" <<-EOF
218 [ "case", "CASEVAR", {
219 "0": [ "echo", "foo" ],
224 "%VAR%": [ "echo", "quz" ]
228 call_json_script
"CASEVAR=0"
229 assertStdoutEquals
"echo foo"
230 call_json_script
"CASEVAR=1"
231 assertStdoutEquals
"echo bar
233 call_json_script
"CASEVAR=%VAR%"
234 assertStdoutEquals
"echo quz"
235 call_json_script
"CASEVAR="
236 assertStdoutEquals
""
238 assertStdoutEquals
""
239 call_json_script
"CASEVAR=xxx" "VAR=xxx"
240 assertStdoutEquals
""
244 cat >"$JSON_SCRIPT" <<-EOF
247 [ "eq", "VAR", "foo" ],
253 call_json_script
"VAR=foo"
254 assertStdoutEquals
"echo bar"
255 call_json_script
"VAR=xxx"
256 assertStdoutEquals
"echo baz"
260 cat >"$JSON_SCRIPT" <<-EOF
262 [ "exec", "%VAR%", "/%VAS%%%/" ]
266 assertStdoutEquals
"exec /%/"
267 call_json_script
"VAR="
268 assertStdoutEquals
"exec /%/"
269 call_json_script
"VAR=qux" "VAS=3"
270 assertStdoutEquals
"exec qux /3%/"
274 cat >"$JSON_SCRIPT" <<-EOF
276 [ "heh", "%HEHVAR%" ],
277 [ "%VAR%", "%VAR%" ],
279 [ "exec_non_reachable", "Arghhh" ]
282 call_json_script
"HEHVAR=dude" "VAR=ow"
283 assertStdoutEquals
"heh dude