(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OUTPUT_ROOT) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [73] ) ] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROOT) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:79) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:82) command_list: (command.CommandList children: [(C {(dirname)} {($ Id.VSub_DollarName '$BASH_SOURCE')})] ) ) (/..) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:88) ) (C {(pwd)}) ] ) ) } spids: [78] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_LOGDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OUTPUT_ROOT') (/build/) ($ Id.VSub_Number '$1') (-logs)} spids: [94] ) ] ) (C {(mkdir)} {(-p)} {($ Id.VSub_DollarName '$TEST_LOGDIR')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RUN_TYPE) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [107] ) ] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_DEBUGDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OUTPUT_ROOT') (/build/) ($ Id.VSub_DollarName '$RUN_TYPE') (-debug) } spids: [112] ) ] ) (C {(mkdir)} {(-p)} {($ Id.VSub_DollarName '$TEST_DEBUGDIR')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_DIRNAME) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:126) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:129) command_list: (command.CommandList children: [(C {(dirname)} {($ Id.VSub_Number '$1')})] ) ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:134) ) (C {(pwd)}) ] ) ) } spids: [125] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_FILENAME) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:140) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_Number '$1')})] ) ) } spids: [139] ) ] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_EXECUTABLE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$TEST_DIRNAME') (/) ($ Id.VSub_DollarName '$TEST_FILENAME'))} spids: [148] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_NAME) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:156) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$TEST_FILENAME')}) (C {(perl)} {(-pe)} {(SQ (Token id:Id.Lit_Chars val:'s/\\..+?$//' span_id:168))} ) ] negated: F ) ] ) ) } spids: [155] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_WORKDIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$OUTPUT_ROOT') (/build/test-work/) ($ Id.VSub_DollarName '$TEST_NAME') } spids: [179] ) ] ) (C {(mkdir)} {(-p)} {($ Id.VSub_DollarName '$TEST_WORKDIR')}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{(pushd)} {($ Id.VSub_DollarName '$TEST_WORKDIR')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:194) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:199) arg_word: {(1)} ) ] ) (C {(rm)} {(-f)} {(Id.Lit_Star '*')}) (C {(Id.KW_Set set)} {(-o)} {(pipefail)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOGFILE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$TEST_LOGDIR') (/) ($ Id.VSub_DollarName '$TEST_NAME') (.txt)} spids: [217] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:XMLFILE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$TEST_LOGDIR') (/) ($ Id.VSub_DollarName '$TEST_NAME') (.xml)} spids: [223] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_EXECUTION_ATTEMPTS) op: assign_op.Equal rhs: {(1)} spids: [230] ) ] ) (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$LOGFILE')} {($ Id.VSub_DollarName '$LOGFILE') (.gz)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pipe_cmd) op: assign_op.Equal rhs: {(cat)} spids: [250] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ARROW_TEST_ULIMIT_CORE) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:ARROW_TEST_ULIMIT_CORE span_id:259) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(0)}) ) } spids: [257] ) ] ) (C {(ulimit)} {(-c)} {($ Id.VSub_DollarName '$ARROW_TEST_ULIMIT_CORE')}) (command.ShFunction name: setup_sanitizers body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TSAN_OPTIONS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$TSAN_OPTIONS') (' detect_deadlocks=0'))} spids: [314] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TSAN_OPTIONS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$TSAN_OPTIONS') (' suppressions=') ($ Id.VSub_DollarName '$ROOT') (/build-support/tsan-suppressions.txt) ) } spids: [321] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TSAN_OPTIONS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$TSAN_OPTIONS') (' history_size=7'))} spids: [330] ) ] ) (C {(export)} {(TSAN_OPTIONS)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LSAN_OPTIONS) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$LSAN_OPTIONS') (' suppressions=') ($ Id.VSub_DollarName '$ROOT') (/build-support/lsan-suppressions.txt) ) } spids: [364] ) ] ) (C {(export)} {(LSAN_OPTIONS)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$ASAN_SYMBOLIZER_PATH'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:398) ) ] action: [ (C {(export)} {(Id.Lit_VarLike 'ASAN_SYMBOLIZER_PATH=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:406) command_list: (command.CommandList children: [ (C {(find)} {($ Id.VSub_DollarName '$NATIVE_TOOLCHAIN') (/llvm-3.7.0/bin)} {(-name)} {(llvm-symbolizer)} ) ] ) ) } ) ] spids: [387 400] ) ] ) ] ) ) (command.ShFunction name: run_test body: (command.BraceGroup children: [ (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$XMLFILE')}) (command.Pipeline children: [ (command.Simple words: [{($ Id.VSub_DollarName '$TEST_EXECUTABLE')} {(DQ ($ Id.VSub_At '$@'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:459) fd: 2 arg_word: {(1)} ) ] ) (C {($ Id.VSub_DollarName '$ROOT') (/build-support/asan_symbolize.py)}) (C {(c) (Id.Lit_Other '+') (Id.Lit_Other '+') (filt)}) (C {($ Id.VSub_DollarName '$ROOT') (/build-support/stacktrace_addr2line.pl)} {($ Id.VSub_DollarName '$TEST_EXECUTABLE')} ) (command.Simple words: [{($ Id.VSub_DollarName '$pipe_cmd')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:493) fd: 2 arg_word: {(1)} ) ] ) (C {(tee)} {($ Id.VSub_DollarName '$LOGFILE')}) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STATUS) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [503] ) ] ) (C {(export)} {(Id.Lit_VarLike 'GREP=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:543) command_list: (command.CommandList children:[(C {(which)} {(egrep)})]) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(zgrep)} {(--silent)} {(DQ ('ThreadSanitizer|Leak check.*detected leaks'))} {($ Id.VSub_DollarName '$LOGFILE')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:562) ) ] action: [ (C {(echo)} {(ThreadSanitizer)} {(or)} {(leak)} {(check)} {(failures)} {(Id.KW_In in)} {($ Id.VSub_DollarName '$LOGFILE')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STATUS) op: assign_op.Equal rhs: {(1)} spids: [584] ) ] ) (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$XMLFILE')}) ] spids: [550 564] ) ] ) ] ) ) (command.ShFunction name: post_process_tests body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(zgrep)} {(--silent)} {(DQ ('ERROR: LeakSanitizer: detected memory leaks'))} {($ Id.VSub_DollarName '$LOGFILE')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:633) ) ] action: [ (C {(echo)} {(Test)} {(had)} {(memory)} {(leaks.)} {(Editing)} {(XML)}) (C {(perl)} {(-p)} {(-i)} {(-e)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:662) (Token id: Id.Lit_Chars val: ' if (m#</testsuite>#) {\n' span_id: 663 ) (Token id: Id.Lit_Chars val: ' print "<testcase name=\\"LeakSanitizer\\" status=\\"run\\" classname=\\"LSAN\\">\\n";\n' span_id: 664 ) (Token id: Id.Lit_Chars val: ' print " <failure message=\\"LeakSanitizer failed\\" type=\\"\\">\\n";\n' span_id: 665 ) (Token id:Id.Lit_Chars val:' print " See txt log file for details\\n";\n' span_id:666) (Token id: Id.Lit_Chars val: ' print " </failure>\\n";\n' span_id: 667 ) (Token id:Id.Lit_Chars val:' print "</testcase>\\n";\n' span_id:668) (Token id:Id.Lit_Chars val:' }' span_id:669) ) } {($ Id.VSub_DollarName '$XMLFILE')} ) ] spids: [621 635] ) ] ) ] ) ) (command.ShFunction name: run_other body: (command.BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [{($ Id.VSub_DollarName '$TEST_EXECUTABLE')} {(DQ ($ Id.VSub_At '$@'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:699) fd: 2 arg_word: {(1)} ) ] ) (command.Simple words: [{($ Id.VSub_DollarName '$pipe_cmd')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:706) fd: -1 arg_word: {($ Id.VSub_DollarName '$LOGFILE')} ) ] ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STATUS) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [711] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$RUN_TYPE')} {(Id.Lit_Equals '=')} {(DQ (test))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:730) ) ] action: [(C {(setup_sanitizers)})] spids: [717 732] ) ] ) (command.ForEach iter_name: ATTEMPT_NUMBER iter_words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:749) command_list: (command.CommandList children: [(C {(seq)} {(1)} {($ Id.VSub_DollarName '$TEST_EXECUTION_ATTEMPTS')})] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$ATTEMPT_NUMBER')} {(-lt)} {($ Id.VSub_DollarName '$TEST_EXECUTION_ATTEMPTS')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:773) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_TMPDIR_BEFORE) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:803) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(find)} {($ Id.VSub_DollarName '$TEST_TMPDIR')} {(-maxdepth)} {(1)} {(-type)} {(d)} ) (C {(sort)}) ] negated: F ) ] ) ) } spids: [802] ) ] ) ] spids: [762 775] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$ATTEMPT_NUMBER')} {(-lt)} {($ Id.VSub_DollarName '$TEST_EXECUTION_ATTEMPTS')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:837) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_TMPDIR_AFTER) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:847) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(find)} {($ Id.VSub_DollarName '$TEST_TMPDIR')} {(-maxdepth)} {(1)} {(-type)} {(d)} ) (C {(sort)}) ] negated: F ) ] ) ) } spids: [846] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIFF) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:867) command_list: (command.CommandList children: [ (C {(comm)} {(-13)} { (command_sub left_token: (Token id: Id.Left_ProcSubIn val: '<(' span_id: 872 ) command_list: (command.CommandList children: [ (C {(echo)} { (DQ ($ Id.VSub_DollarName '$TEST_TMPDIR_BEFORE') ) } ) ] ) ) } { (command_sub left_token: (Token id: Id.Left_ProcSubIn val: '<(' span_id: 882 ) command_list: (command.CommandList children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$TEST_TMPDIR_AFTER'))} ) ] ) ) } ) ] ) ) } spids: [866] ) ] ) (command.ForEach iter_name: DIR iter_words: [{($ Id.VSub_DollarName '$DIFF')}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_DollarName '$DIR')} right: {(Id.Lit_Other '^') ($ Id.VSub_DollarName '$TEST_TMPDIR') (/) ($ Id.VSub_DollarName '$TEST_NAME') } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:942) ) ] action: [ (C {(echo)} {(Deleting)} {(leftover)} {(flaky)} {(test)} {(directory)} {(DQ ($ Id.VSub_DollarName '$DIR'))} ) (C {(rm)} {(-Rf)} {(DQ ($ Id.VSub_DollarName '$DIR'))}) ] spids: [928 944] ) ] ) ] ) ) ] spids: [826 839] ) ] ) (C {(echo)} { (DQ ('Running ') ($ Id.VSub_DollarName '$TEST_NAME') (', redirecting output into ') ($ Id.VSub_DollarName '$LOGFILE') ) } { (DQ ('(attempt ') (${ Id.VSub_Name ATTEMPT_NUMBER) (/) ($ Id.VSub_DollarName '$TEST_EXECUTION_ATTEMPTS') (')') ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$RUN_TYPE')} {(Id.Lit_Equals '=')} {(DQ (test))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1017) ) ] action: [(C {(run_test)} {($ Id.VSub_Star '$*')})] spids: [1004 1019] ) ] else_action: [(C {(run_other)} {($ Id.VSub_Star '$*')})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$STATUS'))} {(-eq)} {(DQ (0))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1053) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:1058) ) ] spids: [1038 1055] ) (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$ATTEMPT_NUMBER'))} {(-lt)} {(DQ ($ Id.VSub_DollarName '$TEST_EXECUTION_ATTEMPTS'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1076) ) ] action: [ (C {(echo)} {(Test)} {(failed)} {(attempt)} {(number)} {($ Id.VSub_DollarName '$ATTEMPT_NUMBER')} ) (C {(echo)} {(Will)} {(retry...)}) ] spids: [1061 1078] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$RUN_TYPE')} {(Id.Lit_Equals '=')} {(DQ (test))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1119) ) ] action: [(C {(post_process_tests)})] spids: [1106 1121] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COREFILES) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1133) command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(ls)}) (C {(grep)} {(Id.Lit_Other '^') (core)})] negated: F ) ] ) ) } spids: [1132] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$COREFILES'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1155) ) ] action: [ (C {(echo)} {(Found)} {(core)} {(dump.)} {(Saving)} {(executable)} {(and)} {(core)} {(files.)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{(gzip)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1181) fd: -1 arg_word: {($ Id.VSub_DollarName '$TEST_EXECUTABLE')} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1185) fd: -1 arg_word: { (DQ ($ Id.VSub_DollarName '$TEST_DEBUGDIR') (/) ($ Id.VSub_DollarName '$TEST_NAME') (.gz) ) } ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1196) arg_word: {($ Id.VSub_QMark '$?')} ) ] ) (command.ForEach iter_name: COREFILE iter_words: [{($ Id.VSub_DollarName '$COREFILES')}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{(gzip)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1215) fd: -1 arg_word: {($ Id.VSub_DollarName '$COREFILE')} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1219) fd: -1 arg_word: { (DQ ($ Id.VSub_DollarName '$TEST_DEBUGDIR') (/) ($ Id.VSub_DollarName '$TEST_NAME') (.) ($ Id.VSub_DollarName '$COREFILE') (.gz) ) } ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1232) arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ] ) ) (command.ForEach iter_name: LIB iter_words: [ { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1250) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(ldd)} {($ Id.VSub_DollarName '$TEST_EXECUTABLE')}) (C {(grep)} {($ Id.VSub_DollarName '$ROOT')}) (C {(awk)} {(SQ (Token id:Id.Lit_Chars val:'{print $3}' span_id:1266))}) ] negated: F ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIB_NAME) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1275) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_DollarName '$LIB')})] ) ) } spids: [1274] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{(gzip)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1284) fd: -1 arg_word: {($ Id.VSub_DollarName '$LIB')} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1288) fd: -1 arg_word: { (DQ ($ Id.VSub_DollarName '$TEST_DEBUGDIR') (/) ($ Id.VSub_DollarName '$LIB_NAME') (.gz) ) } ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1299) arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ] ) ) ] spids: [1144 1157] ) ] ) (C {(popd)}) (C {(rm)} {(-Rf)} {($ Id.VSub_DollarName '$TEST_WORKDIR')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1318) arg_word: {($ Id.VSub_DollarName '$STATUS')} ) ] )