(command.CommandList children: [ (C {<Id.KW_Set set>} {<-u>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:returnF) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name TMPDIR> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {<Id.Lit_Slash /> <tmp>} ) ) </return> ) } spids: [68] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:stdoutF) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name TMPDIR> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {<Id.Lit_Slash /> <tmp>} ) ) </STDOUT> ) } spids: [79] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:stderrF) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name TMPDIR> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {<Id.Lit_Slash /> <tmp>} ) ) </STDERR> ) } spids: [90] ) ] ) (C {<.>} {<./shflags_test_helpers>}) (command.ShFunction name: testGetoptStandard body: (command.BraceGroup children: [ (command.Simple words: [{<_flags_getoptStandard>} {(SQ <-b>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rslt) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [138] ) ] ) (C {<assertTrue>} {(DQ <"didn't parse valid flag 'b'">)} {(${ Id.VSub_Name rslt)}) (C {<th_showOutput>} {(${ Id.VSub_Name rslt)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (command.Simple words: [{<_flags_getoptStandard>} {(SQ <-x>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (C {<assertFalse>} {(DQ <"parsed invalid flag 'x'">)} {($ Id.VSub_QMark '$?')}) ] ) ) (command.ShFunction name: testGetoptEnhanced body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [{<_flags_getoptEnhanced>} {(SQ <-b>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (C {<assertTrue>} {(DQ <"didn't parse valid flag 'b'">)} {($ Id.VSub_QMark '$?')}) (command.Simple words: [{<_flags_getoptEnhanced>} {(SQ <--bool>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (C {<assertTrue>} {(DQ <"didn't parse valid flag 'bool'">)} {($ Id.VSub_QMark '$?')}) (command.Simple words: [{<_flags_getoptEnhanced>} {(SQ <-x>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (C {<assertFalse>} {(DQ <"parsed invalid flag 'x'">)} {($ Id.VSub_QMark '$?')}) (command.Simple words: [{<_flags_getoptEnhanced>} {(SQ <--xyz>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (C {<assertFalse>} {(DQ <"parsed invalid flag 'xyz'">)} {($ Id.VSub_QMark '$?')}) ] ) ) (command.ShFunction name: testValidBoolsShort body: (command.BraceGroup children: [ (command.Simple words: [{<FLAGS>} {<-b>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [369] ) ] ) (C {<assertTrue>} {(DQ <'-b) FLAGS returned a non-zero result ('> (${ Id.VSub_Name r3turn) <')'>)} {(${ Id.VSub_Name r3turn)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:value) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FLAGS_bool> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{}) ) } spids: [388] ) ] ) (C {<assertTrue>} {(DQ <'-b) boolean was not true ('> (${ Id.VSub_Name value) <').'>)} {(DQ (${ Id.VSub_Name value))} ) (C {<assertFalse>} {(SQ <'-b) expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<test>} {(${ Id.VSub_Name r3turn)} {<-eq>} {(DQ (${ Id.VSub_Name FLAGS_TRUE))} {<-a>} {<Id.KW_Bang '!'>} {<-s>} {(DQ (${ Id.VSub_Name stderrF))} ) (C {<th_showOutput>} {($ Id.VSub_QMark '$?')} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (C {<DEFINE_boolean>} {<bool2>} {<true>} {(SQ <'2nd boolean'>)} {<B>}) (command.Simple words: [{<FLAGS>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [502] ) ] ) (C {<assertTrue>} {(DQ <'-B) FLAGS returned a non-zero result ('> (${ Id.VSub_Name r3turn) <')'>)} {(${ Id.VSub_Name r3turn)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:value) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FLAGS_bool2> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{}) ) } spids: [521] ) ] ) (C {<assertTrue>} {(DQ <'-B) boolean was not true ('> (${ Id.VSub_Name value) <')'>)} {(DQ (${ Id.VSub_Name value))} ) (C {<assertFalse>} {(SQ <'-B) expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<test>} {(${ Id.VSub_Name r3turn)} {<-eq>} {(DQ (${ Id.VSub_Name FLAGS_TRUE))} {<-a>} {<Id.KW_Bang '!'>} {<-s>} {(DQ (${ Id.VSub_Name stderrF))} ) (C {<th_showOutput>} {($ Id.VSub_QMark '$?')} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (command.Simple words: [{<FLAGS>} {<-B>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [624] ) ] ) (C {<assertTrue>} {(DQ <'-B) FLAGS returned a non-zero result ('> (${ Id.VSub_Name r3turn) <')'>)} {(${ Id.VSub_Name r3turn)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:value) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name FLAGS_bool2> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{}) ) } spids: [643] ) ] ) (C {<assertFalse>} {(DQ <'-B) boolean was not false ('> (${ Id.VSub_Name value) <')'>)} {(DQ (${ Id.VSub_Name value))} ) (C {<assertFalse>} {(SQ <'-B) expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<test>} {(${ Id.VSub_Name r3turn)} {<-eq>} {(DQ (${ Id.VSub_Name FLAGS_TRUE))} {<-a>} {<Id.KW_Bang '!'>} {<-s>} {(DQ (${ Id.VSub_Name stderrF))} ) (C {<th_showOutput>} {($ Id.VSub_QMark '$?')} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) ] ) ) (command.ShFunction name: testValidBoolsLong body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [{<FLAGS>} {<--nobool>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [774] ) ] ) (C {<assertTrue>} {(DQ <'FLAGS returned a non-zero result ('> (${ Id.VSub_Name r3turn) <')'>)} {(${ Id.VSub_Name r3turn)} ) (C {<assertFalse>} {(SQ <'--noXX flag resulted in true value.'>)} { (DQ (braced_var_sub token: <Id.VSub_Name FLAGS_bool> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } ) (C {<assertFalse>} {(SQ <'expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (command.Simple words: [{<FLAGS>} {<--bool>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [865] ) ] ) (C {<assertTrue>} {(DQ <'FLAGS returned a non-zero result ('> (${ Id.VSub_Name r3turn) <')'>)} {(${ Id.VSub_Name r3turn)} ) (C {<assertTrue>} {(SQ <'--XX flag resulted in false value.'>)} { (DQ (braced_var_sub token: <Id.VSub_Name FLAGS_bool> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } ) (C {<assertFalse>} {(SQ <'expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (command.Simple words: [{<FLAGS>} {<--nobool>}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [956] ) ] ) (C {<assertTrue>} {(DQ <'FLAGS returned a non-zero result ('> (${ Id.VSub_Name r3turn) <')'>)} {(${ Id.VSub_Name r3turn)} ) (C {<assertFalse>} {(SQ <'--noXX flag resulted in true value.'>)} { (DQ (braced_var_sub token: <Id.VSub_Name FLAGS_bool> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } ) (C {<assertFalse>} {(SQ <'expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) ] ) ) (command.ShFunction name: testValidFloats body: (command.BraceGroup children: [ (C {<_testValidFloats>} {(SQ <-f>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<_testValidFloats>} {(SQ <--float>)}) ] ) ) (command.ShFunction name: _testValidFloats body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1062] ) ] ) (command.ForEach iter_name: value iter_words: [{(${ Id.VSub_Name TH_FLOAT_VALID)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Simple words: [{<FLAGS>} {(DQ (${ Id.VSub_Name flag))} {(DQ (${ Id.VSub_Name value))}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [1109] ) ] ) (C {<assertTrue>} { (DQ <'FLAGS '> (${ Id.VSub_Name flag) <' '> (${ Id.VSub_Name value) <' returned non-zero result ('> (${ Id.VSub_Name r3turn) <')'> ) } {(${ Id.VSub_Name r3turn)} ) (C {<assertEquals>} { (DQ <'float ('> (${ Id.VSub_Name flag) <' '> (${ Id.VSub_Name value) <') test failed.'> ) } {(DQ (${ Id.VSub_Name value))} {(DQ (${ Id.VSub_Name FLAGS_float))} ) (C {<assertFalse>} {(SQ <'expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) ] ) ) ] ) ) (command.ShFunction name: testInvalidFloats body: (command.BraceGroup children: [ (C {<_testInvalidFloats>} {(SQ <-f>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<_testInvalidFloats>} {(SQ <--float>)}) ] ) ) (command.ShFunction name: _testInvalidFloats body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1245] ) ] ) (command.ForEach iter_name: value iter_words: [{(${ Id.VSub_Name TH_FLOAT_INVALID)}] do_arg_iter: F body: (command.DoGroup children: [ (C {<th_clearReturn>}) (command.Subshell command_list: (command.CommandList children: [ (command.Simple words: [ {<FLAGS>} {(DQ (${ Id.VSub_Name flag))} {(DQ (${ Id.VSub_Name value))} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.Simple words: [{<echo>} {($ Id.VSub_QMark '$?')}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name returnF))} ) ] ) ] ) ) (C {<assertFalse>} {(DQ <'FLAGS ('> (${ Id.VSub_Name value) <') returned a zero result'>)} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children:[(C {<th_queryReturn>})]) ) ) } ) (C {<assertFalse>} {(SQ <'expected no output to STDOUT'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stdoutF) <"' ]">)} ) (C {<assertTrue>} {(SQ <'expected output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) ] ) ) ] ) ) (command.ShFunction name: testValidIntegers body: (command.BraceGroup children: [ (C {<_testValidIntegers>} {(SQ <-i>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<_testValidIntegers>} {(SQ <--int>)}) ] ) ) (command.ShFunction name: _testValidIntegers body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1402] ) ] ) (command.ForEach iter_name: value iter_words: [{(${ Id.VSub_Name TH_INT_VALID)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Simple words: [{<FLAGS>} {(DQ (${ Id.VSub_Name flag))} {(DQ (${ Id.VSub_Name value))}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [1449] ) ] ) (C {<assertTrue>} { (DQ <'FLAGS ('> (${ Id.VSub_Name value) <') returned a non-zero result ('> (${ Id.VSub_Name r3turn) <')'> ) } {(${ Id.VSub_Name r3turn)} ) (C {<assertEquals>} {(DQ <'integer ('> (${ Id.VSub_Name value) <') test failed.'>)} {(DQ (${ Id.VSub_Name value))} {(DQ (${ Id.VSub_Name FLAGS_int))} ) (C {<assertFalse>} {(SQ <'expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) ] ) ) ] ) ) (command.ShFunction name: testInvalidIntegers body: (command.BraceGroup children: [ (C {<_testInvalidIntegers>} {(SQ <-i>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<_testInvalidIntegers>} {(SQ <--int>)}) ] ) ) (command.ShFunction name: _testInvalidIntegers body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1575] ) ] ) (command.ForEach iter_name: value iter_words: [{(${ Id.VSub_Name TH_INT_INVALID)}] do_arg_iter: F body: (command.DoGroup children: [ (C {<th_clearReturn>}) (command.Subshell command_list: (command.CommandList children: [ (command.Simple words: [ {<FLAGS>} {(DQ (${ Id.VSub_Name flag))} {(DQ (${ Id.VSub_Name value))} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.Simple words: [{<echo>} {($ Id.VSub_QMark '$?')}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name returnF))} ) ] ) ] ) ) (C {<assertFalse>} { (DQ <'invalid integer ('> (${ Id.VSub_Name value) <') test returned success.'>) } { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> command_list: (command.CommandList children:[(C {<th_queryReturn>})]) ) ) } ) (C {<assertFalse>} {(SQ <'expected no output to STDOUT'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stdoutF) <"' ]">)} ) (C {<assertTrue>} {(SQ <'expected output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) ] ) ) ] ) ) (command.ShFunction name: testValidStrings body: (command.BraceGroup children: [ (C {<_testValidStrings>} {<-s>} {<single_word>}) (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {<flags_getoptIsEnh>}) terminator:<Id.Op_Semi _>)] action: [ (C {<_testValidStrings>} {<--str>} {<single_word>}) (C {<_testValidStrings>} {<--str>} {(SQ <'string with spaces'>)}) ] spids: [1709 1714] ) ] ) ] ) ) (command.ShFunction name: _testValidStrings body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:flag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1745] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:value) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1749] ) ] ) (command.Simple words: [{<FLAGS>} {(DQ (${ Id.VSub_Name flag))} {(DQ (${ Id.VSub_Name value))}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [1783] ) ] ) (C {<assertTrue>} { (DQ <"'FLAGS "> (${ Id.VSub_Name flag) <' '> (${ Id.VSub_Name value) <"' returned a non-zero result ("> (${ Id.VSub_Name r3turn) <')'> ) } {(${ Id.VSub_Name r3turn)} ) (C {<assertEquals>} {(DQ <'string ('> (${ Id.VSub_Name value) <') test failed.'>)} {(DQ (${ Id.VSub_Name value))} {(DQ (${ Id.VSub_Name FLAGS_str))} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name r3turn)} {<-eq>} {(DQ (${ Id.VSub_Name FLAGS_TRUE))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] action: [ (C {<assertFalse>} {(SQ <'expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) ] spids: [1839 1858] ) ] else_action: [(C {<assertFatalMsg>} {(SQ <'.* spaces in options'>)})] ) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) ] ) ) (command.ShFunction name: testMultipleFlags body: (command.BraceGroup children: [ (C {<_testMultipleFlags>} {(SQ <-b>)} {(SQ <-i>)} {(SQ <-f>)} {(SQ <-s>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<_testMultipleFlags>} {(SQ <--bool>)} {(SQ <--int>)} {(SQ <--float>)} {(SQ <--str>)}) ] ) ) (command.ShFunction name: _testMultipleFlags body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:boolFlag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1975] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:intFlag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1979] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:floatFlag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [1983] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:strFlag) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [1987] ) ] ) (command.Simple words: [ {<FLAGS>} {(DQ (${ Id.VSub_Name boolFlag))} {(DQ (${ Id.VSub_Name intFlag))} {<567>} {(DQ (${ Id.VSub_Name floatFlag))} {<123.45678>} {(DQ (${ Id.VSub_Name strFlag))} {(SQ <some_string>)} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2051] ) ] ) (C {<assertTrue>} {(DQ <'use of multiple flags returned a non-zero result'>)} {(${ Id.VSub_Name r3turn)} ) (C {<assertTrue>} {(SQ <'boolean test failed.'>)} {(DQ (${ Id.VSub_Name FLAGS_bool))}) (C {<assertNotSame>} {(SQ <'float test failed.'>)} {<0>} {(DQ (${ Id.VSub_Name FLAGS_float))}) (C {<assertNotSame>} {(SQ <'integer test failed.'>)} {<0>} {(DQ (${ Id.VSub_Name FLAGS_int))}) (C {<assertNotSame>} {(SQ <'string test failed.'>)} {(SQ )} {(DQ (${ Id.VSub_Name FLAGS_str))}) (C {<assertFalse>} {(SQ <'expected no output to STDERR'>)} {(DQ <"[ -s '"> (${ Id.VSub_Name stderrF) <"' ]">)} ) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) ] ) ) (command.ShFunction name: _testNonFlagArgs body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:argc) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2168] ) ] ) (C {<shift>}) (command.Simple words: [{<FLAGS>} {(DQ ($ Id.VSub_At '$@'))}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2197] ) ] ) (C {<assertTrue>} {(SQ <'parse returned non-zero value.'>)} {(${ Id.VSub_Name r3turn)}) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (C {<eval>} {<Id.KW_Set set>} {<-->} {(DQ (${ Id.VSub_Name FLAGS_ARGV))}) (C {<assertEquals>} {(SQ <'wrong count of argv arguments returned.'>)} {(DQ (${ Id.VSub_Name argc))} {($ Id.VSub_Pound '$#')} ) (C {<assertEquals>} {(SQ <'wrong count of argc arguments returned.'>)} {<0>} {(DQ (${ Id.VSub_Name FLAGS_ARGC))} ) ] ) ) (command.ShFunction name: testSingleNonFlagArg body: (command.BraceGroup children:[(C {<_testNonFlagArgs>} {<1>} {<argOne>})]) ) (command.ShFunction name: testMultipleNonFlagArgs body: (command.BraceGroup children: [(C {<_testNonFlagArgs>} {<3>} {<argOne>} {<argTwo>} {<arg3>})] ) ) (command.ShFunction name: testMultipleNonFlagStringArgsWithSpaces body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<_testNonFlagArgs>} {<3>} {<argOne>} {(SQ <'arg two'>)} {<arg3>}) ] ) ) (command.ShFunction name: testFlagsWithEquals body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [{<FLAGS>} {<--str> <Id.Lit_Equals '='> (SQ <str_flag>)} {(SQ <non_flag>)}] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (C {<assertTrue>} {(SQ <'FLAGS returned a non-zero result'>)} {($ Id.VSub_QMark '$?')}) (C {<assertEquals>} {(SQ <'string flag not set properly'>)} {(SQ <str_flag>)} {(DQ (${ Id.VSub_Name FLAGS_str))} ) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (C {<eval>} {<Id.KW_Set set>} {<-->} {(DQ (${ Id.VSub_Name FLAGS_ARGV))}) (C {<assertEquals>} {(SQ <'wrong count of argv arguments returned.'>)} {<1>} {($ Id.VSub_Pound '$#')} ) (C {<assertEquals>} {(SQ <'wrong count of argc arguments returned.'>)} {<1>} {(DQ (${ Id.VSub_Name FLAGS_ARGC))} ) ] ) ) (command.ShFunction name: testComplicatedCommandLineStandard body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [ {<FLAGS>} {<-i>} {<1>} {<non_flag_1>} {<-s>} {(SQ <two>)} {<non_flag_2>} {<-f>} {<3>} {<non_flag_3>} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2533] ) ] ) (C {<assertTrue>} {(SQ <'FLAGS returned a non-zero result'>)} {(${ Id.VSub_Name r3turn)}) (C {<assertEquals>} {(SQ <'failed int test'>)} {<1>} {(DQ (${ Id.VSub_Name FLAGS_int))}) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (C {<eval>} {<Id.KW_Set set>} {<-->} {(DQ (${ Id.VSub_Name FLAGS_ARGV))}) (C {<assertEquals>} {(SQ <'incorrect number of argv values'>)} {<7>} {($ Id.VSub_Pound '$#')}) ] ) ) (command.ShFunction name: testComplicatedCommandLineEnhanced body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<flags_getoptIsEnh>}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.Simple words: [ {<FLAGS>} {<-i>} {<1>} {<non_flag_1>} {<--str> <Id.Lit_Equals '='> (SQ <two>)} {<non_flag_2>} {<--float>} {<3>} {(SQ <'non flag 3'>)} ] redirects: [ (redir.Redir op: <Id.Redir_Great '>'> fd: -1 arg_word: {(DQ (${ Id.VSub_Name stdoutF))} ) (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {(DQ (${ Id.VSub_Name stderrF))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:r3turn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2665] ) ] ) (C {<assertTrue>} {(SQ <'FLAGS returned a non-zero result'>)} {(${ Id.VSub_Name r3turn)}) (C {<assertEquals>} {(SQ <'failed int test'>)} {<1>} {(DQ (${ Id.VSub_Name FLAGS_int))}) (C {<assertEquals>} {(SQ <'failed str test'>)} {(SQ <two>)} {(DQ (${ Id.VSub_Name FLAGS_str))}) (C {<assertEquals>} {(SQ <'failed float test'>)} {<3>} {(DQ (${ Id.VSub_Name FLAGS_float))}) (C {<th_showOutput>} {(${ Id.VSub_Name r3turn)} {(DQ (${ Id.VSub_Name stdoutF))} {(DQ (${ Id.VSub_Name stderrF))} ) (C {<eval>} {<Id.KW_Set set>} {<-->} {(DQ (${ Id.VSub_Name FLAGS_ARGV))}) (C {<assertEquals>} {(SQ <'incorrect number of argv values'>)} {<3>} {($ Id.VSub_Pound '$#')}) ] ) ) (command.ShFunction name: oneTimeSetUp body: (command.BraceGroup children: [ (C {<th_oneTimeSetUp>}) (command.If arms: [ (if_arm cond: [(command.Sentence child:(C {<flags_getoptIsStd>}) terminator:<Id.Op_Semi _>)] action: [ (C {<th_warn>} {(SQ <'Standard version of getopt found. Enhanced tests will be skipped.'>)} ) ] spids: [2784 2789] ) ] else_action: [ (C {<th_warn>} {(SQ <'Enhanced version of getopt found. Standard tests will be skipped.'>)} ) ] ) ] ) ) (command.ShFunction name: setUp body: (command.BraceGroup children: [ (C {<DEFINE_boolean>} {<bool>} {<false>} {(SQ <'boolean test'>)} {(SQ <b>)}) (C {<DEFINE_float>} {<float>} {<0.0>} {(SQ <'float test'>)} {(SQ <f>)}) (C {<DEFINE_integer>} {<int>} {<0>} {(SQ <'integer test'>)} {(SQ <i>)}) (C {<DEFINE_string>} {<str>} {(SQ )} {(SQ <'string test'>)} {(SQ <s>)}) ] ) ) (command.ShFunction name:tearDown body:(command.BraceGroup children:[(C {<flags_reset>})])) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub token: <Id.VSub_Name ZSH_VERSION> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:(word.Empty)) ) ) } {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SHUNIT_PARENT) op: assign_op.Equal rhs: {($ Id.VSub_Number '$0')} spids: [2917] ) ] ) ] ) (C {<.>} {(DQ (${ Id.VSub_Name TH_SHUNIT))}) ] )