Ensure git ls-tree exits with a non-zero exit code if read_tree_recursive fails.
authorJon Seymour <jon.seymour@gmail.com>
Sun, 24 Jul 2011 14:59:14 +0000 (00:59 +1000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 Jul 2011 17:50:11 +0000 (10:50 -0700)
In the case of a corrupt repository, git ls-tree may report an error but
presently it exits with a code of 0.

This change uses the return code of read_tree_recursive instead.

Improved-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/ls-tree.c
t/t3103-ls-tree-misc.sh

index f08c5b0c942eec58b85ab41e5e5fb1ec216df683..6b666e1e87017f41d2f53c50b157f280b3a5f282 100644 (file)
@@ -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);
 }
index c9c20f95e3f6264132c6d477851ff71bf18ad073..09dcf043fdff1495dc4e0d1e56b9118c4f5feaeb 100755 (executable)
@@ -16,7 +16,7 @@ test_expect_success 'setup' '
        git commit -m test
 '
 
-test_expect_failure 'ls-tree fails with non-zero exit code on broken tree' '
+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
 '