(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git rev-list should notice bad commits'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'   git init &&\n'> <'   git config core.compression 0 &&\n'> 
          <'   git config core.logallrefupdates false &&\n'> <'   echo "foo" > foo &&\n'> <'   git add foo &&\n'> <'   git commit -m "first commit" &&\n'> 
          <'   echo "bar" > bar &&\n'> <'   git add bar &&\n'> <'   git commit -m "second commit" &&\n'> <'   echo "baz" > baz &&\n'> 
          <'   git add baz &&\n'> <'   git commit -m "third commit" &&\n'> <'   echo "foo again" >> foo &&\n'> <'   git add foo &&\n'> 
          <'   git commit -m "fourth commit" &&\n'> <'   git repack -a -f -d\n'> <'   '>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'verify number of revisions'>)} 
      {
        (SQ <'\n'> <'   revs=$(git rev-list --all | wc -l) &&\n'> <'   test $revs -eq 4 &&\n'> 
          <'   first_commit=$(git rev-parse HEAD~3)\n'> <'   '>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'corrupt second commit object'>)} 
      {
        (SQ <'\n'> 
          <'   perl -i.bak -pe "s/second commit/socond commit/" .git/objects/pack/*.pack &&\n'> <'   test_must_fail git fsck --full\n'> <'   '>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'rev-list should fail'>)} 
      {(SQ <'\n'> <'   test_must_fail git rev-list --all > /dev/null\n'> <'   '>)}
    )
    (C {(test_expect_success)} {(SQ <'git repack _MUST_ fail'>)} 
      {(SQ <'\n'> <'   test_must_fail git repack -a -f -d\n'> <'   '>)}
    )
    (C {(test_expect_success)} {(SQ <'first commit is still available'>)} 
      {(SQ <'\n'> <'   git log $first_commit\n'> <'   '>)}
    )
    (C {(test_done)})
  ]
)