t: drop "verbose" helper function

We have a small helper function called "verbose", with the idea that you
can write:

  verbose foo

to get a message to stderr when the "foo" command fails, even if it does
not produce any output itself. This goes back to 8ad1652418 (t5304: use
helper to report failure of "test foo = bar", 2014-10-10). It does work,
but overall it has not been a big success for two reasons:

  1. Test writers have to remember to put it there (and the resulting
     test code is longer as a result).

  2. It doesn't handle the opposite case (we expect "foo" to fail, but
     it succeeds), leading to inconsistencies in tests (which you can
     see in many hunks of this patch, e.g. ones involving "has_cr").

Most importantly, we added a136f6d8ff (test-lib.sh: support -x option
for shell-tracing, 2014-10-10) at the same time, and it does roughly the
same thing. The output is not quite as succinct as "verbose", and you
have to watch out for stray shell-traces ending up in stderr. But it
solves both of the problems above, and has clearly become the preferred
tool.

Let's consider the "verbose" function a failed experiment and remove the
last few callers (which are all many years old, and have been dwindling
as we remove them from scripts we touch for other reasons). It will be
one less thing for new test writers to see and wonder if they should be
using themselves.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King
2023-05-08 15:04:57 -04:00
committed by Junio C Hamano
parent a9ea5296b7
commit 8ddfce7144
12 changed files with 57 additions and 66 deletions

View File

