(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'git p4 relative chdir' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./lib-git-p4.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'start p4d' span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\tstart_p4d\n' span_id:23)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'init depot' span_id:30))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:34) (Token id:Id.Lit_Chars val:'\t(\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\t\techo file1 >file1 &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add file1 &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "change 1"\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:40)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'P4CONFIG and absolute dir clone' span_id:53))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:57) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "P4PORT=$P4PORT\\nP4CLIENT=$P4CLIENT\\n" >p4config &&\n'
            span_id: 58
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm p4config" &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t(\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tP4CONFIG=p4config && export P4CONFIG &&\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\t\tsane_unset P4PORT P4CLIENT &&\n' span_id:63) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --verbose --dest="$git" //depot\n'
            span_id: 64
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:65)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'P4CONFIG and relative dir clone' span_id:75))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:79) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "P4PORT=$P4PORT\\nP4CLIENT=$P4CLIENT\\n" >p4config &&\n'
            span_id: 80
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm p4config" &&\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\t(\n' span_id:83) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tP4CONFIG=p4config && export P4CONFIG &&\n'
            span_id: 84
          ) (Token id:Id.Lit_Chars val:'\t\tsane_unset P4PORT P4CLIENT &&\n' span_id:85) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --verbose --dest="git" //depot\n'
            span_id: 86
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:87)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'p4 client root would be relative due to clone --dest'
            span_id: 103
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\t(\n' span_id:109) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo P4PORT=$P4PORT >git/.p4config &&\n'
            span_id: 110
          ) (Token id:Id.Lit_Chars val:'\t\tP4CONFIG=.p4config &&\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\t\texport P4CONFIG &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\t\tunset P4PORT &&\n' span_id:113) 
          (Token id:Id.Lit_Chars val:'\t\tgit p4 clone --dest="git" //depot\n' span_id:114) (Token id:Id.Lit_Chars val:'\t)\n' span_id:115)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'p4 client root symlink should stay symbolic' span_id:130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token
            id: Id.Lit_Chars
            val: '\tphysical="$TRASH_DIRECTORY/physical" &&\n'
            span_id: 135
          ) (Token id:Id.Lit_Chars val:'\tsymbolic="$TRASH_DIRECTORY/symbolic" &&\n' span_id:136) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf \\"$physical\\"" &&\n'
            span_id: 137
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm \\"$symbolic\\"" &&\n' span_id:138) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p "$physical" &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\tln -s "$physical" "$symbolic" &&\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\t(\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\t\tP4CLIENT=client-sym &&\n' span_id:143) (Token id:Id.Lit_Chars val:'\t\tp4 client -i <<-EOF &&\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\t\tClient: $P4CLIENT\n' span_id:145) (Token id:Id.Lit_Chars val:'\t\tDescription: $P4CLIENT\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t\tRoot: $symbolic\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\tLineEnd: unix\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\t\tView: //depot/... //$P4CLIENT/...\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:150) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --dest="$git" //depot &&\n'
            span_id: 151
          ) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit file2 &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\tgit config git-p4.skipSubmitEdit true &&\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\t\tgit p4 submit\n' span_id:155) (Token id:Id.Lit_Chars val:'\t)\n' span_id:156)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'kill p4d' span_id:163))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:167) 
          (Token id:Id.Lit_Chars val:'\tkill_p4d\n' span_id:168)
        )
      }
    )
    (C {(test_done)})
  ]
)