summaryrefslogtreecommitdiff
path: root/t/t0004-unwritable.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-04-23 09:47:17 -0700
committerJunio C Hamano <gitster@pobox.com>2008-04-23 10:02:44 -0700
commitedae5f0c20b7e71a717b59873ddb8eeddfa49b86 (patch)
tree697e01ec44ef6fa86e25a816d143e2a9400b662e /t/t0004-unwritable.sh
parent4f7ec7970874d09be162bc7f16415a0ec2d36ae5 (diff)
downloadgit-edae5f0c20b7e71a717b59873ddb8eeddfa49b86.tar.gz
write-tree: properly detect failure to write tree objects
Tomasz Fortuna reported that "git commit" does not error out properly when it cannot write tree objects out. "git write-tree" shares the same issue, as the failure to notice the error is deep in the logic to write tree objects out recursively. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t0004-unwritable.sh')
-rwxr-xr-xt/t0004-unwritable.sh67
1 files changed, 67 insertions, 0 deletions
diff --git a/t/t0004-unwritable.sh b/t/t0004-unwritable.sh
new file mode 100755
index 0000000000..9255c63c08
--- /dev/null
+++ b/t/t0004-unwritable.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+test_description='detect unwritable repository and fail correctly'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+ >file &&
+ git add file &&
+ git commit -m initial &&
+ echo >file &&
+ git add file
+
+'
+
+test_expect_success 'write-tree should notice unwritable repository' '
+
+ (
+ chmod a-w .git/objects
+ test_must_fail git write-tree
+ )
+ status=$?
+ chmod 775 .git/objects
+ (exit $status)
+
+'
+
+test_expect_success 'commit should notice unwritable repository' '
+
+ (
+ chmod a-w .git/objects
+ test_must_fail git commit -m second
+ )
+ status=$?
+ chmod 775 .git/objects
+ (exit $status)
+
+'
+
+test_expect_success 'update-index should notice unwritable repository' '
+
+ (
+ echo a >file &&
+ chmod a-w .git/objects
+ test_must_fail git update-index file
+ )
+ status=$?
+ chmod 775 .git/objects
+ (exit $status)
+
+'
+
+test_expect_success 'add should notice unwritable repository' '
+
+ (
+ echo b >file &&
+ chmod a-w .git/objects
+ test_must_fail git add file
+ )
+ status=$?
+ chmod 775 .git/objects
+ (exit $status)
+
+'
+
+test_done