@ -125,7 +125,7 @@ test_expect_success 'update with autocrlf=input' '
munge_cr append dir/two && munge_cr append dir/two &&
git update-index -- one dir/two && git update-index -- one dir/two &&
differs=$(git diff-index --cached HEAD) && differs=$(git diff-index --cached HEAD) &&
verbose test -z "$differs" test -z "$differs"
' '
@ -138,7 +138,7 @@ test_expect_success 'update with autocrlf=true' '
munge_cr append dir/two && munge_cr append dir/two &&
git update-index -- one dir/two && git update-index -- one dir/two &&
differs=$(git diff-index --cached HEAD) && differs=$(git diff-index --cached HEAD) &&
verbose test -z "$differs" test -z "$differs"
' '
@ -153,7 +153,7 @@ test_expect_success 'checkout with autocrlf=true' '
test "$one" = $(git hash-object --stdin <one) && test "$one" = $(git hash-object --stdin <one) &&
test "$two" = $(git hash-object --stdin <dir/two) && test "$two" = $(git hash-object --stdin <dir/two) &&
differs=$(git diff-index --cached HEAD) && differs=$(git diff-index --cached HEAD) &&
verbose test -z "$differs" test -z "$differs"
' '
test_expect_success 'checkout with autocrlf=input' ' test_expect_success 'checkout with autocrlf=input' '
@ -167,7 +167,7 @@ test_expect_success 'checkout with autocrlf=input' '
test "$one" = $(git hash-object --stdin <one) && test "$one" = $(git hash-object --stdin <one) &&
test "$two" = $(git hash-object --stdin <dir/two) && test "$two" = $(git hash-object --stdin <dir/two) &&
differs=$(git diff-index --cached HEAD) && differs=$(git diff-index --cached HEAD) &&
verbose test -z "$differs" test -z "$differs"
' '
test_expect_success 'apply patch (autocrlf=input)' ' test_expect_success 'apply patch (autocrlf=input)' '
@ -177,7 +177,7 @@ test_expect_success 'apply patch (autocrlf=input)' '
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
git apply patch.file && git apply patch.file &&
verbose test "$patched" = "$(git hash-object --stdin <one)" test "$patched" = "$(git hash-object --stdin <one)"
' '
test_expect_success 'apply patch --cached (autocrlf=input)' ' test_expect_success 'apply patch --cached (autocrlf=input)' '
@ -187,7 +187,7 @@ test_expect_success 'apply patch --cached (autocrlf=input)' '
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
git apply --cached patch.file && git apply --cached patch.file &&
verbose test "$patched" = $(git rev-parse :one) test "$patched" = $(git rev-parse :one)
' '
test_expect_success 'apply patch --index (autocrlf=input)' ' test_expect_success 'apply patch --index (autocrlf=input)' '
@ -197,8 +197,8 @@ test_expect_success 'apply patch --index (autocrlf=input)' '
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
git apply --index patch.file && git apply --index patch.file &&
verbose test "$patched" = $(git rev-parse :one) && test "$patched" = $(git rev-parse :one) &&
verbose test "$patched" = $(git hash-object --stdin <one) test "$patched" = $(git hash-object --stdin <one)
' '
test_expect_success 'apply patch (autocrlf=true)' ' test_expect_success 'apply patch (autocrlf=true)' '
@ -208,7 +208,7 @@ test_expect_success 'apply patch (autocrlf=true)' '
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
git apply patch.file && git apply patch.file &&
verbose test "$patched" = "$(remove_cr <one | git hash-object --stdin)" test "$patched" = "$(remove_cr <one | git hash-object --stdin)"
' '
test_expect_success 'apply patch --cached (autocrlf=true)' ' test_expect_success 'apply patch --cached (autocrlf=true)' '
@ -218,7 +218,7 @@ test_expect_success 'apply patch --cached (autocrlf=true)' '
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
git apply --cached patch.file && git apply --cached patch.file &&
verbose test "$patched" = $(git rev-parse :one) test "$patched" = $(git rev-parse :one)
' '
test_expect_success 'apply patch --index (autocrlf=true)' ' test_expect_success 'apply patch --index (autocrlf=true)' '
@ -228,8 +228,8 @@ test_expect_success 'apply patch --index (autocrlf=true)' '
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
git apply --index patch.file && git apply --index patch.file &&
verbose test "$patched" = $(git rev-parse :one) && test "$patched" = $(git rev-parse :one) &&
verbose test "$patched" = "$(remove_cr <one | git hash-object --stdin)" test "$patched" = "$(remove_cr <one | git hash-object --stdin)"
' '
test_expect_success '.gitattributes says two is binary' ' test_expect_success '.gitattributes says two is binary' '
@ -240,7 +240,7 @@ test_expect_success '.gitattributes says two is binary' '
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
! has_cr dir/two && ! has_cr dir/two &&
verbose has_cr one && has_cr one &&
! has_cr three ! has_cr three
' '
@ -259,8 +259,8 @@ test_expect_success '.gitattributes says two and three are text' '
echo "t* crlf" >.gitattributes && echo "t* crlf" >.gitattributes &&
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
verbose has_cr dir/two && has_cr dir/two &&
verbose has_cr three has_cr three
' '
test_expect_success 'in-tree .gitattributes (1)' ' test_expect_success 'in-tree .gitattributes (1)' '
@ -273,7 +273,7 @@ test_expect_success 'in-tree .gitattributes (1)' '
git read-tree --reset -u HEAD && git read-tree --reset -u HEAD &&
! has_cr one && ! has_cr one &&
verbose has_cr three has_cr three
' '
test_expect_success 'in-tree .gitattributes (2)' ' test_expect_success 'in-tree .gitattributes (2)' '
@ -283,7 +283,7 @@ test_expect_success 'in-tree .gitattributes (2)' '
git checkout-index -f -q -u -a && git checkout-index -f -q -u -a &&
! has_cr one && ! has_cr one &&
verbose has_cr three has_cr three
' '
test_expect_success 'in-tree .gitattributes (3)' ' test_expect_success 'in-tree .gitattributes (3)' '
@ -294,7 +294,7 @@ test_expect_success 'in-tree .gitattributes (3)' '
git checkout-index -u one dir/two three && git checkout-index -u one dir/two three &&
! has_cr one && ! has_cr one &&
verbose has_cr three has_cr three
' '
test_expect_success 'in-tree .gitattributes (4)' ' test_expect_success 'in-tree .gitattributes (4)' '
@ -305,7 +305,7 @@ test_expect_success 'in-tree .gitattributes (4)' '
git checkout-index -u .gitattributes && git checkout-index -u .gitattributes &&
! has_cr one && ! has_cr one &&
verbose has_cr three has_cr three
' '
test_expect_success 'checkout with existing .gitattributes' ' test_expect_success 'checkout with existing .gitattributes' '

