(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./lib-git-p4.sh]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ file1 &&\n"> file2 &&\n"> ]} ) (FunctionDef p4_add_user [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('name', {[VarSub 1]}), ('fullname', {[VarSub 2]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS p4]} {[LIT_CHARS user]} {[LIT_CHARS -f]} {[LIT_CHARS -i]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "User: "][VarSub name][LIT_CHARS "\n"][LIT_CHARS "Email: "][VarSub name][LIT_CHARS "@localhost\n"][LIT_CHARS "FullName: "][VarSub fullname][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS p4]} {[LIT_CHARS passwd]} {[LIT_CHARS -P]} {[LIT_CHARS secret]} {[VarSub name]} ) ) ) ) (FunctionDef p4_grant_admin [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('name', {[VarSub 1]})]) (Pipeline (AndOr OP_AND_IF (Com {[LIT_CHARS p4]} {[LIT_CHARS protect]} {[LIT_CHARS -o]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " admin user "][VarSub name][LIT_CHARS " * //depot/..."]]} ) ) (Com {[LIT_CHARS p4]} {[LIT_CHARS protect]} {[LIT_CHARS -i]} ) ) ) ) (FunctionDef p4_check_commit_author [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('file', {[VarSub 1]}), ('user', {[VarSub 2]})]) (Pipeline (Com {[LIT_CHARS p4]} {[LIT_CHARS changes]} {[LIT_CHARS -m]} {[LIT_CHARS 1]} {[LIT_CHARS //depot/] [VarSub file]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[VarSub user]} ) ) ) ) (FunctionDef make_change_by_user [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('file', {[VarSub 1]}), ('name', {[VarSub 2]}), ('email', {[VarSub 3]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "username: a change by "][VarSub name]]} < (FilenameRedirectNode filename={[DQ [VarSub file]]} >"> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[DQ [VarSub file]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --author]} {[DQ [VarSub name][LIT_CHARS " <"][VarSub email][LIT_CHARS ">"]]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "a change by "][VarSub name]]} ) ) ) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ >file1 &&\n"> >file2 &&\n"> \" -m \"a change by alice\" file1 &&\n"> \" -m \"a change by bob\" file2 &&\n"> ]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ >file1 &&\n"> \" -m \"perms: a change by alice\" file1 &&\n"> ]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ >file1 &&\n"> \" -m \"preserve: a change by bob\" file1 &&\n"> >file1 &&\n"> \" -m \"preserve: a change by charlie\" file1 &&\n"> ]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]} ) (Com {[LIT_CHARS test_done]} ) )