(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git rev-list should notice bad commits'>)}
          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>})
  ]
)