(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 label tests' 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:'basic p4 labels' span_id:45))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\t(\n' span_id:51) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\t\tmkdir -p main &&\n' span_id:53) 
          (Token id:Id.Lit_Chars val:'\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\techo f1 >main/f1 &&\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add main/f1 &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "main/f1" &&\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\n' span_id:58) (Token id:Id.Lit_Chars val:'\t\techo f2 >main/f2 &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add main/f2 &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "main/f2" &&\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\techo f3 >main/file_with_\\$metachar &&\n' span_id:63) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tp4 add main/file_with_\\$metachar &&\n'
            span_id: 64
          ) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "file with metachar" &&\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\n' span_id:66) (Token id:Id.Lit_Chars val:'\t\tp4 tag -l tag_f1_only main/f1 &&\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tp4 tag -l tag_with\\$_shell_char main/... &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\t\techo f4 >main/f4 &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\t\tp4 add main/f4 &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "main/f4" &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\t\tp4 label -i <<-EOF &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\t\tLabel: long_label\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\t\tDescription:\n' span_id:76) (Token id:Id.Lit_Chars val:'\t\t   A Label first line\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\t\t   A Label second line\n' span_id:78) (Token id:Id.Lit_Chars val:'\t\tView:\t//depot/...\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:80) (Token id:Id.Lit_Chars val:'\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\t\tp4 tag -l long_label ... &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'\t\tp4 labels ... &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\n' span_id:85) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --dest="$git" --detect-labels //depot@all &&\n'
            span_id: 86
          ) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\tgit tag &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\t\tgit tag >taglist &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 3 taglist &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id:Id.Lit_Chars val:'\t\tcd main &&\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\t\tgit checkout tag_tag_f1_only &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\t\t! test -f f2 &&\n' span_id:95) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit checkout tag_tag_with\\$_shell_char &&\n'
            span_id: 96
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest -f f1 && test -f f2 && test -f file_with_\\$metachar &&\n'
            span_id: 97
          ) (Token id:Id.Lit_Chars val:'\n' span_id:98) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit show tag_long_label | grep -q "A Label second line"\n'
            span_id: 99
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:100)
        )
      }
    )
    (C {(test_expect_failure)} 
      {(SQ (Token id:Id.Lit_Chars val:'two labels on the same changelist' span_id:123))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\t(\n' span_id:129) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\t\tmkdir -p main &&\n' span_id:131) 
          (Token id:Id.Lit_Chars val:'\n' span_id:132) (Token id:Id.Lit_Chars val:'\t\tp4 edit main/f1 main/f2 &&\n' span_id:133) 
          (Token id:Id.Lit_Chars val:'\t\techo "hello world" >main/f1 &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\techo "not in the tag" >main/f2 &&\n' span_id:135) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tp4 submit -d "main/f[12]: testing two labels" &&\n'
            span_id: 136
          ) (Token id:Id.Lit_Chars val:'\n' span_id:137) 
          (Token id:Id.Lit_Chars val:'\t\tp4 tag -l tag_f1_1 main/... &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\tp4 tag -l tag_f1_2 main/... &&\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\n' span_id:140) (Token id:Id.Lit_Chars val:'\t\tp4 labels ... &&\n' span_id:141) 
          (Token id:Id.Lit_Chars val:'\n' span_id:142) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --dest="$git" --detect-labels //depot@all &&\n'
            span_id: 143
          ) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\n' span_id:145) (Token id:Id.Lit_Chars val:'\t\tgit tag | grep tag_f1 &&\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t\tgit tag | grep -q tag_f1_1 &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\tgit tag | grep -q tag_f1_2 &&\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\tcd main &&\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id:Id.Lit_Chars val:'\t\tgit checkout tag_tag_f1_1 &&\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\t\tls &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\ttest -f f1 &&\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\n' span_id:155) (Token id:Id.Lit_Chars val:'\t\tgit checkout tag_tag_f1_2 &&\n' span_id:156) 
          (Token id:Id.Lit_Chars val:'\t\tls &&\n' span_id:157) (Token id:Id.Lit_Chars val:'\t\ttest -f f1\n' span_id:158) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:159)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'kill p4d' span_id:166))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\tkill_p4d\n' span_id:171)
        )
      }
    )
    (C {(test_done)})
  ]
)