View File

@ -89,7 +89,7 @@ do
rm -f .git/info/refs && rm -f .git/info/refs &&
git update-server-info && git update-server-info &&
actual="$(test_modebits .git/info/refs)" && actual="$(test_modebits .git/info/refs)" &&
verbose test "x$actual" = "x-$y" test "x$actual" = "x-$y"
' '
@ -99,7 +99,7 @@ do
rm -f .git/info/refs && rm -f .git/info/refs &&
git update-server-info && git update-server-info &&
actual="$(test_modebits .git/info/refs)" && actual="$(test_modebits .git/info/refs)" &&
verbose test "x$actual" = "x-$x" test "x$actual" = "x-$x"
' '

View File

@ -74,9 +74,9 @@ test_expect_success 'Rebase -Xsubtree --empty=ask --onto commit' '
test_must_fail git rebase -Xsubtree=files_subtree --empty=ask --onto files-main main && test_must_fail git rebase -Xsubtree=files_subtree --empty=ask --onto files-main main &&
: first pick results in no changes && : first pick results in no changes &&
git rebase --skip && git rebase --skip &&
verbose test "$(commit_message HEAD~2)" = "topic_4" && test "$(commit_message HEAD~2)" = "topic_4" &&
verbose test "$(commit_message HEAD~)" = "files_subtree/topic_5" && test "$(commit_message HEAD~)" = "files_subtree/topic_5" &&
verbose test "$(commit_message HEAD)" = "Empty commit" test "$(commit_message HEAD)" = "Empty commit"
' '
test_expect_success 'Rebase -Xsubtree --empty=ask --rebase-merges --onto commit' ' test_expect_success 'Rebase -Xsubtree --empty=ask --rebase-merges --onto commit' '
@ -85,9 +85,9 @@ test_expect_success 'Rebase -Xsubtree --empty=ask --rebase-merges --onto commit'
test_must_fail git rebase -Xsubtree=files_subtree --empty=ask --rebase-merges --onto files-main --root && test_must_fail git rebase -Xsubtree=files_subtree --empty=ask --rebase-merges --onto files-main --root &&
: first pick results in no changes && : first pick results in no changes &&
git rebase --skip && git rebase --skip &&
verbose test "$(commit_message HEAD~2)" = "topic_4" && test "$(commit_message HEAD~2)" = "topic_4" &&
verbose test "$(commit_message HEAD~)" = "files_subtree/topic_5" && test "$(commit_message HEAD~)" = "files_subtree/topic_5" &&
verbose test "$(commit_message HEAD)" = "Empty commit" test "$(commit_message HEAD)" = "Empty commit"
' '
test_done test_done

View File

@ -24,7 +24,7 @@ test_expect_success setup '
test_expect_success 'detect rewrite' ' test_expect_success 'detect rewrite' '
actual=$(git diff-files -B --summary test) && actual=$(git diff-files -B --summary test) &&
verbose expr "$actual" : " rewrite test ([0-9]*%)$" expr "$actual" : " rewrite test ([0-9]*%)$"
' '

View File

@ -24,7 +24,7 @@ test_expect_success '-G matches' '
test_expect_success '-S --pickaxe-regex' ' test_expect_success '-S --pickaxe-regex' '
git diff --name-only -S0 --pickaxe-regex HEAD^ >out && git diff --name-only -S0 --pickaxe-regex HEAD^ >out &&
verbose test 4096-zeroes.txt = "$(cat out)" test 4096-zeroes.txt = "$(cat out)"
' '
test_done test_done

View File

