(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:'git rev-list should notice bad commits' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:28))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:34) 
          (Token id:Id.Lit_Chars val:'   git init &&\n' span_id:35) (Token id:Id.Lit_Chars val:'   git config core.compression 0 &&\n' span_id:36) 
          (Token
            id: Id.Lit_Chars
            val: '   git config core.logallrefupdates false &&\n'
            span_id: 37
          ) (Token id:Id.Lit_Chars val:'   echo "foo" > foo &&\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'   git add foo &&\n' span_id:39) (Token id:Id.Lit_Chars val:'   git commit -m "first commit" &&\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'   echo "bar" > bar &&\n' span_id:41) (Token id:Id.Lit_Chars val:'   git add bar &&\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'   git commit -m "second commit" &&\n' span_id:43) (Token id:Id.Lit_Chars val:'   echo "baz" > baz &&\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'   git add baz &&\n' span_id:45) (Token id:Id.Lit_Chars val:'   git commit -m "third commit" &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'   echo "foo again" >> foo &&\n' span_id:47) (Token id:Id.Lit_Chars val:'   git add foo &&\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'   git commit -m "fourth commit" &&\n' span_id:49) (Token id:Id.Lit_Chars val:'   git repack -a -f -d\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'   ' span_id:51)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'verify number of revisions' span_id:58))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) 
          (Token
            id: Id.Lit_Chars
            val: '   revs=$(git rev-list --all | wc -l) &&\n'
            span_id: 65
          ) (Token id:Id.Lit_Chars val:'   test $revs -eq 4 &&\n' span_id:66) 
          (Token
            id: Id.Lit_Chars
            val: '   first_commit=$(git rev-parse HEAD~3)\n'
            span_id: 67
          ) (Token id:Id.Lit_Chars val:'   ' span_id:68)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'corrupt second commit object' span_id:75))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:81) 
          (Token
            id: Id.Lit_Chars
            val: '   perl -i.bak -pe "s/second commit/socond commit/" .git/objects/pack/*.pack &&\n'
            span_id: 82
          ) (Token id:Id.Lit_Chars val:'   test_must_fail git fsck --full\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'   ' span_id:84)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rev-list should fail' span_id:91))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:97) 
          (Token
            id: Id.Lit_Chars
            val: '   test_must_fail git rev-list --all > /dev/null\n'
            span_id: 98
          ) (Token id:Id.Lit_Chars val:'   ' span_id:99)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git repack _MUST_ fail' span_id:106))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'   test_must_fail git repack -a -f -d\n' span_id:113) (Token id:Id.Lit_Chars val:'   ' span_id:114)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'first commit is still available' span_id:121))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'   git log $first_commit\n' span_id:128) (Token id:Id.Lit_Chars val:'   ' span_id:129)
        )
      }
    )
    (C {(test_done)})
  ]
)