(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TEST_SH> var_name: TEST_SH suffix_op: (suffix_op.Unary op:<Id.VTest_ColonEquals _> arg_word:{(DQ <'/bin/sh'>)}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ShFunction name_tok: <oneline> name: oneline body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'q='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'q='> name:q) op: assign_op.Equal rhs: {(DQ <'\''>)} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_Pound '#')} {<-eq>} {<4>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'q='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'q='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'q='> name:q) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'v='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'v='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'\\\\%3.3o'>)} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Amp left: {($ Id.VSub_Number 2)} right: {<Id.Lit_Digits 0> <Id.Lit_ArithVarLike xFF>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (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 '['>} {($ Id.VSub_Number 2)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<39>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%sprefix'> (${ Id.VSub_Name v) <'suffix%s'>)} {(DQ ($ Id.VSub_DollarName q))} {(DQ ($ Id.VSub_DollarName q))} ] redirects: [] do_fork: T ) ] spids: [160 174] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-ne>} {<4>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {<Id.Lit_Other '%'> <s>} {<prefix> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\''> ch: '\'' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <suffix> } ] redirects: [] do_fork: T ) ] spids: [196 209] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {<Id.Lit_Other '%'> <s>} {<prefix> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') <suffix> } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_Number 3))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <mkdata> name: mkdata body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'quote='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'quote='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'quote='> name:quote) op: assign_op.Equal rhs: (rhs_word__Empty) ) (AssignPair left: <Id.Lit_VarLike 'pfx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pfx='> name:pfx) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ) 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_Number 1))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <--> pattern: (pat.Words words:[{<-->}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <-q> pattern: (pat.Words words:[{<-q>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'quote='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'quote='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'quote='> name: quote ) op: assign_op.Equal rhs: {<no>} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pfx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pfx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pfx='> name:pfx) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name pfx) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pfx> var_name: pfx suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<' '>} ) right: <Id.Right_DollarBrace '}'> ) (${ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sfx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sfx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sfx='> name:sfx) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'sfx='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sfx='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sfx='> name:sfx) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name sfx) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name sfx> var_name: sfx suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<' '>} ) right: <Id.Right_DollarBrace '}'> ) (${ Id.VSub_Number 1) ) } ) ] redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName i)} {<-lt>} {<256>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <oneline> more_env: [] words: [ {<oneline>} {(DQ (${ Id.VSub_Name pfx))} {(DQ ($ Id.VSub_DollarName i))} {(DQ (${ Id.VSub_Name sfx))} {($ Id.VSub_DollarName quote)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName i)} right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<aaa>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <aaa_head> name: aaa_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [ {<atf_set>} {(DQ <descr>)} {(DQ <'Check that this test has a hope of working. '>)} {(DQ <'Just give up on these tests if the aaa test fails'>) <.>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <aaa_body> name: aaa_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <oneline> more_env: [] words: [{<oneline>} {(DQ <'echo '>)} {<9>} {(SQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'prefix\\tsuffix\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <oneline> more_env: [] words: [{<oneline>} {(DQ <'VAR='>)} {<65>} {(SQ <'; echo "${#VAR}:${VAR}"'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'13:prefixAsuffix\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <oneline> more_env: [] words: [{<oneline>} {(DQ <'VAR='>)} {<1>} {(SQ <'; echo "${#VAR}:${VAR}"'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'13:prefix\x01suffix\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <oneline> more_env: [] words: [{<oneline>} {(DQ <'VAR='>)} {<10>} {(SQ <'; echo "${#VAR}:${VAR}"'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<inline> <Id.Lit_Colon ':'> (SQ <'13:prefix\\nsuffix\\n'>)} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<prefix> <Id.Lit_Star '*'>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <oneline> more_env: [] words: [{<oneline>} {(DQ <'echo hello >'>)} {<45>} {(DQ )}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ <prefix-suffix>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'failed to create prefix-suffix (45)'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ <prefix-suffix>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'no data in prefix-suffix (45)'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<prefix-suffix>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_Equals '='>} {(DQ <hello>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'incorrect data in prefix-suffix (45)'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<assignment>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <assignment_head> name: assignment_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Check that all chars can be assigned to vars'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <assignment_body> name: assignment_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<grep>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<results>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <mkdata> more_env: [] words: [{<mkdata>} {(DQ <'VAR='>)} {<-->} {(SQ <'; echo ${#VAR}'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<save> <Id.Lit_Colon ':'> <results>} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-z>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-v>} {(DQ <'^13'> <Id.Lit_Dollar '$'>)} {<results>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [ {<atf_fail>} { (DQ <'Incorrect lengths: '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {<-nv>} {(SQ <'^13$'>)} {<results>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<cmdline>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <cmdline_head> name: cmdline_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Check vars containing all chars can be used'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <cmdline_body> name: cmdline_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<wc>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<results>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <mkdata> more_env: [] words: [{<mkdata>} {(DQ <'VAR='>)} {<-->} {(SQ <'; echo "${VAR}"'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<save> <Id.Lit_Colon ':'> <results>} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<results>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } {<-eq>} {<256>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'incorrect line count in results'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<results>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } {<-eq>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Star left: {<Id.Lit_Digits 255>} right: {<Id.Lit_Digits 14>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'incorrect character count in results'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<redirect>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <redirect_head> name: redirect_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Check vars containing all chars can be used'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <redirect_body> name: redirect_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<ls>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<wc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<mkdir>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rmdir>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'nl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl) op: assign_op.Equal rhs: {(SQ <'\n'>)} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<prefix> <Id.Lit_Star '*'>} {<suffix>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<prefix>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <mkdata> more_env: [] words: [{<mkdata>} {(DQ <'VAR='>)} {<-->} {(SQ <'; echo "${VAR}" > "${VAR}"'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ <'prefix/suffix'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'Failed to create file in subdirectory'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ <'prefix/suffix'>)} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } {<-eq>} {<1>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'Not exactly one line in prefix/suffix file'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<-e>} {<empty>} {<rm>} {(DQ <'prefix/suffix'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<-e>} {<empty>} {<rmdir>} {(DQ <prefix>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ <prefix> (${ Id.VSub_Name nl) <suffix>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'Failed to create file with newline in its name'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ <prefix> (${ Id.VSub_Name nl) <suffix>)} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } {<-eq>} {<2>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'NewLine file did not contain embedded newline'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<-e>} {<empty>} {<rm>} {(DQ <prefix> (${ Id.VSub_Name nl) <suffix>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } {<-eq>} {<253>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [ {<atf_fail>} { (DQ <'Did not create all expected files: wanted: 253, found ('> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) <')'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } {<-eq>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Star left: {<Id.Lit_Digits 253>} right: {<Id.Lit_Digits 14>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'File names do not appear to be as expected'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<read>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <read_head> name: read_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Check vars containing all chars can be used'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <read_body> name: read_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<ls>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<wc>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rm>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<mkdir>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_require_prog> more_env: [] words: [{<atf_require_prog>} {<rmdir>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'nl='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nl='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl) op: assign_op.Equal rhs: {(SQ <'\n'>)} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {<prefix> <Id.Lit_Star '*'>} {<suffix>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<prefix>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <mkdata> more_env: [] words: [{<mkdata>} {<-q>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<-e>} {<empty>} {(${ Id.VSub_Name TEST_SH)} {<-c>} { (SQ <'\n'> <'\t\t\twhile read -r VAR\n'> <'\t\t\tdo\n'> <'\t\t\t\t# skip the mess made by embedded newline\n'> <'\t\t\t\tcase "${VAR}" in\n'> <'\t\t\t\t(prefix | suffix)\tcontinue;;\n'> <'\t\t\t\tesac\n'> <'\t\t\t\techo "${VAR}" > "${VAR}"\n'> <'\t\t\tdone'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ <'prefix/suffix'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'Failed to create file in subdirectory'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ <'prefix/suffix'>)} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } {<-eq>} {<1>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'Not exactly one line in prefix/suffix file'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<-e>} {<empty>} {<rm>} {(DQ <'prefix/suffix'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} {<-e>} {<empty>} {<rmdir>} {(DQ <prefix>)} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } {<-eq>} {<253>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [ {<atf_fail>} { (DQ <'Did not create all expected files: wanted: 253, found ('> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) <')'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-c>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } {<-eq>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Star left: {<Id.Lit_Digits 253>} right: {<Id.Lit_Digits 14>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'File names do not appear to be as expected'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <atf_init_test_cases> name: atf_init_test_cases body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<aaa>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<assignment>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<cmdline>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<redirect>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<read>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )