(command.CommandList children: [ (command.Simple blame_tok:<set> more_env:[] words:[{<set>} {<-e>}] redirects:[] do_fork:T) (command.ShFunction name_tok: <version> name: version body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Bats 0.4.0'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <version> more_env: [] words: [{<version>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Usage: bats [-c] [-p | -t] <test> [<test> ...]'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <help> name: help body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' <test> is the path to a Bats test file, or the path to a directory'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' containing Bats test files.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' -c, --count Count the number of test cases without running any tests'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -h, --help Display this help message'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' -p, --pretty Show results in pretty format (default for terminals)'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -t, --tap Show results in TAP format'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <' -v, --version Display the version number'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <' For more information, see https://github.com/sstephenson/bats'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <resolve_link> name: resolve_link body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <Id.Left_DollarParen '$('> more_env: [] words: [ { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <type> more_env: [] words: [{<type>} {<-p>} {<greadlink>} {<readlink>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <head> more_env: [] words: [{<head>} {<-1>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } {(DQ ($ Id.VSub_Number 1))} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <abs_dirname> name: abs_dirname body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'cwd='> (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'path='> (DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName path))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name path> var_name: path suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'name='> (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name path> var_name: path suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'path='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'path='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'path='> name:path) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr children: [ (command.Simple blame_tok: <resolve_link> more_env: [] words: [{<resolve_link>} {(DQ ($ Id.VSub_DollarName name))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <pwd> more_env: [] words: [{<pwd>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(DQ ($ Id.VSub_DollarName cwd))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <expand_path> name: expand_path body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cd> more_env: [] words: [ {<cd>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dirname> more_env: [] words: [{<dirname>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'dirname='> (DQ ($ Id.VSub_DollarName PWD))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {(DQ ($ Id.VSub_DollarName OLDPWD))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName dirname) <'/'> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <basename> more_env: [] words: [{<basename>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'BATS_LIBEXEC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BATS_LIBEXEC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BATS_LIBEXEC='> name:BATS_LIBEXEC) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <abs_dirname> more_env: [] words: [{<abs_dirname>} {(DQ ($ Id.VSub_Number 0))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'BATS_PREFIX='> (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <abs_dirname> more_env: [] words: [{<abs_dirname>} {(DQ ($ Id.VSub_DollarName BATS_LIBEXEC))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'BATS_CWD='> (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <abs_dirname> more_env: [] words: [{<abs_dirname>} {<.>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [ {<export>} {<Id.Lit_VarLike 'PATH='> (DQ ($ Id.VSub_DollarName BATS_LIBEXEC) <':'> ($ Id.VSub_DollarName PATH)) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'options='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'options='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'options='> name:options) op: assign_op.Equal rhs: {(ShArrayLiteral left:<Id.Op_LParen _> words:[] right:<Id.Right_ShArrayLiteral _>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'arguments='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'arguments='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arguments='> name:arguments) op: assign_op.Equal rhs: {(ShArrayLiteral left:<Id.Op_LParen _> words:[] right:<Id.Right_ShArrayLiteral _>)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [arg] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name arg> var_name: arg suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name arg> var_name: arg suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 1>} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'options['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'options['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'options['> name: options index: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name options> var_name: options prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) right: <Id.Right_DollarBrace '}'> ) } ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name arg> var_name: arg suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>}) right: <Id.Arith_RBrace _> ) ) } ) ] redirects: [] ) ] spids: [413 436] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'index='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'index='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'index='> name:index) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'option='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'option='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'option='> name: option ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name arg> var_name: arg suffix_op: (suffix_op.Slice begin: {($ Id.VSub_DollarName index)} length: {<Id.Lit_Digits 1>} ) right: <Id.Arith_RBrace _> ) ) } ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName option))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'options['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'options['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'options['> name: options index: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name options> var_name: options prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id: Id.Arith_Star ) right: <Id.Right_DollarBrace '}'> ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName option))} ) ] redirects: [] ) (command.Simple blame_tok: <let> more_env: [] words: [{<let>} {<Id.Lit_VarLike 'index+='> <1>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [387 410] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'arguments['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'arguments['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'arguments['> name: arguments index: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name arguments> var_name: arguments prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Arith_Star) right: <Id.Right_DollarBrace '}'> ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName arg))} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <unset> more_env: [] words: [{<unset>} {<count_flag>} {<pretty>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [{<Id.Lit_LBracket '['>} {<-t>} {<0>} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [{<Id.Lit_LBracket '['>} {<-t>} {<1>} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'pretty='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pretty='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pretty='> name:pretty) op: assign_op.Equal rhs: {(DQ <1>)} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [{<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName CI))} {<Id.Lit_RBracket ']'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'pretty='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pretty='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pretty='> name:pretty) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [option] iterable: (for_iter.Words words: [ { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name options> var_name: options bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName option))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <h>)} {(DQ <help>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <help> more_env: [] words: [{<help>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <v>)} {(DQ <version>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <version> more_env: [] words: [{<version>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <c>)} {(DQ <count>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'count_flag='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'count_flag='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count_flag='> name:count_flag) op: assign_op.Equal rhs: {(DQ <-c>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <t>)} {(DQ <tap>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pretty='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pretty='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pretty='> name:pretty) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ <p>)} {(DQ <pretty>)}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pretty='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pretty='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pretty='> name:pretty) op: assign_op.Equal rhs: {(DQ <1>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name arguments> var_name: arguments prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [781 802] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'filenames='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filenames='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filenames='> name:filenames) op: assign_op.Equal rhs: {(ShArrayLiteral left:<Id.Op_LParen _> words:[] right:<Id.Right_ShArrayLiteral _>)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [filename] iterable: (for_iter.Words words: [ { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name arguments> var_name: arguments bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_DollarName filename))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <shopt> more_env: [] words: [{<shopt>} {<-s>} {<nullglob>}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [suite_filename] iterable: (for_iter.Words words: [ { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expand_path> more_env: [] words: [{<expand_path>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) <'/'> <Id.Lit_Star '*'> <.bats> } ] ) semi_tok: <Id.Op_Semi _> body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'filenames['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'filenames['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'filenames['> name: filenames index: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name filenames> var_name: filenames prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName suite_filename))} ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shopt> more_env: [] words: [{<shopt>} {<-u>} {<nullglob>}] redirects: [] do_fork: T ) ] spids: [841 854] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_ArrayLhsOpen 'filenames['> pairs: [ (AssignPair left: <Id.Lit_ArrayLhsOpen 'filenames['> lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'filenames['> name: filenames index: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name filenames> var_name: filenames prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expand_path> more_env: [] words: [{<expand_path>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name filenames> var_name: filenames prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'command='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'command='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command) op: assign_op.Equal rhs: {(DQ <bats-exec-test>)} ) ] redirects: [] ) ] spids: [963 984] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'command='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'command='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command) op: assign_op.Equal rhs: {(DQ <bats-exec-suite>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName pretty))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'extended_syntax_flag='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'extended_syntax_flag='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'extended_syntax_flag='> name: extended_syntax_flag ) op: assign_op.Equal rhs: {(DQ <-x>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'formatter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'formatter='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'formatter='> name:formatter) op: assign_op.Equal rhs: {(DQ <bats-format-tap-stream>)} ) ] redirects: [] ) ] spids: [1003 1016] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'extended_syntax_flag='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'extended_syntax_flag='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'extended_syntax_flag='> name: extended_syntax_flag ) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'formatter='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'formatter='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'formatter='> name:formatter) op: assign_op.Equal rhs: {(DQ <cat>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-o>} {<pipefail>} {<execfail>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <exec> more_env: [] words: [ {<exec>} {(DQ ($ Id.VSub_DollarName command))} {($ Id.VSub_DollarName count_flag)} {($ Id.VSub_DollarName extended_syntax_flag)} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name filenames> var_name: filenames bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_DollarName formatter))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] )