(command.CommandList children: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:OUTPUT_ROOT) op:Equal rhs:{($ VSub_Number '$1')})] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ROOT) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(dirname)} {($ VSub_DollarName '$BASH_SOURCE')})] ) ) (/..) } ) terminator: <Op_Semi ';'> ) (C {(pwd)}) ] ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_LOGDIR) op: Equal rhs: {($ VSub_DollarName '$OUTPUT_ROOT') (/build/) ($ VSub_Number '$1') (-logs)} ) ] ) (C {(mkdir)} {(-p)} {($ VSub_DollarName '$TEST_LOGDIR')}) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:RUN_TYPE) op:Equal rhs:{($ VSub_Number '$1')})] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_DEBUGDIR) op: Equal rhs: {($ VSub_DollarName '$OUTPUT_ROOT') (/build/) ($ VSub_DollarName '$RUN_TYPE') (-debug)} ) ] ) (C {(mkdir)} {(-p)} {($ VSub_DollarName '$TEST_DEBUGDIR')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_DIRNAME) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(dirname)} {($ VSub_Number '$1')})] ) ) } ) terminator: <Op_Semi ';'> ) (C {(pwd)}) ] ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_FILENAME) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_Number '$1')})] ) ) } ) ] ) (C {(shift)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_EXECUTABLE) op: Equal rhs: {(DQ ($ VSub_DollarName '$TEST_DIRNAME') (/) ($ VSub_DollarName '$TEST_FILENAME'))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_NAME) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ VSub_DollarName '$TEST_FILENAME')}) (C {(perl)} {(-pe)} {(SQ <'s/\\..+?$//'>)}) ] negated: F ) ] ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_WORKDIR) op: Equal rhs: {($ VSub_DollarName '$OUTPUT_ROOT') (/build/test-work/) ($ VSub_DollarName '$TEST_NAME')} ) ] ) (C {(mkdir)} {(-p)} {($ VSub_DollarName '$TEST_WORKDIR')}) (command.AndOr ops: [Op_DPipe] children: [ (command.Simple words: [{(pushd)} {($ VSub_DollarName '$TEST_WORKDIR')}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) (C {(rm)} {(-f)} {(Lit_Star '*')}) (C {(KW_Set set)} {(-o)} {(pipefail)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOGFILE) op: Equal rhs: {($ VSub_DollarName '$TEST_LOGDIR') (/) ($ VSub_DollarName '$TEST_NAME') (.txt)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:XMLFILE) op: Equal rhs: {($ VSub_DollarName '$TEST_LOGDIR') (/) ($ VSub_DollarName '$TEST_NAME') (.xml)} ) ] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:TEST_EXECUTION_ATTEMPTS) op:Equal rhs:{(1)})] ) (C {(rm)} {(-f)} {($ VSub_DollarName '$LOGFILE')} {($ VSub_DollarName '$LOGFILE') (.gz)}) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:pipe_cmd) op:Equal rhs:{(cat)})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ARROW_TEST_ULIMIT_CORE) op: Equal rhs: { (braced_var_sub token: <VSub_Name ARROW_TEST_ULIMIT_CORE> suffix_op: (suffix_op.Unary op_id:VTest_ColonHyphen arg_word:{(0)}) ) } ) ] ) (C {(ulimit)} {(-c)} {($ 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: Equal rhs: {(DQ ($ VSub_DollarName '$TSAN_OPTIONS') (' detect_deadlocks=0'))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TSAN_OPTIONS) op: Equal rhs: { (DQ ($ VSub_DollarName '$TSAN_OPTIONS') (' suppressions=') ($ VSub_DollarName '$ROOT') (/build-support/tsan-suppressions.txt) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TSAN_OPTIONS) op: Equal rhs: {(DQ ($ VSub_DollarName '$TSAN_OPTIONS') (' history_size=7'))} ) ] ) (C {(export)} {(TSAN_OPTIONS)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LSAN_OPTIONS) op: Equal rhs: { (DQ ($ VSub_DollarName '$LSAN_OPTIONS') (' suppressions=') ($ VSub_DollarName '$ROOT') (/build-support/lsan-suppressions.txt) ) } ) ] ) (C {(export)} {(LSAN_OPTIONS)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(-z)} {(DQ ($ VSub_DollarName '$ASAN_SYMBOLIZER_PATH'))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(export)} {(Lit_VarLike 'ASAN_SYMBOLIZER_PATH=') (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(find)} {($ VSub_DollarName '$NATIVE_TOOLCHAIN') (/llvm-3.7.0/bin)} {(-name)} {(llvm-symbolizer)} ) ] ) ) } ) ] ) ] ) ] ) ) (command.ShFunction name: run_test body: (command.BraceGroup children: [ (C {(rm)} {(-f)} {($ VSub_DollarName '$XMLFILE')}) (command.Pipeline children: [ (command.Simple words: [{($ VSub_DollarName '$TEST_EXECUTABLE')} {(DQ ($ VSub_At '$@'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})] ) (C {($ VSub_DollarName '$ROOT') (/build-support/asan_symbolize.py)}) (C {(c) (Lit_Other '+') (Lit_Other '+') (filt)}) (C {($ VSub_DollarName '$ROOT') (/build-support/stacktrace_addr2line.pl)} {($ VSub_DollarName '$TEST_EXECUTABLE')} ) (command.Simple words: [{($ VSub_DollarName '$pipe_cmd')}] redirects: [(redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})] ) (C {(tee)} {($ VSub_DollarName '$LOGFILE')}) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STATUS) op: Equal rhs: {($ VSub_QMark '$?')} ) ] ) (C {(export)} {(Lit_VarLike 'GREP=') (command_sub left_token: <Left_DollarParen '$('> 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'))} {($ VSub_DollarName '$LOGFILE')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(ThreadSanitizer)} {(or)} {(leak)} {(check)} {(failures)} {(KW_In in)} {($ VSub_DollarName '$LOGFILE')} ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:STATUS) op:Equal rhs:{(1)})] ) (C {(rm)} {(-f)} {($ VSub_DollarName '$XMLFILE')}) ] ) ] ) ] ) ) (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'))} {($ VSub_DollarName '$LOGFILE')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(Test)} {(had)} {(memory)} {(leaks.)} {(Editing)} {(XML)}) (C {(perl)} {(-p)} {(-i)} {(-e)} { (SQ <'\n'> <' if (m#</testsuite>#) {\n'> < ' print "<testcase name=\\"LeakSanitizer\\" status=\\"run\\" classname=\\"LSAN\\">\\n";\n' > <' print " <failure message=\\"LeakSanitizer failed\\" type=\\"\\">\\n";\n'> <' print " See txt log file for details\\n";\n'> <' print " </failure>\\n";\n'> <' print "</testcase>\\n";\n'> <' }'> ) } {($ VSub_DollarName '$XMLFILE')} ) ] ) ] ) ] ) ) (command.ShFunction name: run_other body: (command.BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [{($ VSub_DollarName '$TEST_EXECUTABLE')} {(DQ ($ VSub_At '$@'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})] ) (command.Simple words: [{($ VSub_DollarName '$pipe_cmd')}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$LOGFILE')} ) ] ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:STATUS) op: Equal rhs: {($ VSub_QMark '$?')} ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {($ VSub_DollarName '$RUN_TYPE')} {(Lit_Equals '=')} {(DQ (test))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(setup_sanitizers)})] ) ] ) (command.ForEach iter_name: ATTEMPT_NUMBER iter_words: [ { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(seq)} {(1)} {($ VSub_DollarName '$TEST_EXECUTION_ATTEMPTS')})] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {($ VSub_DollarName '$ATTEMPT_NUMBER')} {(-lt)} {($ VSub_DollarName '$TEST_EXECUTION_ATTEMPTS')} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_TMPDIR_BEFORE) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(find)} {($ VSub_DollarName '$TEST_TMPDIR')} {(-maxdepth)} {(1)} {(-type)} {(d)} ) (C {(sort)}) ] negated: F ) ] ) ) } ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {($ VSub_DollarName '$ATTEMPT_NUMBER')} {(-lt)} {($ VSub_DollarName '$TEST_EXECUTION_ATTEMPTS')} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TEST_TMPDIR_AFTER) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(find)} {($ VSub_DollarName '$TEST_TMPDIR')} {(-maxdepth)} {(1)} {(-type)} {(d)} ) (C {(sort)}) ] negated: F ) ] ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:DIFF) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(comm)} {(-13)} { (command_sub left_token: <Left_ProcSubIn '<('> command_list: (command.CommandList children: [ (C {(echo)} {(DQ ($ VSub_DollarName '$TEST_TMPDIR_BEFORE'))} ) ] ) ) } { (command_sub left_token: <Left_ProcSubIn '<('> command_list: (command.CommandList children: [ (C {(echo)} {(DQ ($ VSub_DollarName '$TEST_TMPDIR_AFTER'))} ) ] ) ) } ) ] ) ) } ) ] ) (command.ForEach iter_name: DIR iter_words: [{($ 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: BoolBinary_EqualTilde left: {($ VSub_DollarName '$DIR')} right: {(Lit_Other '^') ($ VSub_DollarName '$TEST_TMPDIR') (/) ($ VSub_DollarName '$TEST_NAME') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(Deleting)} {(leftover)} {(flaky)} {(test)} {(directory)} {(DQ ($ VSub_DollarName '$DIR'))} ) (C {(rm)} {(-Rf)} {(DQ ($ VSub_DollarName '$DIR'))}) ] ) ] ) ] ) ) ] ) ] ) (C {(echo)} { (DQ ('Running ') ($ VSub_DollarName '$TEST_NAME') (', redirecting output into ') ($ VSub_DollarName '$LOGFILE') ) } { (DQ ('(attempt ') (${ VSub_Name ATTEMPT_NUMBER) (/) ($ VSub_DollarName '$TEST_EXECUTION_ATTEMPTS') (')') ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {($ VSub_DollarName '$RUN_TYPE')} {(Lit_Equals '=')} {(DQ (test))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(run_test)} {($ VSub_Star '$*')})] ) ] else_action: [(C {(run_other)} {($ VSub_Star '$*')})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(DQ ($ VSub_DollarName '$STATUS'))} {(-eq)} {(DQ (0))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Break break>)] ) (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(DQ ($ VSub_DollarName '$ATTEMPT_NUMBER'))} {(-lt)} {(DQ ($ VSub_DollarName '$TEST_EXECUTION_ATTEMPTS'))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(Test)} {(failed)} {(attempt)} {(number)} {($ VSub_DollarName '$ATTEMPT_NUMBER')} ) (C {(echo)} {(Will)} {(retry...)}) ] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {($ VSub_DollarName '$RUN_TYPE')} {(Lit_Equals '=')} {(DQ (test))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(post_process_tests)})] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COREFILES) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(ls)}) (C {(grep)} {(Lit_Other '^') (core)})] negated: F ) ] ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(-n)} {(DQ ($ VSub_DollarName '$COREFILES'))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(Found)} {(core)} {(dump.)} {(Saving)} {(executable)} {(and)} {(core)} {(files.)}) (command.AndOr ops: [Op_DPipe] children: [ (command.Simple words: [{(gzip)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {($ VSub_DollarName '$TEST_EXECUTABLE')} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: { (DQ ($ VSub_DollarName '$TEST_DEBUGDIR') (/) ($ VSub_DollarName '$TEST_NAME') (.gz) ) } ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) (command.ForEach iter_name: COREFILE iter_words: [{($ VSub_DollarName '$COREFILES')}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (command.Simple words: [{(gzip)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {($ VSub_DollarName '$COREFILE')} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: { (DQ ($ VSub_DollarName '$TEST_DEBUGDIR') (/) ($ VSub_DollarName '$TEST_NAME') (.) ($ VSub_DollarName '$COREFILE') (.gz) ) } ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] ) ) (command.ForEach iter_name: LIB iter_words: [ { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(ldd)} {($ VSub_DollarName '$TEST_EXECUTABLE')}) (C {(grep)} {($ VSub_DollarName '$ROOT')}) (C {(awk)} {(SQ <'{print $3}'>)}) ] negated: F ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LIB_NAME) op: Equal rhs: { (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$LIB')})] ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Simple words: [{(gzip)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {($ VSub_DollarName '$LIB')} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: { (DQ ($ VSub_DollarName '$TEST_DEBUGDIR') (/) ($ VSub_DollarName '$LIB_NAME') (.gz) ) } ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_QMark '$?')} ) ] ) ] ) ) ] ) ] ) (C {(popd)}) (C {(rm)} {(-Rf)} {($ VSub_DollarName '$TEST_WORKDIR')}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_DollarName '$STATUS')}) ] )