(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEST_NO_CREATE_REPO) op: Equal rhs: {(NoThanks)} spids: [16] ) ] spids: [16] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RETRY_TIMEOUT) op:Equal rhs:{(60)} spids:[26])] spids: [26] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:P4D_TIMEOUT) op:Equal rhs:{(300)} spids:[36])] spids: [36] ) (C {(.)} {(./test-lib.sh)}) (If arms: [ (if_arm cond: [(Pipeline children:[(C {(test_have_prereq)} {(PYTHON)})] negated:True)] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all) op: Equal rhs: {(SQ <'skipping git p4 tests; python not available'>)} spids: [56] ) ] spids: [56] ) (C {(test_done)}) ] spids: [16777215 53] ) ] spids: [16777215 64] ) (AndOr children: [ (Subshell child: (AndOr children:[(C {(p4)} {(-h)})(C {(p4d)} {(-h)})] op_id:Op_DAmp) redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[80]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[83]) ] spids: [66 78] ) (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all) op: Equal rhs: {(SQ <'skipping git p4 tests; no p4 or p4d'>)} spids: [91] ) ] spids: [91] ) (C {(test_done)}) ] spids: [88] ) ] op_id: Op_DPipe ) (FuncDef name: native_path body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:path) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [131] ) ] spids: [131] ) (AndOr children: [ (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test_have_prereq)} {(CYGWIN)}) (Pipeline children: [(C {(p4)} {(-V)}) (C {(grep)} {(-q)} {(CYGWIN)})] negated: True ) ] op_id: Op_DAmp ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:path) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(cygpath)} {(--windows)} {(DQ ($ VSub_Name '$path'))}) ] ) left_token: <Left_CommandSub '$('> spids: [166 174] ) } spids: [165] ) ] spids: [165] ) ] spids: [16777215 162] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:path) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(test-path-utils)} {(real_path)} {(DQ ($ VSub_Name '$path'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [181 189] ) } spids: [180] ) ] spids: [180] ) ] spids: [177 192] ) (C {(echo)} {(DQ ($ VSub_Name '$path'))}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [128] ) spids: [123 127] ) (FuncDef name: time_in_seconds body: (BraceGroup children: [ (Subshell child: (AndOr children: [ (C {(cd)} {(/)}) (C {(DQ ($ VSub_Name '$PYTHON_PATH'))} {(-c)} {(SQ <'import time; print(int(time.time()))'>)} ) ] op_id: Op_DAmp ) spids: [229 245] ) ] spids: [226] ) spids: [221 225] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:testid) op: Equal rhs: { (BracedVarSub token: <VSub_Name this_test> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(t)}) spids: [266 270] ) } spids: [265] ) ] spids: [265] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:git_p4_test_start) op:Equal rhs:{(9800)} spids:[272])] spids: [272] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:P4DPORT) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(Lit_Digits 10669)}) right: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$testid')}) right: (ArithWord w:{($ VSub_Name '$git_p4_test_start')}) ) ) spids: [276 289] ) } spids: [275] ) ] spids: [275] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:P4PORT) op: Equal rhs: {(localhost) (Lit_Other ':') ($ VSub_Name '$P4DPORT')} spids: [292] ) ] spids: [292] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:P4CLIENT) op:Equal rhs:{(client)} spids:[297])] spids: [297] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:P4USER) op:Equal rhs:{(author)} spids:[300])] spids: [300] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:P4EDITOR) op:Equal rhs:{(true)} spids:[303])] spids: [303] ) (C {(unset)} {(P4CHARSET)}) (C {(export)} {(P4PORT)} {(P4CLIENT)} {(P4USER)} {(P4EDITOR)} {(P4CHARSET)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:db) op: Equal rhs: {(DQ ($ VSub_Name '$TRASH_DIRECTORY') (/db))} spids: [323] ) ] spids: [323] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cli) op: Equal rhs: {(DQ ($ VSub_Name '$TRASH_DIRECTORY') (/cli))} spids: [329] ) ] spids: [329] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:git) op: Equal rhs: {(DQ ($ VSub_Name '$TRASH_DIRECTORY') (/git))} spids: [335] ) ] spids: [335] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pidfile) op: Equal rhs: {(DQ ($ VSub_Name '$TRASH_DIRECTORY') (/p4d.pid))} spids: [341] ) ] spids: [341] ) (FuncDef name: cleanup body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-f)} {(DQ ($ VSub_Name '$pidfile'))})] action: [ (AndOr children: [ (SimpleCommand words: [ {(kill)} {(-9)} { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(DQ ($ VSub_Name '$pidfile'))})] ) left_token: <Left_CommandSub '$('> spids: [377 383] ) } ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [385] ) ] ) (C {(exit)} {(255)}) ] op_id: Op_DAmp ) ] spids: [16777215 370] ) ] spids: [16777215 395] ) ] spids: [356] ) spids: [351 355] ) (C {(trap)} {(cleanup)} {(EXIT)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TMPDIR) op: Equal rhs: {(DQ ($ VSub_Name '$TRASH_DIRECTORY'))} spids: [415] ) ] spids: [415] ) (C {(export)} {(TMPDIR)}) (FuncDef name: start_p4d body: (BraceGroup children: [ (AndOr children: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$db'))} {(DQ ($ VSub_Name '$cli'))} {(DQ ($ VSub_Name '$git'))} ) (AndOr children: [ (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$pidfile'))}) (AndOr children: [ (Subshell child: (AndOr children: [ (C {(cd)} {(DQ ($ VSub_Name '$db'))}) (BraceGroup children: [ (Sentence child: (C {(p4d)} {(-q)} {(-p)} {($ VSub_Name '$P4DPORT')} {(DQ ($ VSub_At '$@'))} ) terminator: <Op_Amp '&'> ) (SimpleCommand words: [{(echo)} {($ VSub_Bang '$!')}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ ($ VSub_Name '$pidfile'))} spids: [497] ) ] ) ] spids: [475] ) ] op_id: Op_DAmp ) spids: [463 506] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:i) op: Equal rhs: { (BracedVarSub token: <VSub_Name P4D_START_PATIENCE> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(300)}) spids: [533 537] ) } spids: [532] ) ] spids: [532] ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pid) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(DQ ($ VSub_Name '$pidfile'))})] ) left_token: <Left_CommandSub '$('> spids: [541 547] ) } spids: [540] ) ] spids: [540] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:timeout) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w: { (CommandSubPart command_list: (CommandList children:[(C {(time_in_seconds)})]) left_token: <Left_CommandSub '$('> spids: [553 555] ) } ) right: (ArithWord w:{($ VSub_Name '$P4D_TIMEOUT')}) ) spids: [552 561] ) } spids: [551] ) ] spids: [551] ) (Sentence child: (While cond: [(C {(true)})] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (C {(test)} { (CommandSubPart command_list: (CommandList children:[(C {(time_in_seconds)})]) left_token: <Left_CommandSub '$('> spids: [576 578] ) } {(-gt)} {($ VSub_Name '$timeout')} ) ] action: [(C {(kill)} {(-9)} {($ VSub_Name '$pid')}) (C {(exit)} {(1)})] spids: [16777215 585] ) ] spids: [16777215 600] ) (C {(sleep)} {(1)}) ] spids: [569 608] ) ) terminator: <Op_Amp '&'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:watchdog_pid) op: Equal rhs: {($ VSub_Bang '$!')} spids: [613] ) ] spids: [613] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ready) op:Equal rhs:{(SQ )} spids:[618])] spids: [618] ) (While cond: [(C {(test)} {($ VSub_Name '$i')} {(-gt)} {(0)})] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (SimpleCommand words: [{(p4)} {(info)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [645] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [648] ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ready) op: Equal rhs: {(true)} spids: [655] ) ] spids: [655] ) (ControlFlow token:<ControlFlow_Break break>) ] spids: [16777215 652] ) ] spids: [16777215 662] ) (AndOr children: [ (SimpleCommand words: [{(kill)} {(-0)} {($ VSub_Name '$pid')}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [675] ) ] ) (ControlFlow token:<ControlFlow_Break break>) ] op_id: Op_DPipe ) (C {(echo)} {(waiting)} {(KW_For for)} {(p4d)} {(to)} {(start)}) (C {(sleep)} {(1)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:i) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$i')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [702 711] ) } spids: [701] ) ] spids: [701] ) ] spids: [632 714] ) ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$ready'))})] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [16777215 729] ) ] spids: [16777215 741] ) (C {(p4_add_user)} {(author)}) (AndOr children: [ (C {(client_view)} {(DQ ('//depot/... //client/...'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] op_id: Op_DAmp ) ] spids: [430] ) spids: [425 429] ) (FuncDef name: p4_add_user body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {($ VSub_Number '$1')} spids: [784] ) ] spids: [784] ) (SimpleCommand words: [{(p4)} {(user)} {(-f)} {(-i)}] redirects: [ (HereDoc op_id: Redir_DLessDash fd: 16777215 body: { (DQ ('User: ') ($ VSub_Name '$name') ('\n') ('Email: ') ($ VSub_Name '$name') ('@example.com\n') ('FullName: Dr. ') ($ VSub_Name '$name') ('\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [798] ) ] ) ] op_id: Op_DAmp ) ] spids: [781] ) spids: [776 780] ) (FuncDef name: p4_add_job body: (BraceGroup children: [ (SimpleCommand words: [{(p4)} {(job)} {(-f)} {(-i)}] redirects: [ (HereDoc op_id: Redir_DLessDash fd: 16777215 body: { (DQ ('Job: ') ($ VSub_Number '$1') ('\n') ('Status: open\n') ('User: dummy\n') ('Description:\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [830] ) ] ) ] spids: [819] ) spids: [814 818] ) (FuncDef name: retry_until_success body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:timeout) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w: { (CommandSubPart command_list: (CommandList children:[(C {(time_in_seconds)})]) left_token: <Left_CommandSub '$('> spids: [853 855] ) } ) right: (ArithWord w:{($ VSub_Name '$RETRY_TIMEOUT')}) ) spids: [852 861] ) } spids: [851] ) ] spids: [851] ) (Until cond: [ (AndOr children: [ (SimpleCommand words: [{(DQ ($ VSub_At '$@'))}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[870])] ) (C {(test)} { (CommandSubPart command_list: (CommandList children:[(C {(time_in_seconds)})]) left_token: <Left_CommandSub '$('> spids: [877 879] ) } {(-gt)} {($ VSub_Name '$timeout')} ) ] op_id: Op_DPipe ) ] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[886894]) ) ] spids: [848] ) spids: [843 847] ) (FuncDef name: retry_until_fail body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:timeout) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w: { (CommandSubPart command_list: (CommandList children:[(C {(time_in_seconds)})]) left_token: <Left_CommandSub '$('> spids: [909 911] ) } ) right: (ArithWord w:{($ VSub_Name '$RETRY_TIMEOUT')}) ) spids: [908 917] ) } spids: [907] ) ] spids: [907] ) (Until cond: [ (AndOr children: [ (Pipeline children: [ (SimpleCommand words: [{(DQ ($ VSub_At '$@'))}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [928] ) ] ) ] negated: True ) (C {(test)} { (CommandSubPart command_list: (CommandList children:[(C {(time_in_seconds)})]) left_token: <Left_CommandSub '$('> spids: [935 937] ) } {(-gt)} {($ VSub_Name '$timeout')} ) ] op_id: Op_DPipe ) ] body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[944952]) ) ] spids: [904] ) spids: [899 903] ) (FuncDef name: kill_p4d body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pid) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(DQ ($ VSub_Name '$pidfile'))})] ) left_token: <Left_CommandSub '$('> spids: [966 972] ) } spids: [965] ) ] spids: [965] ) (C {(retry_until_fail)} {(kill)} {($ VSub_Name '$pid')}) (C {(retry_until_fail)} {(kill)} {(-9)} {($ VSub_Name '$pid')}) (AndOr children: [ (SimpleCommand words: [{(test_must_fail)} {(kill)} {($ VSub_Name '$pid')}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [1001] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1004]) ] ) (AndOr children: [ (C {(rm)} {(-rf)} {(DQ ($ VSub_Name '$db'))} {(DQ ($ VSub_Name '$cli'))} {(DQ ($ VSub_Name '$pidfile'))} ) (C {(retry_until_fail)} {(kill)} {(-9)} {($ VSub_Name '$watchdog_pid')}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [962] ) spids: [957 961] ) (FuncDef name: cleanup_git body: (BraceGroup children: [ (C {(retry_until_success)} {(rm)} {(-r)} {(DQ ($ VSub_Name '$git'))}) (AndOr children: [ (C {(test_must_fail)} {(test)} {(-d)} {(DQ ($ VSub_Name '$git'))}) (C {(retry_until_success)} {(mkdir)} {(DQ ($ VSub_Name '$git'))}) ] op_id: Op_DAmp ) ] spids: [1045] ) spids: [1040 1044] ) (FuncDef name: marshal_dump body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:what) op: Equal rhs: {($ VSub_Number '$1')} spids: [1091] ) ] spids: [1091] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:line) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)}) spids: [1098 1102] ) } spids: [1097] ) ] spids: [1097] ) (AndOr children: [ (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ ($ VSub_Name '$TRASH_DIRECTORY') (/marshal-dump.py))} spids: [1109] ) (HereDoc op_id: Redir_DLessDash fd: 16777215 body: { (DQ ('import marshal\n') ('import sys\n') ("instream = getattr(sys.stdin, 'buffer', sys.stdin)\n") ('for i in range(') ($ VSub_Name '$line') ('):\n') (' d = marshal.load(instream)\n') ("print(d[b'") ($ VSub_Name '$what') ("'].decode('utf-8'))\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [1115] ) ] ) (C {(DQ ($ VSub_Name '$PYTHON_PATH'))} {(DQ ($ VSub_Name '$TRASH_DIRECTORY') (/marshal-dump.py))} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [1088] ) spids: [1083 1087] ) (FuncDef name: client_view body: (BraceGroup children: [ (Pipeline children: [ (Subshell child: (AndOr children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLessDash fd: 16777215 body: { (DQ ('Client: ') ($ VSub_Name '$P4CLIENT') ('\n') ('Description: ') ($ VSub_Name '$P4CLIENT') ('\n') ('Root: ') ($ VSub_Name '$cli') ('\n') ('AltRoots: ') (CommandSubPart command_list: (CommandList children: [(C {(native_path)} {(DQ ($ VSub_Name '$cli'))})] ) left_token: <Left_CommandSub '$('> spids: [1181 1187] ) ('\n') ('LineEnd: unix\n') ('View:\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [1166] ) ] ) (C {(printf)} {(DQ (Lit_Other '\\') ('t%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_At '$@'))} ) ] op_id: Op_DAmp ) spids: [1161 1207] ) (C {(p4)} {(client)} {(-i)}) ] negated: False ) ] spids: [1158] ) spids: [1153 1157] ) (FuncDef name: is_cli_file_writeable body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1236] ) ] spids: [1236] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test_have_prereq)} {(CYGWIN)}) (Pipeline children: [(C {(p4)} {(-V)}) (C {(grep)} {(-q)} {(CYGWIN)})] negated: False ) ] op_id: Op_DAmp ) ] action: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:stat) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(stat)} {(--format) (Lit_Other '=') (Lit_Other '%') (a)} {(DQ ($ VSub_Name '$file'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1269 1280] ) } spids: [1268] ) ] spids: [1268] ) (C {(test)} {($ VSub_Name '$stat')} {(Lit_Other '=')} {(644)}) ] op_id: Op_DAmp ) ] spids: [16777215 1265] ) ] else_action: [(C {(test)} {(-w)} {(DQ ($ VSub_Name '$file'))})] spids: [1294 1306] ) ] op_id: Op_DAmp ) ] spids: [1225] ) spids: [1220 1224] ) ] )