(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 cloning a repository with detached HEAD'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: head_is_detached
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(git)} {(--git-dir) (Id.Lit_Equals '=') ($ Id.VSub_Number '$1') (/.git)} 
                  {(rev-parse)} {(--verify)} {(HEAD)}
                )
                (C {(test_must_fail)} {(git)} 
                  {(--git-dir) (Id.Lit_Equals '=') ($ Id.VSub_Number '$1') (/.git)} {(symbolic-ref)} {(HEAD)}
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:56))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\techo one >file &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m one &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\techo two >file &&\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m two &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\tgit tag two &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\techo three >file &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\tgit commit -a -m three\n' span_id:68)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone repo (detached HEAD points to branch)' span_id:75))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master^0 &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\tgit clone "file://$PWD" detached-branch\n' span_id:81)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloned HEAD matches' span_id:87))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\techo three >expect &&\n' span_id:92) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=detached-branch/.git log -1 --format=%s >actual &&\n'
            span_id: 93
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:94)
        )
      }
    )
    (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'cloned HEAD is detached' span_id:100))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\thead_is_detached detached-branch\n' span_id:105)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone repo (detached HEAD points to tag)' span_id:112))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:116) 
          (Token id:Id.Lit_Chars val:'\tgit checkout two^0 &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\tgit clone "file://$PWD" detached-tag\n' span_id:118)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloned HEAD matches' span_id:124))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\techo two >expect &&\n' span_id:129) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=detached-tag/.git log -1 --format=%s >actual &&\n'
            span_id: 130
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:131)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloned HEAD is detached' span_id:137))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:141) 
          (Token id:Id.Lit_Chars val:'\thead_is_detached detached-tag\n' span_id:142)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone repo (detached HEAD points to history)' span_id:149))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:153) 
          (Token id:Id.Lit_Chars val:'\tgit checkout two^ &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\tgit clone "file://$PWD" detached-history\n' span_id:155)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloned HEAD matches' span_id:161))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:165) 
          (Token id:Id.Lit_Chars val:'\techo one >expect &&\n' span_id:166) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=detached-history/.git log -1 --format=%s >actual &&\n'
            span_id: 167
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:168)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloned HEAD is detached' span_id:174))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:178) 
          (Token id:Id.Lit_Chars val:'\thead_is_detached detached-history\n' span_id:179)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone repo (orphan detached HEAD)' span_id:186))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master^0 &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\techo four >file &&\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m four &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\tgit clone "file://$PWD" detached-orphan\n' span_id:194)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloned HEAD matches' span_id:200))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\techo four >expect &&\n' span_id:205) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=detached-orphan/.git log -1 --format=%s >actual &&\n'
            span_id: 206
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:207)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cloned HEAD is detached' span_id:213))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:217) 
          (Token id:Id.Lit_Chars val:'\thead_is_detached detached-orphan\n' span_id:218)
        )
      }
    )
    (C {(test_done)})
  ]
)