(List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub IC_NUM]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[{[LIT_CHARS -i]}] bindings=[('IC_NUM', {[LIT_CHARS 1]})]) ) (FunctionDef run_test [] (List (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub USING_TET]]} {[LIT_CHARS -o]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub USING_TEST_RUNNER]]} {[LIT_OTHER "]"]}) (List (= scope= flags=1 words=[{[LIT_CHARS ic] [VarSub IC_NUM] [LIT_OTHER "="] [DQ [VarSub 1]]}] bindings=[]) (= scope= flags=1 words=[] bindings=[('iclist', {[DQ [VarSub iclist][LIT_CHARS " ic"][VarSub IC_NUM]]})]) (= scope= flags=1 words=[] bindings=[('TEST_LIST', {[DQ [VarSub TEST_LIST][LIT_CHARS " "][VarSub 1]]})]) ) (ElseTrue) (List (Com {[LIT_CHARS test_setup]}) (Subshell (Com {[DQ [VarSub 1]]}) ) (Com {[LIT_CHARS test_cleanup]}) ) ) (= scope= flags=0 words=[] bindings=[('IC_NUM', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub IC_NUM]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (FunctionDef repeat_test [] (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub #]]} {[LIT_CHARS -lt]} {[LIT_CHARS 4]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "TEST SYNTAX ERROR: repeat_test() requires at least 4 arguments!"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 255]}) ) ) (= scope= flags=0 words=[] bindings=[('FUNC', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('VARS', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 2]}) (= scope= flags=0 words=[{[LIT_CHARS -i]}] bindings=[('I', {[LIT_CHARS 1]})]) (While (Com {[LIT_OTHER "["]} {[DQ [VarSub I]]} {[LIT_CHARS -le]} {[DQ [VarSub VARS]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS v][VarSub I][LIT_CHARS "="][VarSub 1]]}) (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "out="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS v][VarSub I]]}) (= scope= flags=0 words=[] bindings=[('I', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub I]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (= scope= flags=0 words=[{[LIT_CHARS -i]}] bindings=[('LENGTH', {[ArithSub {A2 AS_OP_SLASH {A Atom NODE_ARITH_WORD {[VarSub #]}} {A Atom NODE_ARITH_WORD {[VarSub VARS]}}}]})]) (= scope= flags=0 words=[{[LIT_CHARS -i]}] bindings=[('J', {[LIT_CHARS 1]})]) (While (Com {[LIT_OTHER "["]} {[DQ [VarSub J]]} {[LIT_CHARS -le]} {[DQ [VarSub LENGTH]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[{[LIT_CHARS -i]}] bindings=[('I', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('str', {[DQ [VarSub FUNC][LIT_CHARS -][VarSub J][LIT_CHARS -][VarSub IC_NUM][LIT_CHARS "() {"]]})]) (While (Com {[LIT_OTHER "["]} {[DQ [VarSub I]]} {[LIT_CHARS -le]} {[DQ [VarSub VARS]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "var="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS v][VarSub I]]}) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "value="][\ LIT_ESCAPED_CHAR "\\$"][ArithSub {A2 AS_OP_PLUS {A2 AS_OP_STAR {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub I]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}} {A Atom NODE_ARITH_WORD {[VarSub LENGTH]}}} {A Atom NODE_ARITH_WORD {[VarSub J]}}}]]}) (= scope= flags=0 words=[] bindings=[('str', {[DQ [VarSub str][LIT_CHARS "\n"][LIT_CHARS "\t\t"][VarSub var][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\\""][VarSub value][\ LIT_ESCAPED_CHAR "\\\""]]})]) (= scope= flags=0 words=[] bindings=[('I', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub I]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (= scope= flags=0 words=[] bindings=[('str', {[DQ [VarSub str][LIT_CHARS "\n"][LIT_CHARS "\t\t"][VarSub FUNC][LIT_CHARS "\n"][LIT_CHARS "\t}"]]})]) (Com {[LIT_CHARS eval]} {[DQ [VarSub str]]}) (Com {[LIT_CHARS run_test]} {[DQ [VarSub FUNC][LIT_CHARS -][VarSub J][LIT_CHARS -][VarSub IC_NUM]]}) (= scope= flags=0 words=[] bindings=[('J', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub J]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) ) ) (Com {[LIT_CHARS .]} {[DQ [VarSub XDG_TEST_DIR][LIT_CHARS /include/tempfile.sh]]}) (FunctionDef test_setup [] (List (Com {[LIT_CHARS get_guid]} {[DQ [LIT_CHARS xdgt]]}) (= scope= flags=1 words=[] bindings=[('XDG_TEST_ID', {[DQ [VarSub GUID]]})]) (Com {[LIT_CHARS get_tmpsubdir]} {[DQ [VarSub XDG_TEST_DIR][LIT_CHARS /tmp]]}) (= scope= flags=1 words=[] bindings=[('XDG_TEST_TMPDIR', {[DQ [VarSub TMPSUBDIR]]})]) (Com {[LIT_CHARS cd]} {[DQ [VarSub XDG_TEST_TMPDIR]]}) (Com {[LIT_CHARS get_shortid]} {[DQ [VarSub XDG_TEST_DIR][LIT_CHARS /tmp/shortid]]}) (= scope= flags=1 words=[] bindings=[('XDG_TEST_SHORTID', {[DQ [VarSub SHORTID]]})]) ) ) (FunctionDef test_cleanup [] (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub XDG_TEST_DONT_CLEANUP]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS cd]} {[DQ [VarSub XDG_TEST_DIR]]}) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub XDG_TEST_TMPDIR]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub XDG_TEST_TMPDIR]]}) ) ) ) ) )