git-commit-vandalism/t/t3103-ls-tree-misc.sh
Ævar Arnfjörð Bjarmason 0f88783592 ls-tree: detect and error on --name-only --name-status
The --name-only and --name-status options are synonyms, but let's
detect and error if both are provided.

In addition let's add explicit --format tests for the combination of
these various options.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Teng Long <dyroneteng@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-03-23 11:38:41 -07:00

42 lines
926 B
Bash
Executable File

#!/bin/sh
test_description='
Miscellaneous tests for git ls-tree.
1. git ls-tree fails in presence of tree damage.
'
TEST_PASSES_SANITIZE_LEAK=true
. ./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' '
tree=$(git rev-parse HEAD:a) &&
rm -f .git/objects/$(echo $tree | sed -e "s,^\(..\),\1/,") &&
test_must_fail git ls-tree -r HEAD
'
for opts in \
"--long --name-only" \
"--name-only --name-status" \
"--name-status --object-only" \
"--object-only --long"
do
test_expect_success "usage: incompatible options: $opts" '
test_expect_code 129 git ls-tree $opts $tree
'
one_opt=$(echo "$opts" | cut -d' ' -f1)
test_expect_success "usage: incompatible options: $one_opt and --format" '
test_expect_code 129 git ls-tree $one_opt --format=fmt $tree
'
done
test_done