(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_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]}) )