(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expected) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(DQ (EOF))} here_end_span_id: 15 stdin_parts: [ ( '("#!/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' ) ] ) ] ) ] ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:actual) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.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")))))' > ) } ) ] ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$expected'))} right: {(DQ ($ VSub_DollarName '$actual'))} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ('test 1/1 passed'))})] ) ] else_action: [ (C {(echo)} {(DQ ('test 1/1 failed'))}) (C {(echo)} {(DQ ('EXPECTED: ') ($ VSub_DollarName '$expected'))}) (C {(echo)} {(DQ ('RECEIVED: ') ($ VSub_DollarName '$actual'))}) ] ) ] )