(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: { ( '("#!/usr/bin/env bash" " echo \\"bash >= 4.0 required\\" >&2" "#!/bin/bash" " \\"how do we replace bash?\\")" " (title \\"gherkin - a lisp1 written in bash4\\")" " \\" - no real array in bash\\"" " \\"Aron Griffis: bash pro tips\\"")\n' ) } do_expansion: False here_end: EOF was_filled: T spids: [8] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [4 14] ) } spids: [3] ) ] spids: [3] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:actual) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(./gherkin)} {(-e)} { (SQ < '(load-file "core") (sh (str "grep -h bash " (join " " (remove (fn [x] (or (eq? "simple_test.sh" x) (eq? "README.md" x))) (sh "ls")))))' > ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [18 26] ) } spids: [17] ) ] spids: [17] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$expected'))} right: {(DQ ($ VSub_Name '$actual'))} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ('test 1/1 passed'))})] spids: [16777215 46] ) ] else_action: [ (C {(echo)} {(DQ ('test 1/1 failed'))}) (C {(echo)} {(DQ ('EXPECTED: ') ($ VSub_Name '$expected'))}) (C {(echo)} {(DQ ('RECEIVED: ') ($ VSub_Name '$actual'))}) ] spids: [55 80] ) ] )