@ -16,7 +16,7 @@ add_blob() {
before=$(git count-objects | sed "s/ .*//") && before=$(git count-objects | sed "s/ .*//") &&
BLOB=$(echo aleph_0 | git hash-object -w --stdin) && BLOB=$(echo aleph_0 | git hash-object -w --stdin) &&
BLOB_FILE=.git/objects/$(echo $BLOB | sed "s/^../&\//") && BLOB_FILE=.git/objects/$(echo $BLOB | sed "s/^../&\//") &&
verbose test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && test $((1 + $before)) = $(git count-objects | sed "s/ .*//") &&
test_path_is_file $BLOB_FILE && test_path_is_file $BLOB_FILE &&
test-tool chmtime =+0 $BLOB_FILE test-tool chmtime =+0 $BLOB_FILE
} }
@ -51,11 +51,11 @@ test_expect_success 'prune stale packs' '
test_expect_success 'prune --expire' ' test_expect_success 'prune --expire' '
add_blob && add_blob &&
git prune --expire=1.hour.ago && git prune --expire=1.hour.ago &&
verbose test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && test $((1 + $before)) = $(git count-objects | sed "s/ .*//") &&
test_path_is_file $BLOB_FILE && test_path_is_file $BLOB_FILE &&
test-tool chmtime =-86500 $BLOB_FILE && test-tool chmtime =-86500 $BLOB_FILE &&
git prune --expire 1.day && git prune --expire 1.day &&
verbose test $before = $(git count-objects | sed "s/ .*//") && test $before = $(git count-objects | sed "s/ .*//") &&
test_path_is_missing $BLOB_FILE test_path_is_missing $BLOB_FILE
' '
@ -63,11 +63,11 @@ test_expect_success 'gc: implicit prune --expire' '
add_blob && add_blob &&
test-tool chmtime =-$((2*$week-30)) $BLOB_FILE && test-tool chmtime =-$((2*$week-30)) $BLOB_FILE &&
git gc --no-cruft && git gc --no-cruft &&
verbose test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && test $((1 + $before)) = $(git count-objects | sed "s/ .*//") &&
test_path_is_file $BLOB_FILE && test_path_is_file $BLOB_FILE &&
test-tool chmtime =-$((2*$week+1)) $BLOB_FILE && test-tool chmtime =-$((2*$week+1)) $BLOB_FILE &&
git gc --no-cruft && git gc --no-cruft &&
verbose test $before = $(git count-objects | sed "s/ .*//") && test $before = $(git count-objects | sed "s/ .*//") &&
test_path_is_missing $BLOB_FILE test_path_is_missing $BLOB_FILE
' '
@ -138,7 +138,7 @@ test_expect_success 'gc --no-prune' '
test-tool chmtime =-$((5001*$day)) $BLOB_FILE && test-tool chmtime =-$((5001*$day)) $BLOB_FILE &&
git config gc.pruneExpire 2.days.ago && git config gc.pruneExpire 2.days.ago &&
git gc --no-prune --no-cruft && git gc --no-prune --no-cruft &&
verbose test 1 = $(git count-objects | sed "s/ .*//") && test 1 = $(git count-objects | sed "s/ .*//") &&
test_path_is_file $BLOB_FILE test_path_is_file $BLOB_FILE
' '
@ -192,10 +192,10 @@ test_expect_success 'gc: prune old objects after local clone' '
git clone --no-hardlinks . aclone && git clone --no-hardlinks . aclone &&
( (
cd aclone && cd aclone &&
verbose test 1 = $(git count-objects | sed "s/ .*//") && test 1 = $(git count-objects | sed "s/ .*//") &&
test_path_is_file $BLOB_FILE && test_path_is_file $BLOB_FILE &&
git gc --prune --no-cruft && git gc --prune --no-cruft &&
verbose test 0 = $(git count-objects | sed "s/ .*//") && test 0 = $(git count-objects | sed "s/ .*//") &&
test_path_is_missing $BLOB_FILE test_path_is_missing $BLOB_FILE
) )
' '

View File

