Re: [PATCH] t7450: make test "set -e" clean
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Mar 24, 2026, 18:38 UTC
- Message-ID
- <CAPig+cQPD3vAxbRAJsqyd5=x2xCkTHj0Z6Gt2t+GiGjXDYei0Q@mail.gmail.com>
- In-Reply-To
- <xmqqbjgdyt6l.fsf_-_@gitster.g>
On Tue, Mar 24, 2026 at 2:32 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 28 quoted lines
> In order to catch mistakes like misspelling "test_expect_success",
> we would like to eventually be able to run our test suite with the
> "-e" option on.
>
> Often we write "A && test_expect_success ..." and want it to mean
> "If and only if A holds true, this needs to be tested", but under
> "set -e", this will cause failure when A does not hold true. We
> need to write "!A || test_expect_success ..." if we want to run the
> test conditionally.
>
> Or write it properly with if/then/fi, perhaps like:
>
> if ! A
> then
> test_expect_success ...
> fi
>
> Make sure we do not fail unnecessarily under "set -e".
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> diff --git i/t/t7450-bad-git-dotfiles.sh w/t/t7450-bad-git-dotfiles.sh
> @@ -220,7 +220,7 @@ check_dotx_symlink () {
> - test -n "$refuse_index" &&
> + test -z "$refuse_index" ||
> test_expect_success "refuse to load symlinked $name into index ($type)" '
> test_must_fail \
> git -C $dir \I suppose this is the absolute minimum change to make this work, but typically we would handle this sort of case by defining a PREREQ, wouldn't we? Using a PREREQ would also set a better example for those new to the codebase.