bash: teach 'git checkout' options
[git] / t / t0004-unwritable.sh
1 #!/bin/sh
2
3 test_description='detect unwritable repository and fail correctly'
4
5 . ./test-lib.sh
6
7 test_expect_success setup '
8
9         >file &&
10         git add file &&
11         test_tick &&
12         git commit -m initial &&
13         echo >file &&
14         git add file
15
16 '
17
18 test_expect_success POSIXPERM 'write-tree should notice unwritable repository' '
19
20         (
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
28 '
29
30 test_expect_success POSIXPERM 'commit should notice unwritable repository' '
31
32         (
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
40 '
41
42 test_expect_success POSIXPERM 'update-index should notice unwritable repository' '
43
44         (
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
53 '
54
55 test_expect_success POSIXPERM 'add should notice unwritable repository' '
56
57         (
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
66 '
67
68 test_done