@ -493,7 +493,7 @@ test_expect_success 'empty email' '
test_tick && test_tick &&
C=$(GIT_AUTHOR_EMAIL= git commit-tree HEAD^{tree} </dev/null) && C=$(GIT_AUTHOR_EMAIL= git commit-tree HEAD^{tree} </dev/null) &&
A=$(git show --pretty=format:%an,%ae,%ad%n -s $C) && A=$(git show --pretty=format:%an,%ae,%ad%n -s $C) &&
verbose test "$A" = "$GIT_AUTHOR_NAME,,Thu Apr 7 15:14:13 2005 -0700" test "$A" = "$GIT_AUTHOR_NAME,,Thu Apr 7 15:14:13 2005 -0700"
' '
test_expect_success 'del LF before empty (1)' ' test_expect_success 'del LF before empty (1)' '

View File

@ -152,7 +152,7 @@ test_expect_success 'do not complain about existing broken links (commit)' '
EOF EOF
commit=$(git hash-object -t commit -w broken-commit) && commit=$(git hash-object -t commit -w broken-commit) &&
git gc --no-cruft -q 2>stderr && git gc --no-cruft -q 2>stderr &&
verbose git cat-file -e $commit && git cat-file -e $commit &&
test_must_be_empty stderr test_must_be_empty stderr
' '

View File

@ -192,7 +192,7 @@ test_expect_success "Michael Cassar's test case" '
T=$(git write-tree) && T=$(git write-tree) &&
git ls-tree -r $T >out && git ls-tree -r $T >out &&
verbose grep partA/outline.txt out grep partA/outline.txt out
' '
rm -fr papers partA path? rm -fr papers partA path?

View File

@ -120,7 +120,7 @@ test_expect_success 'git clean with relative prefix' '
grep part3 | grep part3 |
sed -n -e "s|^Would remove ||p" sed -n -e "s|^Would remove ||p"
) && ) &&
verbose test "$would_clean" = ../src/part3.c test "$would_clean" = ../src/part3.c
' '
test_expect_success 'git clean with absolute path' ' test_expect_success 'git clean with absolute path' '
@ -133,7 +133,7 @@ test_expect_success 'git clean with absolute path' '
grep part3 | grep part3 |
sed -n -e "s|^Would remove ||p" sed -n -e "s|^Would remove ||p"
) && ) &&
verbose test "$would_clean" = ../src/part3.c test "$would_clean" = ../src/part3.c
' '
test_expect_success 'git clean with out of work tree relative path' ' test_expect_success 'git clean with out of work tree relative path' '

View File

