(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:'test refspec written by clone-command' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Make two branches, "master" and "side"\n'
            span_id: 22
          ) (Token id:Id.Lit_Chars val:'\techo one >file &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m one &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\techo two >file &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit commit -a -m two &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tgit tag two &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\techo three >file &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m three &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit checkout -b side &&\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'\techo four >file &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit commit -a -m four &&\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\t# default clone\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit clone . dir_all &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\n' span_id:38) (Token id:Id.Lit_Chars val:'\t# default --single that follows HEAD=master\n' span_id:39) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --single-branch . dir_master &&\n'
            span_id: 40
          ) (Token id:Id.Lit_Chars val:'\n' span_id:41) 
          (Token
            id: Id.Lit_Chars
            val: '\t# default --single that follows HEAD=side\n'
            span_id: 42
          ) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:43) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --single-branch . dir_side &&\n'
            span_id: 44
          ) (Token id:Id.Lit_Chars val:'\n' span_id:45) 
          (Token
            id: Id.Lit_Chars
            val: '\t# explicit --single that follows side\n'
            span_id: 46
          ) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:47) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --single-branch --branch side . dir_side2 &&\n'
            span_id: 48
          ) (Token id:Id.Lit_Chars val:'\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\t# default --single with --mirror\n' span_id:50) (Token id:Id.Lit_Chars val:'\tgit clone --single-branch --mirror . dir_mirror &&\n' span_id:51) 
          (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\t# default --single with --branch and --mirror\n' span_id:53) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --single-branch --mirror --branch side . dir_mirror_side &&\n'
            span_id: 54
          ) (Token id:Id.Lit_Chars val:'\n' span_id:55) 
          (Token
            id: Id.Lit_Chars
            val: '\t# --single that does not know what branch to follow\n'
            span_id: 56
          ) (Token id:Id.Lit_Chars val:'\tgit checkout two^ &&\n' span_id:57) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --single-branch . dir_detached &&\n'
            span_id: 58
          ) (Token id:Id.Lit_Chars val:'\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t# explicit --single with tag\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit clone --single-branch --branch two . dir_tag &&\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\n' span_id:62) (Token id:Id.Lit_Chars val:'\t# advance both "master" and "side" branches\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\techo five >file &&\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m five &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\techo six >file &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tgit commit -a -m six &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\n' span_id:70) (Token id:Id.Lit_Chars val:'\t# update tag\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\tgit tag -d two && git tag two\n' span_id:72)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'by default all branches will be kept updated' span_id:79))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:83) (Token id:Id.Lit_Chars val:'\t(\n' span_id:84) 
          (Token id:Id.Lit_Chars val:'\t\tcd dir_all && git fetch &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs/remotes/origin |\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\t    -e "s|/remotes/origin/|/heads/|" >../actual\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\t# follow both master and side\n' span_id:90) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit for-each-ref refs/heads >expect &&\n'
            span_id: 91
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:92)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'by default no tags will be kept updated' span_id:99))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:104) (Token id:Id.Lit_Chars val:'\t\tcd dir_all && git fetch &&\n' span_id:105) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit for-each-ref refs/tags >../actual\n'
            span_id: 106
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:107) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit for-each-ref refs/tags >expect &&\n'
            span_id: 108
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail test_cmp expect actual\n' span_id:109)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--single-branch while HEAD pointing at master' span_id:116))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:121) (Token id:Id.Lit_Chars val:'\t\tcd dir_master && git fetch &&\n' span_id:122) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit for-each-ref refs/remotes/origin |\n'
            span_id: 123
          ) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:124) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t    -e "s|/remotes/origin/|/heads/|" >../actual\n'
            span_id: 125
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\t# only follow master\n' span_id:127) (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs/heads/master >expect &&\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:129)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--single-branch while HEAD pointing at side' span_id:136))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:141) (Token id:Id.Lit_Chars val:'\t\tcd dir_side && git fetch &&\n' span_id:142) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit for-each-ref refs/remotes/origin |\n'
            span_id: 143
          ) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:144) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t    -e "s|/remotes/origin/|/heads/|" >../actual\n'
            span_id: 145
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t# only follow side\n' span_id:147) (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs/heads/side >expect &&\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:149)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--single-branch with explicit --branch side' span_id:156))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:160) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:161) (Token id:Id.Lit_Chars val:'\t\tcd dir_side2 && git fetch &&\n' span_id:162) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit for-each-ref refs/remotes/origin |\n'
            span_id: 163
          ) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:164) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t    -e "s|/remotes/origin/|/heads/|" >../actual\n'
            span_id: 165
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:166) 
          (Token id:Id.Lit_Chars val:'\t# only follow side\n' span_id:167) (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs/heads/side >expect &&\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:169)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--single-branch with explicit --branch with tag fetches updated tag'
            span_id: 176
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:181) (Token id:Id.Lit_Chars val:'\t\tcd dir_tag && git fetch &&\n' span_id:182) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit for-each-ref refs/tags >../actual\n'
            span_id: 183
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:184) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit for-each-ref refs/tags >expect &&\n'
            span_id: 185
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:186)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--single-branch with --mirror' span_id:193))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:197) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:198) (Token id:Id.Lit_Chars val:'\t\tcd dir_mirror && git fetch &&\n' span_id:199) 
          (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs > ../actual\n' span_id:200) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:201) 
          (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs >expect &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:203)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--single-branch with explicit --branch and --mirror'
            span_id: 210
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:214) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:215) (Token id:Id.Lit_Chars val:'\t\tcd dir_mirror_side && git fetch &&\n' span_id:216) 
          (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs > ../actual\n' span_id:217) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:218) 
          (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs >expect &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:220)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--single-branch with detached' span_id:227))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:231) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:232) (Token id:Id.Lit_Chars val:'\t\tcd dir_detached && git fetch &&\n' span_id:233) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit for-each-ref refs/remotes/origin |\n'
            span_id: 234
          ) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:235) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t    -e "s|/remotes/origin/|/heads/|" >../actual\n'
            span_id: 236
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:237) 
          (Token id:Id.Lit_Chars val:'\t# nothing\n' span_id:238) (Token id:Id.Lit_Chars val:'\t>expect &&\n' span_id:239) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:240)
        )
      }
    )
    (C {(test_done)})
  ]
)