diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-04-23 09:47:17 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-04-23 10:02:44 -0700 |
commit | edae5f0c20b7e71a717b59873ddb8eeddfa49b86 (patch) | |
tree | 697e01ec44ef6fa86e25a816d143e2a9400b662e /t/t0004-unwritable.sh | |
parent | 4f7ec7970874d09be162bc7f16415a0ec2d36ae5 (diff) | |
download | git-edae5f0c20b7e71a717b59873ddb8eeddfa49b86.tar.gz git-edae5f0c20b7e71a717b59873ddb8eeddfa49b86.tar.xz |
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-x | t/t0004-unwritable.sh | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/t/t0004-unwritable.sh b/t/t0004-unwritable.sh new file mode 100755 index 000000000..9255c63c0 --- /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 |