1#!/bin/sh
   2test_description='errors in upload-pack'
   4. ./test-lib.sh
   6D=`pwd`
   8corrupt_repo () {
  10        object_sha1=$(git rev-parse "$1") &&
  11        ob=$(expr "$object_sha1" : "\(..\)") &&
  12        ject=$(expr "$object_sha1" : "..\(..*\)") &&
  13        rm -f ".git/objects/$ob/$ject"
  14}
  15test_expect_success 'setup and corrupt repository' '
  17        echo file >file &&
  19        git add file &&
  20        git rev-parse :file &&
  21        git commit -a -m original &&
  22        test_tick &&
  23        echo changed >file &&
  24        git commit -a -m changed &&
  25        corrupt_repo HEAD:file
  26'
  28test_expect_success 'fsck fails' '
  30        test_must_fail git fsck
  31'
  32test_expect_success 'upload-pack fails due to error in pack-objects' '
  34        ! echo "0032want $(git rev-parse HEAD)
  3600000009done
  370000" | git upload-pack . > /dev/null 2> output.err &&
  38        grep "pack-objects died" output.err
  39'
  40test_expect_success 'corrupt repo differently' '
  42        git hash-object -w file &&
  44        corrupt_repo HEAD^^{tree}
  45'
  47test_expect_success 'fsck fails' '
  49        test_must_fail git fsck
  50'
  51test_expect_success 'upload-pack fails due to error in rev-list' '
  52        ! echo "0032want $(git rev-parse HEAD)
  5400000009done
  550000" | git upload-pack . > /dev/null 2> output.err &&
  56        grep "waitpid (async) failed" output.err
  57'
  58test_expect_success 'create empty repository' '
  60        mkdir foo &&
  62        cd foo &&
  63        git init
  64'
  66test_expect_success 'fetch fails' '
  68        test_must_fail git fetch .. master
  70'
  72test_done