(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'git p4 locked file behavior'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./lib-git-p4.sh)}) (C {(test_expect_success)} {(SQ <'start p4d'>)} {(SQ <'\n'> <'\tstart_p4d\n'>)}) (C {(test_expect_success)} {(SQ <'init depot'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd "$cli" &&\n'> <'\t\techo "TypeMap: +l //depot/..." | p4 typemap -i &&\n'> <'\t\techo file1 >file1 &&\n'> <'\t\tp4 add file1 &&\n'> <'\t\tp4 submit -d "add file1"\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'edit with lock not taken'>)} { (SQ <'\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\tgit p4 clone --dest="$git" //depot &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\techo line2 >>file1 &&\n'> <'\t\tgit add file1 &&\n'> <'\t\tgit commit -m "line2 in file1" &&\n'> <'\t\tgit config git-p4.skipSubmitEdit true &&\n'> <'\t\tgit p4 submit\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'add with lock not taken'>)} { (SQ <'\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\tgit p4 clone --dest="$git" //depot &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\techo line1 >>add-lock-not-taken &&\n'> <'\t\tgit add add-lock-not-taken &&\n'> <'\t\tgit commit -m "add add-lock-not-taken" &&\n'> <'\t\tgit config git-p4.skipSubmitEdit true &&\n'> <'\t\tgit p4 submit --verbose\n'> <'\t)\n'> ) } ) (FuncDef name: lock_in_another_client body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cli2) op: Equal rhs: {(DQ ($ VSub_Name '$TRASH_DIRECTORY') (/cli2))} spids: [110] ) ] spids: [110] ) (AndOr children: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$cli2'))}) (AndOr children: [ (C {(test_when_finished)} { (DQ ('p4 client -f -d client2 && rm -rf ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_Name '$cli2') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } ) (Subshell child: (AndOr children: [ (C {(cd)} {(DQ ($ VSub_Name '$cli2'))}) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:P4CLIENT) op: Equal rhs: {(client2)} spids: [154] ) ] spids: [154] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cli) op: Equal rhs: {(DQ ($ VSub_Name '$cli2'))} spids: [160] ) ] spids: [160] ) (AndOr children: [ (C {(client_view)} {(DQ ('//depot/... //client2/...'))}) (AndOr children: [ (C {(p4)} {(sync)}) (C {(p4)} {(open)} {(file1)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) spids: [142 191] ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [103] ) spids: [99 102] ) (C {(test_expect_failure)} {(SQ <'edit with lock taken'>)} { (SQ <'\n'> <'\tlock_in_another_client &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\ttest_when_finished "cd \\"$cli\\" && p4 sync -f file1" &&\n'> <'\tgit p4 clone --dest="$git" //depot &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\techo line3 >>file1 &&\n'> <'\t\tgit add file1 &&\n'> <'\t\tgit commit -m "line3 in file1" &&\n'> <'\t\tgit config git-p4.skipSubmitEdit true &&\n'> <'\t\tgit p4 submit --verbose\n'> <'\t)\n'> ) } ) (C {(test_expect_failure)} {(SQ <'delete with lock taken'>)} { (SQ <'\n'> <'\tlock_in_another_client &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\ttest_when_finished "cd \\"$cli\\" && p4 sync -f file1" &&\n'> <'\tgit p4 clone --dest="$git" //depot &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit rm file1 &&\n'> <'\t\tgit commit -m "delete file1" &&\n'> <'\t\tgit config git-p4.skipSubmitEdit true &&\n'> <'\t\tgit p4 submit --verbose\n'> <'\t)\n'> ) } ) (C {(test_expect_failure)} {(SQ <'chmod with lock taken'>)} { (SQ <'\n'> <'\tlock_in_another_client &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\ttest_when_finished "cd \\"$cli\\" && p4 sync -f file1" &&\n'> <'\tgit p4 clone --dest="$git" //depot &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tchmod +x file1 &&\n'> <'\t\tgit add file1 &&\n'> <'\t\tgit commit -m "chmod +x file1" &&\n'> <'\t\tgit config git-p4.skipSubmitEdit true &&\n'> <'\t\tgit p4 submit --verbose\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'copy with lock taken'>)} { (SQ <'\n'> <'\tlock_in_another_client &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\ttest_when_finished "cd \\"$cli\\" && p4 revert file2 && rm -f file2" &&\n'> <'\tgit p4 clone --dest="$git" //depot &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tcp file1 file2 &&\n'> <'\t\tgit add file2 &&\n'> <'\t\tgit commit -m "cp file1 to file2" &&\n'> <'\t\tgit config git-p4.skipSubmitEdit true &&\n'> <'\t\tgit config git-p4.detectCopies true &&\n'> <'\t\tgit p4 submit --verbose\n'> <'\t)\n'> ) } ) (C {(test_expect_failure)} {(SQ <'move with lock taken'>)} { (SQ <'\n'> <'\tlock_in_another_client &&\n'> <'\ttest_when_finished cleanup_git &&\n'> <'\ttest_when_finished "cd \\"$cli\\" && p4 sync file1 && rm -f file2" &&\n'> <'\tgit p4 clone --dest="$git" //depot &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit mv file1 file3 &&\n'> <'\t\tgit commit -m "mv file1 to file3" &&\n'> <'\t\tgit config git-p4.skipSubmitEdit true &&\n'> <'\t\tgit config git-p4.detectRenames true &&\n'> <'\t\tgit p4 submit --verbose\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'kill p4d'>)} {(SQ <'\n'> <'\tkill_p4d\n'>)}) (C {(test_done)}) ] )