mirror of
https://github.com/git/git.git
synced 2024-05-25 14:46:09 +02:00
Merge branch 'ps/t7800-variable-interpolation-fix' into next
Fix the way recently added tests interpolate variables defined outside them, and document the best practice to help future developers. * ps/t7800-variable-interpolation-fix: t/README: document how to loop around test cases t7800: use single quotes for test bodies t7800: improve test descriptions with empty arguments
This commit is contained in:
commit
e7b1ec4df4
20
t/README
20
t/README
|
@ -724,6 +724,26 @@ The "do's:"
|
||||||
Note that we still &&-chain the loop to propagate failures from
|
Note that we still &&-chain the loop to propagate failures from
|
||||||
earlier commands.
|
earlier commands.
|
||||||
|
|
||||||
|
- Repeat tests with slightly different arguments in a loop.
|
||||||
|
|
||||||
|
In some cases it may make sense to re-run the same set of tests with
|
||||||
|
different options or commands to ensure that the command behaves
|
||||||
|
despite the different parameters. This can be achieved by looping
|
||||||
|
around a specific parameter:
|
||||||
|
|
||||||
|
for arg in '' "--foo"
|
||||||
|
do
|
||||||
|
test_expect_success "test command ${arg:-without arguments}" '
|
||||||
|
command $arg
|
||||||
|
'
|
||||||
|
done
|
||||||
|
|
||||||
|
Note that while the test title uses double quotes ("), the test body
|
||||||
|
should continue to use single quotes (') to avoid breakage in case the
|
||||||
|
values contain e.g. quoting characters. The loop variable will be
|
||||||
|
accessible regardless of the single quotes as the test body is passed
|
||||||
|
to `eval`.
|
||||||
|
|
||||||
|
|
||||||
And here are the "don'ts:"
|
And here are the "don'ts:"
|
||||||
|
|
||||||
|
|
|
@ -93,42 +93,42 @@ test_expect_success 'difftool forwards arguments to diff' '
|
||||||
|
|
||||||
for opt in '' '--dir-diff'
|
for opt in '' '--dir-diff'
|
||||||
do
|
do
|
||||||
test_expect_success "difftool ${opt} ignores exit code" "
|
test_expect_success "difftool ${opt:-without options} ignores exit code" '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
git difftool ${opt} -y -t error branch
|
git difftool ${opt} -y -t error branch
|
||||||
"
|
'
|
||||||
|
|
||||||
test_expect_success "difftool ${opt} forwards exit code with --trust-exit-code" "
|
test_expect_success "difftool ${opt:-without options} forwards exit code with --trust-exit-code" '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
test_must_fail git difftool ${opt} -y --trust-exit-code -t error branch
|
test_must_fail git difftool ${opt} -y --trust-exit-code -t error branch
|
||||||
"
|
'
|
||||||
|
|
||||||
test_expect_success "difftool ${opt} forwards exit code with --trust-exit-code for built-ins" "
|
test_expect_success "difftool ${opt:-without options} forwards exit code with --trust-exit-code for built-ins" '
|
||||||
test_config difftool.vimdiff.path false &&
|
test_config difftool.vimdiff.path false &&
|
||||||
test_must_fail git difftool ${opt} -y --trust-exit-code -t vimdiff branch
|
test_must_fail git difftool ${opt} -y --trust-exit-code -t vimdiff branch
|
||||||
"
|
'
|
||||||
|
|
||||||
test_expect_success "difftool ${opt} honors difftool.trustExitCode = true" "
|
test_expect_success "difftool ${opt:-without options} honors difftool.trustExitCode = true" '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
test_config difftool.trustExitCode true &&
|
test_config difftool.trustExitCode true &&
|
||||||
test_must_fail git difftool ${opt} -y -t error branch
|
test_must_fail git difftool ${opt} -y -t error branch
|
||||||
"
|
'
|
||||||
|
|
||||||
test_expect_success "difftool ${opt} honors difftool.trustExitCode = false" "
|
test_expect_success "difftool ${opt:-without options} honors difftool.trustExitCode = false" '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
test_config difftool.trustExitCode false &&
|
test_config difftool.trustExitCode false &&
|
||||||
git difftool ${opt} -y -t error branch
|
git difftool ${opt} -y -t error branch
|
||||||
"
|
'
|
||||||
|
|
||||||
test_expect_success "difftool ${opt} ignores exit code with --no-trust-exit-code" "
|
test_expect_success "difftool ${opt:-without options} ignores exit code with --no-trust-exit-code" '
|
||||||
test_config difftool.error.cmd false &&
|
test_config difftool.error.cmd false &&
|
||||||
test_config difftool.trustExitCode true &&
|
test_config difftool.trustExitCode true &&
|
||||||
git difftool ${opt} -y --no-trust-exit-code -t error branch
|
git difftool ${opt} -y --no-trust-exit-code -t error branch
|
||||||
"
|
'
|
||||||
|
|
||||||
test_expect_success "difftool ${opt} stops on error with --trust-exit-code" "
|
test_expect_success "difftool ${opt:-without options} stops on error with --trust-exit-code" '
|
||||||
test_when_finished 'rm -f for-diff .git/fail-right-file' &&
|
test_when_finished "rm -f for-diff .git/fail-right-file" &&
|
||||||
test_when_finished 'git reset -- for-diff' &&
|
test_when_finished "git reset -- for-diff" &&
|
||||||
write_script .git/fail-right-file <<-\EOF &&
|
write_script .git/fail-right-file <<-\EOF &&
|
||||||
echo failed
|
echo failed
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -138,19 +138,19 @@ do
|
||||||
test_must_fail git difftool ${opt} -y --trust-exit-code \
|
test_must_fail git difftool ${opt} -y --trust-exit-code \
|
||||||
--extcmd .git/fail-right-file branch >actual &&
|
--extcmd .git/fail-right-file branch >actual &&
|
||||||
test_line_count = 1 actual
|
test_line_count = 1 actual
|
||||||
"
|
'
|
||||||
|
|
||||||
test_expect_success "difftool ${opt} honors exit status if command not found" "
|
test_expect_success "difftool ${opt:-without options} honors exit status if command not found" '
|
||||||
test_config difftool.nonexistent.cmd i-dont-exist &&
|
test_config difftool.nonexistent.cmd i-dont-exist &&
|
||||||
test_config difftool.trustExitCode false &&
|
test_config difftool.trustExitCode false &&
|
||||||
if test "${opt}" = '--dir-diff'
|
if test "${opt}" = --dir-diff
|
||||||
then
|
then
|
||||||
expected_code=127
|
expected_code=127
|
||||||
else
|
else
|
||||||
expected_code=128
|
expected_code=128
|
||||||
fi &&
|
fi &&
|
||||||
test_expect_code \${expected_code} git difftool ${opt} -y -t nonexistent branch
|
test_expect_code ${expected_code} git difftool ${opt} -y -t nonexistent branch
|
||||||
"
|
'
|
||||||
done
|
done
|
||||||
|
|
||||||
test_expect_success 'difftool honors --gui' '
|
test_expect_success 'difftool honors --gui' '
|
||||||
|
|
Loading…
Reference in New Issue