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