clone_submodule: avoid using `access()` on directories
[git.git] / t / t0004-unwritable.sh
blob8114fac73b320b85949d8d7ce1422c35e1eb8158
1 #!/bin/sh
3 test_description='detect unwritable repository and fail correctly'
5 TEST_PASSES_SANITIZE_LEAK=true
6 . ./test-lib.sh
8 test_expect_success setup '
10 >file &&
11 git add file &&
12 test_tick &&
13 git commit -m initial &&
14 echo >file &&
15 git add file
19 test_expect_success POSIXPERM,SANITY 'write-tree should notice unwritable repository' '
20 test_when_finished "chmod 775 .git/objects .git/objects/??" &&
21 chmod a-w .git/objects .git/objects/?? &&
22 test_must_fail git write-tree 2>out.write-tree
25 test_lazy_prereq WRITE_TREE_OUT 'test -e "$TRASH_DIRECTORY"/out.write-tree'
26 test_expect_success WRITE_TREE_OUT 'write-tree output on unwritable repository' '
27 cat >expect <<-\EOF &&
28 error: insufficient permission for adding an object to repository database .git/objects
29 fatal: git-write-tree: error building trees
30 EOF
31 test_cmp expect out.write-tree
34 test_expect_success POSIXPERM,SANITY 'commit should notice unwritable repository' '
35 test_when_finished "chmod 775 .git/objects .git/objects/??" &&
36 chmod a-w .git/objects .git/objects/?? &&
37 test_must_fail git commit -m second 2>out.commit
40 test_lazy_prereq COMMIT_OUT 'test -e "$TRASH_DIRECTORY"/out.commit'
41 test_expect_success COMMIT_OUT 'commit output on unwritable repository' '
42 cat >expect <<-\EOF &&
43 error: insufficient permission for adding an object to repository database .git/objects
44 error: Error building trees
45 EOF
46 test_cmp expect out.commit
49 test_expect_success POSIXPERM,SANITY 'update-index should notice unwritable repository' '
50 test_when_finished "chmod 775 .git/objects .git/objects/??" &&
51 echo 6O >file &&
52 chmod a-w .git/objects .git/objects/?? &&
53 test_must_fail git update-index file 2>out.update-index
56 test_lazy_prereq UPDATE_INDEX_OUT 'test -e "$TRASH_DIRECTORY"/out.update-index'
57 test_expect_success UPDATE_INDEX_OUT 'update-index output on unwritable repository' '
58 cat >expect <<-\EOF &&
59 error: insufficient permission for adding an object to repository database .git/objects
60 error: file: failed to insert into database
61 fatal: Unable to process path file
62 EOF
63 test_cmp expect out.update-index
66 test_expect_success POSIXPERM,SANITY 'add should notice unwritable repository' '
67 test_when_finished "chmod 775 .git/objects .git/objects/??" &&
68 echo b >file &&
69 chmod a-w .git/objects .git/objects/?? &&
70 test_must_fail git add file 2>out.add
73 test_lazy_prereq ADD_OUT 'test -e "$TRASH_DIRECTORY"/out.add'
74 test_expect_success ADD_OUT 'add output on unwritable repository' '
75 cat >expect <<-\EOF &&
76 error: insufficient permission for adding an object to repository database .git/objects
77 error: file: failed to insert into database
78 error: unable to index file '\''file'\''
79 fatal: updating files failed
80 EOF
81 test_cmp expect out.add
84 test_done