diff options
| author | Eric Sunshine <sunshine@sunshineco.com> | 2022-09-01 00:29:49 +0000 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2022-09-01 10:07:41 -0700 |
| commit | 832c68b3c210267c93e1dcb2f2763372339ca36c (patch) | |
| tree | 3141f27c3958b96cbb05ddd3f7feafcc4328f79e /t/chainlint/chain-break-return-exit.test | |
| parent | chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly (diff) | |
| download | git-832c68b3c210267c93e1dcb2f2763372339ca36c.tar.gz git-832c68b3c210267c93e1dcb2f2763372339ca36c.zip | |
chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
There are quite a few tests which print an error messages and then
explicitly signal failure with `false`, `return 1`, or `exit 1` as the
final command in an `if` branch. In these cases, the tests don't bother
maintaining the &&-chain between `echo` and the explicit "test failed"
indicator. Since such constructs are manually signaling failure, their
&&-chain breakage is legitimate and safe -- both for the command
immediately preceding `false`, `return`, or `exit`, as well as for all
preceding commands in the `if` branch. Therefore, stop flagging &&-chain
breakage in these sorts of cases.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/chainlint/chain-break-return-exit.test')
| -rw-r--r-- | t/chainlint/chain-break-return-exit.test | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/t/chainlint/chain-break-return-exit.test b/t/chainlint/chain-break-return-exit.test index e2b059933a..46542edf88 100644 --- a/t/chainlint/chain-break-return-exit.test +++ b/t/chainlint/chain-break-return-exit.test @@ -1,3 +1,21 @@ +case "$(git ls-files)" in +one) echo pass one ;; +# LINT: broken &&-chain okay if explicit "return 1" signals failuire +*) echo bad one; return 1 ;; +esac && +( + case "$(git ls-files)" in + two) echo pass two ;; +# LINT: broken &&-chain okay if explicit "exit 1" signals failuire + *) echo bad two; exit 1 ;; + esac +) && +case "$(git ls-files)" in +dir/two"$LF"one) echo pass both ;; +# LINT: broken &&-chain okay if explicit "return 1" signals failuire +*) echo bad; return 1 ;; +esac && + for i in 1 2 3 4 ; do # LINT: broken &&-chain okay if explicit "return $?" signals failure git checkout main -b $i || return $? |
