(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"Tests for rev-parse --prefix">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <"\n"> <"\tmkdir -p sub1/sub2 &&\n"> <"\techo top >top &&\n"> 
          <"\techo file1 >sub1/file1 &&\n"> <"\techo file2 >sub1/sub2/file2 &&\n"> <"\tgit add top sub1/file1 sub1/sub2/file2 &&\n"> 
          <"\tgit commit -m commit\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"empty prefix -- file">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix \"\" -- top sub1/file1 >actual &&\n"> 
          <"\tcat <<-\\EOF >expected &&\n"> <"\t--\n"> <"\ttop\n"> <"\tsub1/file1\n"> <"\tEOF\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"valid prefix -- file">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix sub1/ -- file1 sub2/file2 >actual &&\n"> 
          <"\tcat <<-\\EOF >expected &&\n"> <"\t--\n"> <"\tsub1/file1\n"> <"\tsub1/sub2/file2\n"> <"\tEOF\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"valid prefix -- ../file">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix sub1/ -- ../top sub2/file2 >actual &&\n"> 
          <"\tcat <<-\\EOF >expected &&\n"> <"\t--\n"> <"\tsub1/../top\n"> <"\tsub1/sub2/file2\n"> <"\tEOF\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"empty prefix HEAD:./path">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix \"\" HEAD:./top >actual &&\n"> 
          <"\tgit rev-parse HEAD:top >expected &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"valid prefix HEAD:./path">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix sub1/ HEAD:./file1 >actual &&\n"> 
          <"\tgit rev-parse HEAD:sub1/file1 >expected &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"valid prefix HEAD:../path">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix sub1/ HEAD:../top >actual &&\n"> 
          <"\tgit rev-parse HEAD:top >expected &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"prefix ignored with HEAD:top">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix sub1/ HEAD:top >actual &&\n"> 
          <"\tgit rev-parse HEAD:top >expected &&\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"disambiguate path with valid prefix">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix sub1/ file1 >actual &&\n"> 
          <"\tcat <<-\\EOF >expected &&\n"> <"\tsub1/file1\n"> <"\tEOF\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"file and refs with prefix">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix sub1/ master file1 >actual &&\n"> 
          <"\tcat <<-EOF >expected &&\n"> <"\t$(git rev-parse master)\n"> <"\tsub1/file1\n"> <"\tEOF\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"two-levels deep">)} 
      {
        (SQ <"\n"> <"\tgit rev-parse --prefix sub1/sub2/ -- file2 >actual &&\n"> 
          <"\tcat <<-\\EOF >expected &&\n"> <"\t--\n"> <"\tsub1/sub2/file2\n"> <"\tEOF\n"> <"\ttest_cmp expected actual\n">
        )
      }
    )
    (C {(test_done)})
  ]
)