1#!/bin/sh
   2test_description='detect unwritable repository and fail correctly'
   4. ./test-lib.sh
   6test_expect_success setup '
   8        >file &&
  10        git add file &&
  11        test_tick &&
  12        git commit -m initial &&
  13        echo >file &&
  14        git add file
  15'
  17test_expect_success 'write-tree should notice unwritable repository' '
  19        (
  21                chmod a-w .git/objects .git/objects/?? &&
  22                test_must_fail git write-tree
  23        )
  24        status=$?
  25        chmod 775 .git/objects .git/objects/??
  26        (exit $status)
  27'
  29test_expect_success 'commit should notice unwritable repository' '
  31        (
  33                chmod a-w .git/objects .git/objects/?? &&
  34                test_must_fail git commit -m second
  35        )
  36        status=$?
  37        chmod 775 .git/objects .git/objects/??
  38        (exit $status)
  39'
  41test_expect_success 'update-index should notice unwritable repository' '
  43        (
  45                echo 6O >file &&
  46                chmod a-w .git/objects .git/objects/?? &&
  47                test_must_fail git update-index file
  48        )
  49        status=$?
  50        chmod 775 .git/objects .git/objects/??
  51        (exit $status)
  52'
  54test_expect_success 'add should notice unwritable repository' '
  56        (
  58                echo b >file &&
  59                chmod a-w .git/objects .git/objects/?? &&
  60                test_must_fail git add file
  61        )
  62        status=$?
  63        chmod 775 .git/objects .git/objects/??
  64        (exit $status)
  65'
  67test_done