t / t6011-rev-list-with-bad-commit.shon commit fast-import: duplicate into history rather than passing ownership (1ebec8d)
   1#!/bin/sh
   2
   3test_description='git rev-list should notice bad commits'
   4
   5. ./test-lib.sh
   6
   7# Note:
   8# - compression level is set to zero to make "corruptions" easier to perform
   9# - reflog is disabled to avoid extra references which would twart the test
  10
  11test_expect_success 'setup' \
  12   '
  13   git init &&
  14   git config core.compression 0 &&
  15   git config core.logallrefupdates false &&
  16   echo "foo" > foo &&
  17   git add foo &&
  18   git commit -m "first commit" &&
  19   echo "bar" > bar &&
  20   git add bar &&
  21   git commit -m "second commit" &&
  22   echo "baz" > baz &&
  23   git add baz &&
  24   git commit -m "third commit" &&
  25   echo "foo again" >> foo &&
  26   git add foo &&
  27   git commit -m "fourth commit" &&
  28   git repack -a -f -d
  29   '
  30
  31test_expect_success 'verify number of revisions' \
  32   '
  33   revs=$(git rev-list --all | wc -l) &&
  34   test $revs -eq 4 &&
  35   first_commit=$(git rev-parse HEAD~3)
  36   '
  37
  38test_expect_success 'corrupt second commit object' \
  39   '
  40   perl -i.bak -pe "s/second commit/socond commit/" .git/objects/pack/*.pack &&
  41   test_must_fail git fsck --full
  42   '
  43
  44test_expect_success 'rev-list should fail' '
  45        test_must_fail env GIT_TEST_COMMIT_GRAPH=0 git rev-list --all > /dev/null
  46'
  47
  48test_expect_success 'git repack _MUST_ fail' \
  49   '
  50   test_must_fail git repack -a -f -d
  51   '
  52
  53test_expect_success 'first commit is still available' \
  54   '
  55   git log $first_commit
  56   '
  57
  58test_done
  59