(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <show-ref>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (C {<test_expect_success>} {<setup>} 
      {
        (SQ <'\n'> <'\ttest_commit A &&\n'> <'\tgit tag -f -a -m "annotated A" A &&\n'> 
          <'\tgit checkout -b side &&\n'> <'\ttest_commit B &&\n'> <'\tgit tag -f -a -m "annotated B" B &&\n'> <'\tgit checkout master &&\n'> 
          <'\ttest_commit C &&\n'> <'\tgit branch B A^0\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <show-ref>)} 
      {
        (SQ <'\n'> <'\techo $(git rev-parse refs/tags/A) refs/tags/A >expect &&\n'> <'\n'> 
          <'\tgit show-ref A >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\tgit show-ref tags/A >actual &&\n'> 
          <'\ttest_cmp expect actual &&\n'> <'\n'> <'\tgit show-ref refs/tags/A >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> 
          <'\t>expect &&\n'> <'\n'> <'\ttest_must_fail git show-ref D >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'show-ref -q'>)} 
      {
        (SQ <'\n'> <'\t>expect &&\n'> <'\n'> <'\tgit show-ref -q A >actual &&\n'> 
          <'\ttest_cmp expect actual &&\n'> <'\n'> <'\tgit show-ref -q tags/A >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> 
          <'\tgit show-ref -q refs/tags/A >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\ttest_must_fail git show-ref -q D >actual &&\n'> 
          <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'show-ref --verify'>)} 
      {
        (SQ <'\n'> <'\techo $(git rev-parse refs/tags/A) refs/tags/A >expect &&\n'> <'\n'> 
          <'\tgit show-ref --verify refs/tags/A >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\t>expect &&\n'> <'\n'> 
          <'\ttest_must_fail git show-ref --verify A >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\ttest_must_fail git show-ref --verify tags/A >actual &&\n'> 
          <'\ttest_cmp expect actual &&\n'> <'\n'> <'\ttest_must_fail git show-ref --verify D >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'show-ref --verify -q'>)} 
      {
        (SQ <'\n'> <'\t>expect &&\n'> <'\n'> <'\tgit show-ref --verify -q refs/tags/A >actual &&\n'> 
          <'\ttest_cmp expect actual &&\n'> <'\n'> <'\ttest_must_fail git show-ref --verify -q A >actual &&\n'> <'\ttest_cmp expect actual &&\n'> 
          <'\n'> <'\ttest_must_fail git show-ref --verify -q tags/A >actual &&\n'> <'\ttest_cmp expect actual &&\n'> 
          <'\n'> <'\ttest_must_fail git show-ref --verify -q D >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'show-ref -d'>)} 
      {
        (SQ <'\n'> <'\t{\n'> <'\t\techo $(git rev-parse refs/tags/A) refs/tags/A &&\n'> 
          <'\t\techo $(git rev-parse refs/tags/A^0) "refs/tags/A^{}"\n'> <'\t\techo $(git rev-parse refs/tags/C) refs/tags/C\n'> <'\t} >expect &&\n'> 
          <'\tgit show-ref -d A C >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\tgit show-ref -d tags/A tags/C >actual &&\n'> 
          <'\ttest_cmp expect actual &&\n'> <'\n'> <'\tgit show-ref -d refs/tags/A refs/tags/C >actual &&\n'> <'\ttest_cmp expect actual &&\n'> 
          <'\n'> <'\techo $(git rev-parse refs/heads/master) refs/heads/master >expect &&\n'> 
          <'\tgit show-ref -d master >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\tgit show-ref -d heads/master >actual &&\n'> 
          <'\ttest_cmp expect actual &&\n'> <'\n'> <'\tgit show-ref -d refs/heads/master >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> 
          <'\tgit show-ref -d --verify refs/heads/master >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\t>expect &&\n'> <'\n'> 
          <'\ttest_must_fail git show-ref -d --verify master >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> 
          <'\ttest_must_fail git show-ref -d --verify heads/master >actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'show-ref --heads, --tags, --head, pattern'>)} 
      {
        (SQ <'\n'> <'\tfor branch in B master side\n'> <'\tdo\n'> 
          <'\t\techo $(git rev-parse refs/heads/$branch) refs/heads/$branch\n'> <'\tdone >expect.heads &&\n'> <'\tgit show-ref --heads >actual &&\n'> 
          <'\ttest_cmp expect.heads actual &&\n'> <'\n'> <'\tfor tag in A B C\n'> <'\tdo\n'> <'\t\techo $(git rev-parse refs/tags/$tag) refs/tags/$tag\n'> 
          <'\tdone >expect.tags &&\n'> <'\tgit show-ref --tags >actual &&\n'> <'\ttest_cmp expect.tags actual &&\n'> <'\n'> 
          <'\tcat expect.heads expect.tags >expect &&\n'> <'\tgit show-ref --heads --tags >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\t{\n'> 
          <'\t\techo $(git rev-parse HEAD) HEAD &&\n'> <'\t\tcat expect.heads expect.tags\n'> <'\t} >expect &&\n'> 
          <'\tgit show-ref --heads --tags --head >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\t{\n'> <'\t\techo $(git rev-parse HEAD) HEAD &&\n'> 
          <'\t\techo $(git rev-parse refs/heads/B) refs/heads/B\n'> <'\t\techo $(git rev-parse refs/tags/B) refs/tags/B\n'> <'\t} >expect &&\n'> 
          <'\tgit show-ref --head B >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\n'> <'\t{\n'> <'\t\techo $(git rev-parse HEAD) HEAD &&\n'> 
          <'\t\techo $(git rev-parse refs/heads/B) refs/heads/B\n'> <'\t\techo $(git rev-parse refs/tags/B) refs/tags/B\n'> 
          <'\t\techo $(git rev-parse refs/tags/B^0) "refs/tags/B^{}"\n'> <'\t} >expect &&\n'> <'\tgit show-ref --head -d B >actual &&\n'> <'\ttest_cmp expect actual\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)