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