From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"René Scharfe" <l.s.r@web.de>,
"Eric Sunshine" <sunshine@sunshineco.com>,
"Torsten Bögershausen" <tboegi@web.de>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v4 0/6] tests: fix ignored & hidden exit codes
Date: Mon, 19 Dec 2022 11:19:23 +0100 [thread overview]
Message-ID: <cover-v4-0.6-00000000000-20221219T101240Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-v3-0.8-00000000000-20221202T114733Z-avarab@gmail.com>
Various fixes for "git" on the LHS of a pipe, but mostly when in
"test" expressions like:
test str = "$(git some-command)" &&
Changes since v3[1]:
* The previous 1/8 and 3/8 were picked independently, and have landed
on "master". I was waiting for those to graduate before a re-roll.
* Add a missing test_expect_success to 1/6, as pointed out by René
(thanks!).
* Remove commit message mention of the now-dead test_cmp_cmd (thanks
Eric!)
* Reword commit messages, fix typos etc. (thanks Junio, and other
reviewers!)
I think this should address all of the feedback on the v3, except
Junio's suggestion of perhaps re-arranging this series around file
boundaries.
Given the potential size of that range-diff I thought it was better to
mosttly keep the same structure.
1. https://lore.kernel.org/git/cover-v3-0.8-00000000000-20221202T114733Z-avarab@gmail.com/
Ævar Arnfjörð Bjarmason (6):
auto-crlf tests: don't lose exit code in loops and outside tests
t/lib-patch-mode.sh: fix ignored exit codes
tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
tests: don't lose exit status with "test <op> $(git ...)"
tests: don't lose "git" exit codes in "! ( git ... | grep )"
tests: don't lose misc "git" exit codes
t/lib-httpd.sh | 5 +-
t/lib-patch-mode.sh | 11 ++-
t/lib-submodule-update.sh | 26 ++++---
t/t0001-init.sh | 9 ++-
t/t0002-gitfile.sh | 4 +-
t/t0027-auto-crlf.sh | 66 ++++++++++--------
t/t0055-beyond-symlinks.sh | 14 +++-
t/t0060-path-utils.sh | 107 +++++++++++++++++++++--------
t/t0100-previous.sh | 8 ++-
t/t1401-symbolic-ref.sh | 3 +-
t/t1504-ceiling-dirs.sh | 8 ++-
t/t2005-checkout-index-symlinks.sh | 8 ++-
t/t3200-branch.sh | 13 ++--
t/t3700-add.sh | 18 +++--
t/t3701-add-interactive.sh | 8 ++-
t/t5522-pull-symlink.sh | 4 +-
t/t5605-clone-local.sh | 15 ++--
t/t7402-submodule-rebase.sh | 23 +++++--
t/t7504-commit-msg-hook.sh | 4 +-
t/t7516-commit-races.sh | 3 +-
t/t7810-grep.sh | 4 +-
21 files changed, 243 insertions(+), 118 deletions(-)
Range-diff against v3:
1: 64dfec31fb3 < -: ----------- merge tests: don't ignore "rev-parse" exit code in helper
2: 394d5e46494 ! 1: 68d276dd421 auto-crlf tests: don't lose exit code in loops and outside tests
@@ t/t0027-auto-crlf.sh: commit_MIX_chkwrn () {
test_expect_success "commit file with mixed EOL onto LF crlf=$crlf attr=$attr" '
check_warning "$lfwarn" ${pfx}_LF.err
@@ t/t0027-auto-crlf.sh: checkout_files () {
+ lfmixcrlf=$1 ; shift
+ lfmixcr=$1 ; shift
+ crlfnul=$1 ; shift
+- create_gitattributes "$attr" $ident $aeol &&
+- git config core.autocrlf $crlf &&
++ test_expect_success "setup config for checkout attr=$attr ident=$ident aeol=$aeol core.autocrlf=$crlf" '
++ create_gitattributes "$attr" $ident $aeol &&
++ git config core.autocrlf $crlf
++ '
pfx=eol_${ceol}_crlf_${crlf}_attr_${attr}_ &&
for f in LF CRLF LF_mix_CR CRLF_mix_LF LF_nul
do
3: 4ec075689f6 < -: ----------- diff tests: fix ignored exit codes in t4023
4: c080899dd5f ! 2: d351075f0ab t/lib-patch-mode.sh: fix ignored exit codes
@@ Commit message
t/lib-patch-mode.sh: fix ignored exit codes
Fix code added in b319ef70a94 (Add a small patch-mode testing library,
- 2009-08-13) to use &&-chaining and the newly added "test_cmp_cmd".
+ 2009-08-13) to use &&-chaining.
+
This avoids losing both the exit code of a "git" and the "cat"
processes.
@@ Commit message
SANITIZE=leak, this code doesn't leak now as far as I can tell, but I
discovered it while looking at leaks in related code.
- The "cat _head >expect" here is redundant, we could simply give
- "_head" to "test_cmp", but let's be consistent in using the "expect"
- and "actual" names for clarity.
-
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## t/lib-patch-mode.sh ##
5: 58ac6fe5604 ! 3: f5b2489609c tests: use "test_cmp" instead of "test" in sub-shells
@@ Metadata
Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## Commit message ##
- tests: use "test_cmp" instead of "test" in sub-shells
+ tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
- Convert a few cases where we were using "test" inside a sub-shell, and
- were losing the exit code of "git".
+ Rewrite tests that ran "git" inside command substitution and lost the
+ exit status of "git" so that we notice the failing "git".
- In the case of "t3200-branch.sh" some adjacent code outside of a
- sub-shell that was losing the exit code is also being converted, as
- it's within the same hunk.
+ Have them use modern patterns such as a "test_cmp" of the expected
+ outputs instead, and avoid needlessly spawning sub-shell in favor of
+ using "git -C <dir>".
+
+ We'll fix more of these these in the subsequent commit, for now we're
+ only converting the cases where this loss of exit code was combined
+ with spawning a sub-shell. The one exception to that is the casein
+ "t3200-branch.sh" where adjacent code didn't use a sub-shell, let's
+ convert that here as it's within the same hunk.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
6: 51f32b42ce6 ! 4: da66e5bf1c1 tests: don't lose 'test <str> = $(cmd ...)"' exit code
@@ Metadata
Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## Commit message ##
- tests: don't lose 'test <str> = $(cmd ...)"' exit code
+ tests: don't lose exit status with "test <op> $(git ...)"
- Convert some cases in the test suite where we'd lose the exit code of
- a command being interpolated as one of the arguments to the "test"
- builtin function to use &&-chaining and "test_cmp" instead.
-
- This way we won't lose the exit code, and the failure output will be
- more helpful.
+ As with the preceding commit, rewrite tests that ran "git" inside
+ command substitution and lost the exit status of "git" so that we
+ notice the failing "git". This time around we're converting cases that
+ didn't involve a containing sub-shell around the command substitution.
In the case of "t0060-path-utils.sh" and
"t2005-checkout-index-symlinks.sh" convert the relevant code to using
7: 307f25db831 ! 5: 9596702978e tests: don't lose "git" exit codes in "! ( git ... | grep )"
@@ Commit message
- In the case of "t0055-beyond-symlinks.sh" compare against the
expected output instead.
+ We could use the same pattern as in the "t3700-add.sh" below, doing
+ so would have the advantage that if we added an earlier test we
+ wouldn't need to adjust the "expect" output.
+
+ But as "t0055-beyond-symlinks.sh" is a small and focused test (less
+ than 40 lines in total) let's use "test_cmp" instead.
+
- For "t3700-add.sh" use "sed -n" to print the expected "bad" part,
- and use "test_must_be_empty" to assert that it's not there.
+ and use "test_must_be_empty" to assert that it's not there. If we used
+ "grep" we'd get a non-zero exit code.
+
+ We could use "test_expect_code 1 grep", but this is more consistent
+ with existing patterns in the test suite.
We can also remove a repeated invocation of "git ls-files" for the
last test that's being modified in that file, and search the
8: 37c75f4a097 ! 6: 94df7a1764e tests: don't lose mist "git" exit codes
@@ Metadata
Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## Commit message ##
- tests: don't lose mist "git" exit codes
+ tests: don't lose misc "git" exit codes
Fix a few miscellaneous cases where:
--
2.39.0.1071.g97ce8966538
next prev parent reply other threads:[~2022-12-19 10:19 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-21 6:51 [PATCH 0/6] tests: fix ignored & hidden exit codes Ævar Arnfjörð Bjarmason
2022-07-21 6:51 ` [PATCH 1/6] diff tests: fix ignored exit codes in t4023 Ævar Arnfjörð Bjarmason
2022-07-21 6:51 ` [PATCH 2/6] t/lib-patch-mode.sh: fix ignored "git" exit codes Ævar Arnfjörð Bjarmason
2022-07-21 6:51 ` [PATCH 3/6] auto-crlf tests: check "git checkout" exit code Ævar Arnfjörð Bjarmason
2022-07-21 6:51 ` [PATCH 4/6] test-lib-functions: add and use test_cmp_cmd Ævar Arnfjörð Bjarmason
2022-07-21 6:51 ` [PATCH 5/6] merge tests: don't ignore "rev-parse" exit code in helper Ævar Arnfjörð Bjarmason
2022-07-21 6:51 ` [PATCH 6/6] log tests: don't use "exit 1" outside a sub-shell Ævar Arnfjörð Bjarmason
2022-12-02 0:06 ` [PATCH v2 0/8] tests: fix ignored & hidden exit codes Ævar Arnfjörð Bjarmason
2022-12-02 0:06 ` [PATCH v2 1/8] log tests: don't use "exit 1" outside a sub-shell Ævar Arnfjörð Bjarmason
2022-12-02 1:02 ` Eric Sunshine
2022-12-02 1:48 ` Junio C Hamano
2022-12-02 2:45 ` Ævar Arnfjörð Bjarmason
2022-12-02 9:03 ` Eric Sunshine
2022-12-02 10:02 ` Ævar Arnfjörð Bjarmason
2022-12-07 6:09 ` Eric Sunshine
2022-12-02 3:24 ` Junio C Hamano
2022-12-02 0:06 ` [PATCH v2 2/8] auto-crlf tests: check "git checkout" exit code Ævar Arnfjörð Bjarmason
2022-12-02 1:02 ` René Scharfe
2022-12-02 1:10 ` Eric Sunshine
2022-12-02 5:59 ` Torsten Bögershausen
2022-12-02 6:03 ` Eric Sunshine
2022-12-02 0:06 ` [PATCH v2 3/8] diff tests: fix ignored exit codes in t4023 Ævar Arnfjörð Bjarmason
2022-12-02 2:02 ` Junio C Hamano
2022-12-02 0:06 ` [PATCH v2 4/8] test-lib-functions: add and use test_cmp_cmd Ævar Arnfjörð Bjarmason
2022-12-02 1:30 ` René Scharfe
2022-12-02 1:33 ` Eric Sunshine
2022-12-02 1:45 ` Eric Sunshine
2022-12-02 1:52 ` Eric Sunshine
2022-12-02 3:41 ` Junio C Hamano
2022-12-02 0:06 ` [PATCH v2 5/8] t/lib-patch-mode.sh: fix ignored "git" exit codes Ævar Arnfjörð Bjarmason
2022-12-02 1:31 ` René Scharfe
2022-12-02 0:06 ` [PATCH v2 6/8] merge tests: don't ignore "rev-parse" exit code in helper Ævar Arnfjörð Bjarmason
2022-12-02 1:41 ` René Scharfe
2022-12-02 0:06 ` [PATCH v2 7/8] tests: use "test_cmp_cmd" instead of "test" in sub-shells Ævar Arnfjörð Bjarmason
2022-12-02 0:06 ` [PATCH v2 8/8] tests: use "test_cmp_cmd" in misc tests Ævar Arnfjörð Bjarmason
2022-12-02 2:19 ` Junio C Hamano
2022-12-02 11:52 ` [PATCH v3 0/8] tests: fix ignored & hidden exit codes Ævar Arnfjörð Bjarmason
2022-12-02 11:52 ` [PATCH v3 1/8] merge tests: don't ignore "rev-parse" exit code in helper Ævar Arnfjörð Bjarmason
2022-12-05 0:24 ` Junio C Hamano
2022-12-02 11:52 ` [PATCH v3 2/8] auto-crlf tests: don't lose exit code in loops and outside tests Ævar Arnfjörð Bjarmason
2022-12-02 15:59 ` René Scharfe
2022-12-02 11:52 ` [PATCH v3 3/8] diff tests: fix ignored exit codes in t4023 Ævar Arnfjörð Bjarmason
2022-12-05 0:26 ` Junio C Hamano
2022-12-02 11:52 ` [PATCH v3 4/8] t/lib-patch-mode.sh: fix ignored exit codes Ævar Arnfjörð Bjarmason
2022-12-02 15:59 ` René Scharfe
2022-12-04 0:45 ` Eric Sunshine
2022-12-02 11:52 ` [PATCH v3 5/8] tests: use "test_cmp" instead of "test" in sub-shells Ævar Arnfjörð Bjarmason
2022-12-05 0:39 ` Junio C Hamano
2022-12-02 11:52 ` [PATCH v3 6/8] tests: don't lose 'test <str> = $(cmd ...)"' exit code Ævar Arnfjörð Bjarmason
2022-12-02 11:52 ` [PATCH v3 7/8] tests: don't lose "git" exit codes in "! ( git ... | grep )" Ævar Arnfjörð Bjarmason
2022-12-02 18:31 ` René Scharfe
2022-12-02 11:52 ` [PATCH v3 8/8] tests: don't lose mist "git" exit codes Ævar Arnfjörð Bjarmason
2022-12-04 0:40 ` Eric Sunshine
2022-12-05 0:45 ` Junio C Hamano
2022-12-19 10:19 ` Ævar Arnfjörð Bjarmason [this message]
2022-12-19 10:19 ` [PATCH v4 1/6] auto-crlf tests: don't lose exit code in loops and outside tests Ævar Arnfjörð Bjarmason
2022-12-19 12:07 ` René Scharfe
2022-12-19 10:19 ` [PATCH v4 2/6] t/lib-patch-mode.sh: fix ignored exit codes Ævar Arnfjörð Bjarmason
2022-12-20 0:09 ` Junio C Hamano
2022-12-27 16:40 ` Phillip Wood
2022-12-27 18:14 ` Ævar Arnfjörð Bjarmason
2022-12-19 10:19 ` [PATCH v4 3/6] tests: don't lose exit status with "(cd ...; test <op> $(git ...))" Ævar Arnfjörð Bjarmason
2022-12-20 0:20 ` Junio C Hamano
2022-12-19 10:19 ` [PATCH v4 4/6] tests: don't lose exit status with "test <op> $(git ...)" Ævar Arnfjörð Bjarmason
2022-12-26 1:14 ` Junio C Hamano
2022-12-19 10:19 ` [PATCH v4 5/6] tests: don't lose "git" exit codes in "! ( git ... | grep )" Ævar Arnfjörð Bjarmason
2022-12-26 1:18 ` Junio C Hamano
2022-12-27 16:44 ` Phillip Wood
2022-12-27 17:13 ` Phillip Wood
2022-12-27 23:16 ` Junio C Hamano
2022-12-19 10:19 ` [PATCH v4 6/6] tests: don't lose misc "git" exit codes Ævar Arnfjörð Bjarmason
2022-12-27 16:46 ` Phillip Wood
2022-12-27 18:18 ` Ævar Arnfjörð Bjarmason
2022-12-27 23:17 ` Junio C Hamano
2022-12-20 0:06 ` [PATCH v4 0/6] tests: fix ignored & hidden " Junio C Hamano
2023-02-06 22:44 ` [PATCH v5 " Ævar Arnfjörð Bjarmason
2023-02-06 22:44 ` [PATCH v5 1/6] auto-crlf tests: don't lose exit code in loops and outside tests Ævar Arnfjörð Bjarmason
2023-02-06 22:44 ` [PATCH v5 2/6] t/lib-patch-mode.sh: fix ignored exit codes Ævar Arnfjörð Bjarmason
2023-02-06 22:44 ` [PATCH v5 3/6] tests: don't lose exit status with "(cd ...; test <op> $(git ...))" Ævar Arnfjörð Bjarmason
2023-02-06 22:44 ` [PATCH v5 4/6] tests: don't lose exit status with "test <op> $(git ...)" Ævar Arnfjörð Bjarmason
2023-02-06 22:44 ` [PATCH v5 5/6] tests: don't lose "git" exit codes in "! ( git ... | grep )" Ævar Arnfjörð Bjarmason
2023-02-06 22:44 ` [PATCH v5 6/6] tests: don't lose misc "git" exit codes Ævar Arnfjörð Bjarmason
2023-02-06 23:33 ` [PATCH v5 0/6] tests: fix ignored & hidden " Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover-v4-0.6-00000000000-20221219T101240Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=l.s.r@web.de \
--cc=sunshine@sunshineco.com \
--cc=tboegi@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).