@ -405,40 +405,40 @@ test_expect_success '__gitdir - remote as argument' '
test_expect_success '__git_dequote - plain unquoted word' ' test_expect_success '__git_dequote - plain unquoted word' '
__git_dequote unquoted-word && __git_dequote unquoted-word &&
verbose test unquoted-word = "$dequoted_word" test unquoted-word = "$dequoted_word"
' '
# input: b\a\c\k\'\\\"s\l\a\s\h\es # input: b\a\c\k\'\\\"s\l\a\s\h\es
# expected: back'\"slashes # expected: back'\"slashes
test_expect_success '__git_dequote - backslash escaped' ' test_expect_success '__git_dequote - backslash escaped' '
__git_dequote "b\a\c\k\\'\''\\\\\\\"s\l\a\s\h\es" && __git_dequote "b\a\c\k\\'\''\\\\\\\"s\l\a\s\h\es" &&
verbose test "back'\''\\\"slashes" = "$dequoted_word" test "back'\''\\\"slashes" = "$dequoted_word"
' '
# input: sin'gle\' '"quo'ted # input: sin'gle\' '"quo'ted
# expected: single\ "quoted # expected: single\ "quoted
test_expect_success '__git_dequote - single quoted' ' test_expect_success '__git_dequote - single quoted' '
__git_dequote "'"sin'gle\\\\' '\\\"quo'ted"'" && __git_dequote "'"sin'gle\\\\' '\\\"quo'ted"'" &&
verbose test '\''single\ "quoted'\'' = "$dequoted_word" test '\''single\ "quoted'\'' = "$dequoted_word"
' '
# input: dou"ble\\" "\"\quot"ed # input: dou"ble\\" "\"\quot"ed
# expected: double\ "\quoted # expected: double\ "\quoted
test_expect_success '__git_dequote - double quoted' ' test_expect_success '__git_dequote - double quoted' '
__git_dequote '\''dou"ble\\" "\"\quot"ed'\'' && __git_dequote '\''dou"ble\\" "\"\quot"ed'\'' &&
verbose test '\''double\ "\quoted'\'' = "$dequoted_word" test '\''double\ "\quoted'\'' = "$dequoted_word"
' '
# input: 'open single quote # input: 'open single quote
test_expect_success '__git_dequote - open single quote' ' test_expect_success '__git_dequote - open single quote' '
__git_dequote "'\''open single quote" && __git_dequote "'\''open single quote" &&
verbose test "open single quote" = "$dequoted_word" test "open single quote" = "$dequoted_word"
' '
# input: "open double quote # input: "open double quote
test_expect_success '__git_dequote - open double quote' ' test_expect_success '__git_dequote - open double quote' '
__git_dequote "\"open double quote" && __git_dequote "\"open double quote" &&
verbose test "open double quote" = "$dequoted_word" test "open double quote" = "$dequoted_word"
' '
@ -616,7 +616,7 @@ test_expect_success '__git_is_configured_remote' '
test_when_finished "git remote remove remote_2" && test_when_finished "git remote remove remote_2" &&
git remote add remote_2 git://remote_2 && git remote add remote_2 git://remote_2 &&
( (
verbose __git_is_configured_remote remote_2 && __git_is_configured_remote remote_2 &&
test_must_fail __git_is_configured_remote non-existent test_must_fail __git_is_configured_remote non-existent
) )
' '
@ -2596,30 +2596,30 @@ test_expect_success 'options with value' '
test_expect_success 'sourcing the completion script clears cached commands' ' test_expect_success 'sourcing the completion script clears cached commands' '
( (
__git_compute_all_commands && __git_compute_all_commands &&
verbose test -n "$__git_all_commands" && test -n "$__git_all_commands" &&
. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" && . "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" &&
verbose test -z "$__git_all_commands" test -z "$__git_all_commands"
) )
' '
test_expect_success 'sourcing the completion script clears cached merge strategies' ' test_expect_success 'sourcing the completion script clears cached merge strategies' '
( (
__git_compute_merge_strategies && __git_compute_merge_strategies &&
verbose test -n "$__git_merge_strategies" && test -n "$__git_merge_strategies" &&
. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" && . "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" &&
verbose test -z "$__git_merge_strategies" test -z "$__git_merge_strategies"
) )
' '
test_expect_success 'sourcing the completion script clears cached --options' ' test_expect_success 'sourcing the completion script clears cached --options' '
( (
__gitcomp_builtin checkout && __gitcomp_builtin checkout &&
verbose test -n "$__gitcomp_builtin_checkout" && test -n "$__gitcomp_builtin_checkout" &&
__gitcomp_builtin notes_edit && __gitcomp_builtin notes_edit &&
verbose test -n "$__gitcomp_builtin_notes_edit" && test -n "$__gitcomp_builtin_notes_edit" &&
. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" && . "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" &&
verbose test -z "$__gitcomp_builtin_checkout" && test -z "$__gitcomp_builtin_checkout" &&
verbose test -z "$__gitcomp_builtin_notes_edit" test -z "$__gitcomp_builtin_notes_edit"
) )
' '

View File

@ -1227,15 +1227,6 @@ test_i18ngrep () {
return 1 return 1
} }
# Call any command "$@" but be more verbose about its
# failure. This is handy for commands like "test" which do
# not output anything when they fail.
verbose () {
"$@" && return 0
echo >&4 "command failed: $(git rev-parse --sq-quote "$@")"
return 1
}
# Check if the file expected to be empty is indeed empty, and barfs # Check if the file expected to be empty is indeed empty, and barfs
# otherwise. # otherwise.