test.sh - json-testsuite - JSON test-suite
(HTM) git clone git://git.codemadness.org/json-testsuite
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
test.sh (1292B)
---
1 #!/bin/sh
2
3 # log(f, status, text)
4 log() {
5 printf '%-4.4s %s %s\n' "$2" "$1" "$3"
6 }
7
8 # fail(f,s)
9 fail() {
10 log "$1" "FAIL" "$2"
11 }
12
13 # ok(f,s)
14 ok() {
15 log "$1" "OK" "$2"
16 }
17
18 # meh(f,s)
19 meh() {
20 log "$1" "MEH" "$2"
21 }
22
23 json() {
24 json2tsv
25 }
26
27 testaccepted() {
28 # y_ content must be accepted by parsers
29 for f in test_parsing/y_* my_tests/y_*; do
30 json < "$f" >/dev/null 2>/dev/null
31 if test $? -ne 0; then
32 fail "$f" "must be accepted, but did not"
33 echo "ABORT ABORT ABORT!"
34 exit 1
35 else
36 ok "$f" "accepted"
37 # DEBUG
38 # echo "Input:"
39 # cat "$f"
40 # echo ""
41 # echo "- - -"
42 # echo "Output:"
43 # cat "/tmp/1"
44 # echo "==="
45 fi
46 done
47 }
48
49 testrejected() {
50 # n_ content must be rejected by parsers
51 for f in test_parsing/n_* my_tests/n_*; do
52 json < "$f" > /dev/null 2>/dev/null
53 if test $? -eq 0; then
54 fail "$f" "must be rejected, but was not"
55 else
56 ok "$f" "rejected"
57 fi
58 done
59 }
60
61 testeither() {
62 # i_ parsers are free to accept or reject content
63 for f in test_parsing/i_* my_tests/i_*; do
64 json < "$f" > /dev/null 2>/dev/null
65 if test $? -eq 0; then
66 meh "$f" "Accepted, but either way is fine"
67 else
68 meh "$f" "Rejected, but either way is fine"
69 fi
70 done
71 }
72
73 # these MUST all pass.
74 testaccepted
75 # these MAY fail.
76 testrejected
77 # either way is fine.
78 testeither