(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"git p4 label tests">)}
          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 <"basic p4 labels">)} 
      {
        (SQ <"\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> 
          <"\t\tmkdir -p main &&\n"> <"\n"> <"\t\techo f1 >main/f1 &&\n"> <"\t\tp4 add main/f1 &&\n"> <"\t\tp4 submit -d \"main/f1\" &&\n"> 
          <"\n"> <"\t\techo f2 >main/f2 &&\n"> <"\t\tp4 add main/f2 &&\n"> <"\t\tp4 submit -d \"main/f2\" &&\n"> <"\n"> 
          <"\t\techo f3 >main/file_with_\\$metachar &&\n"> <"\t\tp4 add main/file_with_\\$metachar &&\n"> <"\t\tp4 submit -d \"file with metachar\" &&\n"> <"\n"> 
          <"\t\tp4 tag -l tag_f1_only main/f1 &&\n"> <"\t\tp4 tag -l tag_with\\$_shell_char main/... &&\n"> <"\n"> <"\t\techo f4 >main/f4 &&\n"> 
          <"\t\tp4 add main/f4 &&\n"> <"\t\tp4 submit -d \"main/f4\" &&\n"> <"\n"> <"\t\tp4 label -i <<-EOF &&\n"> <"\t\tLabel: long_label\n"> 
          <"\t\tDescription:\n"> <"\t\t   A Label first line\n"> <"\t\t   A Label second line\n"> <"\t\tView:\t//depot/...\n"> 
          <"\t\tEOF\n"> <"\n"> <"\t\tp4 tag -l long_label ... &&\n"> <"\n"> <"\t\tp4 labels ... &&\n"> <"\n"> 
          <"\t\tgit p4 clone --dest=\"$git\" --detect-labels //depot@all &&\n"> <"\t\tcd \"$git\" &&\n"> <"\n"> <"\t\tgit tag &&\n"> <"\t\tgit tag >taglist &&\n"> 
          <"\t\ttest_line_count = 3 taglist &&\n"> <"\n"> <"\t\tcd main &&\n"> <"\t\tgit checkout tag_tag_f1_only &&\n"> <"\t\t! test -f f2 &&\n"> 
          <"\t\tgit checkout tag_tag_with\\$_shell_char &&\n"> <"\t\ttest -f f1 && test -f f2 && test -f file_with_\\$metachar &&\n"> <"\n"> 
          <"\t\tgit show tag_long_label | grep -q \"A Label second line\"\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_failure)} {(SQ <"two labels on the same changelist">)} 
      {
        (SQ <"\n"> <"\ttest_when_finished cleanup_git &&\n"> <"\t(\n"> <"\t\tcd \"$cli\" &&\n"> 
          <"\t\tmkdir -p main &&\n"> <"\n"> <"\t\tp4 edit main/f1 main/f2 &&\n"> <"\t\techo \"hello world\" >main/f1 &&\n"> 
          <"\t\techo \"not in the tag\" >main/f2 &&\n"> <"\t\tp4 submit -d \"main/f[12]: testing two labels\" &&\n"> <"\n"> 
          <"\t\tp4 tag -l tag_f1_1 main/... &&\n"> <"\t\tp4 tag -l tag_f1_2 main/... &&\n"> <"\n"> <"\t\tp4 labels ... &&\n"> <"\n"> 
          <"\t\tgit p4 clone --dest=\"$git\" --detect-labels //depot@all &&\n"> <"\t\tcd \"$git\" &&\n"> <"\n"> <"\t\tgit tag | grep tag_f1 &&\n"> 
          <"\t\tgit tag | grep -q tag_f1_1 &&\n"> <"\t\tgit tag | grep -q tag_f1_2 &&\n"> <"\n"> <"\t\tcd main &&\n"> <"\n"> 
          <"\t\tgit checkout tag_tag_f1_1 &&\n"> <"\t\tls &&\n"> <"\t\ttest -f f1 &&\n"> <"\n"> <"\t\tgit checkout tag_tag_f1_2 &&\n"> <"\t\tls &&\n"> 
          <"\t\ttest -f f1\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"kill p4d">)} {(SQ <"\n"> <"\tkill_p4d\n">)})
    (C {(test_done)})
  ]
)