summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-08-16 19:41:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-08-16 19:41:12 (GMT)
commit64b9db510986652a64227bb7370dbf8cc7f057ba (patch)
tree0d98f50ddc47910b96e87855108e3962bc76b1e6
parent5480861c24b6f5830c2301ae2f50e21ef3cdeaf2 (diff)
parent04f89259a67ba1ec291f023b70278d41ed665a13 (diff)
downloadgit-64b9db510986652a64227bb7370dbf8cc7f057ba.zip
git-64b9db510986652a64227bb7370dbf8cc7f057ba.tar.gz
git-64b9db510986652a64227bb7370dbf8cc7f057ba.tar.bz2
Merge branch 'js/ls-tree-error' into maint
* js/ls-tree-error: Ensure git ls-tree exits with a non-zero exit code if read_tree_recursive fails. Add a test to check that git ls-tree sets non-zero exit code on error.
-rw-r--r--builtin/ls-tree.c4
-rwxr-xr-xt/t3103-ls-tree-misc.sh24
2 files changed, 25 insertions, 3 deletions
diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c
index f08c5b0..6b666e1 100644
--- a/builtin/ls-tree.c
+++ b/builtin/ls-tree.c
@@ -173,7 +173,5 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
tree = parse_tree_indirect(sha1);
if (!tree)
die("not a tree object");
- read_tree_recursive(tree, "", 0, 0, &pathspec, show_tree, NULL);
-
- return 0;
+ return !!read_tree_recursive(tree, "", 0, 0, &pathspec, show_tree, NULL);
}
diff --git a/t/t3103-ls-tree-misc.sh b/t/t3103-ls-tree-misc.sh
new file mode 100755
index 0000000..09dcf04
--- /dev/null
+++ b/t/t3103-ls-tree-misc.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+test_description='
+Miscellaneous tests for git ls-tree.
+
+ 1. git ls-tree fails in presence of tree damage.
+
+'
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+ mkdir a &&
+ touch a/one &&
+ git add a/one &&
+ git commit -m test
+'
+
+test_expect_success 'ls-tree fails with non-zero exit code on broken tree' '
+ rm -f .git/objects/5f/cffbd6e4c5c5b8d81f5e9314b20e338e3ffff5 &&
+ test_must_fail git ls-tree -r HEAD
+'
+
+test_done