From: Eric Sunshine <sunshine@sunshineco.com>
To: git@vger.kernel.org
Cc: "Jeff King" <peff@peff.net>,
"Jonathan Nieder" <jrnieder@gmail.com>,
"SZEDER Gábor" <szeder@ira.uka.de>,
"Stefan Beller" <sbeller@google.com>,
"Elijah Newren" <newren@gmail.com>,
"Jonathan Tan" <jonathantanmy@google.com>,
"Eric Sunshine" <sunshine@sunshineco.com>
Subject: [PATCH 00/29] t: detect and fix broken &&-chains in subshells
Date: Tue, 26 Jun 2018 03:29:32 -0400 [thread overview]
Message-ID: <20180626073001.6555-1-sunshine@sunshineco.com> (raw)
The --chain-lint[1] option detects breakage in the top-level &&-chain of
tests. This series undertakes the more complex task of teaching it to
also detect &&-chain breakage within subshells. See patch 29/29 for the
gory details of how that's done.
The series is built atop 'master', however, it has a conflict with an
in-flight topic. In particular, patch 1/29 rewrites a test in t7508 in
'master' to avoid &&-chain breakage. 'jc/clean-after-sanity-tests' in
'next' performs pretty much the same rewrite. If this series is queued
atop 'master', then it needs patch 1/29; if it is queued somewhere above
'jc/clean-after-sanity-tests', then 1/29 can be dropped.
Aside from identifying a rather significant number of &&-chain breaks,
repairing those broken chains uncovered genuine bugs in several tests
which were hidden by missing &&-chain links. Those bugs are also fixed
by this series. I would appreciate if the following people would
double-check my fixes:
Stefan Bellar - 8/29 "t7400" and (especially) 13/29 "lib-submodule-update"
Jonathan Tan - 10/29 "t9001"
Elijah Newren - 6/29 "t6036"
In order to keep the noise level down and ease review burden, please
take into account that I largely avoided modernizations and cleanups,
and limited changes to merely adding "&&" even when some other
transformation would have made the fix nicer overall. (For example, I
resisted the urge to replace a series of 'echo' statements in a subshell
with a simple here-doc.)
Finally, although all simple &&-chain fixes originally inhabited a
single patch, they were split out into several patches to avoid hitting
vger.kernel.org's message size limit. However, when queuing, all patches
titled "t????: fix broken &&-chains in subshells" could be squashed into
a single patch titled "t: fix broken &&-chains in subshells".
[1]: https://public-inbox.org/git/20150320100429.GA17354@peff.net/
Eric Sunshine (29):
t7508: use test_when_finished() instead of managing exit code manually
t0001: use "{...}" block around "||" expression rather than subshell
t1300: use sane_unset() to avoid breaking &&-chain
t3303: use standard here-doc tag "EOF" to avoid fooling --chain-lint
t5505: modernize and simplify hard-to-digest test
t6036: fix broken "merge fails but has appropriate contents" tests
t7201: drop pointless "exit 0" at end of subshell
t7400: fix broken "submodule add/reconfigure --force" test
t7810: use test_expect_code() instead of hand-rolled comparison
t9001: fix broken "invoke hook" test
t9104: use "{...}" block around "||" expression rather than subshell
t9401: drop unnecessary nested subshell
t/lib-submodule-update: fix broken "replace submodule must-fail" test
t: drop subshell with missing &&-chain in favor of simpler construct
t: drop unnecessary terminating semicolons in subshell
t: use test_might_fail() instead of manipulating exit code manually
t: use test_must_fail() instead of checking exit code manually
t0000-t0999: fix broken &&-chains in subshells
t1000-t1999: fix broken &&-chains in subshells
t2000-t2999: fix broken &&-chains in subshells
t3000-t3999: fix broken &&-chains in subshells
t3030: fix broken &&-chains in subshells
t4000-t4999: fix broken &&-chains in subshells
t5000-t5999: fix broken &&-chains in subshells
t6000-t6999: fix broken &&-chains in subshells
t7000-t7999: fix broken &&-chains in subshells
t9000-t9999: fix broken &&-chains in subshells
t9119: fix broken &&-chains in subshells
t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
t/lib-submodule-update.sh | 10 +-
t/t0000-basic.sh | 2 +-
t/t0001-init.sh | 2 +-
t/t0003-attributes.sh | 24 +-
t/t0021-conversion.sh | 4 +-
t/t0090-cache-tree.sh | 2 +-
t/t1004-read-tree-m-u-wf.sh | 8 +-
t/t1005-read-tree-reset.sh | 10 +-
t/t1008-read-tree-overlay.sh | 2 +-
t/t1020-subdirectory.sh | 2 +-
t/t1050-large.sh | 6 +-
t/t1300-config.sh | 2 +-
t/t1411-reflog-show.sh | 6 +-
t/t1507-rev-parse-upstream.sh | 6 +-
t/t1512-rev-parse-disambiguation.sh | 6 +-
t/t1700-split-index.sh | 2 +-
t/t2016-checkout-patch.sh | 24 +-
t/t2103-update-index-ignore-missing.sh | 2 +-
t/t2202-add-addremove.sh | 14 +-
t/t3000-ls-files-others.sh | 2 +-
t/t3006-ls-files-long.sh | 2 +-
t/t3008-ls-files-lazy-init-name-hash.sh | 8 +-
t/t3030-merge-recursive.sh | 340 +++++++++---------
t/t3050-subprojects-fetch.sh | 8 +-
t/t3102-ls-tree-wildcards.sh | 2 +-
t/t3301-notes.sh | 8 +-
t/t3303-notes-subtrees.sh | 12 +-
t/t3400-rebase.sh | 8 +-
t/t3402-rebase-merge.sh | 4 +-
t/t3404-rebase-interactive.sh | 6 +-
t/t3418-rebase-continue.sh | 4 +-
t/t3700-add.sh | 8 +-
t/t3701-add-interactive.sh | 16 +-
t/t3904-stash-patch.sh | 8 +-
t/t4001-diff-rename.sh | 2 +-
t/t4010-diff-pathspec.sh | 4 +-
t/t4012-diff-binary.sh | 6 +-
t/t4025-hunk-header.sh | 8 +-
t/t4041-diff-submodule-option.sh | 4 +-
t/t4060-diff-submodule-option-diff-format.sh | 2 +-
t/t4121-apply-diffs.sh | 2 +-
t/t5300-pack-object.sh | 2 +-
t/t5302-pack-index.sh | 2 +-
t/t5400-send-pack.sh | 4 +-
t/t5401-update-hooks.sh | 4 +-
t/t5405-send-pack-rewind.sh | 3 +-
t/t5406-remote-rejects.sh | 2 +-
t/t5500-fetch-pack.sh | 2 +-
t/t5505-remote.sh | 10 +-
t/t5512-ls-remote.sh | 4 +-
t/t5516-fetch-push.sh | 10 +-
t/t5517-push-mirror.sh | 10 +-
t/t5526-fetch-submodules.sh | 2 +-
t/t5531-deep-submodule-push.sh | 2 +-
t/t5543-atomic-push.sh | 2 +-
t/t5601-clone.sh | 2 +-
t/t5605-clone-local.sh | 2 +-
t/t5801-remote-helpers.sh | 2 +-
t/t6010-merge-base.sh | 2 +-
t/t6029-merge-subtree.sh | 16 +-
t/t6036-recursive-corner-cases.sh | 14 +-
t/t6042-merge-rename-corner-cases.sh | 8 +-
t/t6043-merge-rename-directories.sh | 2 +-
t/t7001-mv.sh | 2 +-
t/t7105-reset-patch.sh | 12 +-
t/t7201-co.sh | 41 ++-
t/t7301-clean-interactive.sh | 41 ++-
t/t7400-submodule-basic.sh | 12 +-
t/t7406-submodule-update.sh | 4 +-
t/t7408-submodule-reference.sh | 2 +-
t/t7501-commit.sh | 56 +--
t/t7506-status-submodule.sh | 10 +-
t/t7508-status.sh | 20 +-
t/t7610-mergetool.sh | 8 +-
t/t7810-grep.sh | 7 +-
t/t9001-send-email.sh | 10 +-
t/t9100-git-svn-basic.sh | 2 +-
t/t9101-git-svn-props.sh | 2 +-
t/t9104-git-svn-follow-parent.sh | 4 +-
t/t9119-git-svn-info.sh | 120 +++----
t/t9122-git-svn-author.sh | 6 +-
t/t9129-git-svn-i18n-commitencoding.sh | 2 +-
t/t9130-git-svn-authors-file.sh | 4 +-
t/t9134-git-svn-ignore-paths.sh | 6 +-
t/t9137-git-svn-dcommit-clobber-series.sh | 2 +-
t/t9138-git-svn-authors-prog.sh | 6 +-
t/t9146-git-svn-empty-dirs.sh | 12 +-
t/t9147-git-svn-include-paths.sh | 6 +-
t/t9164-git-svn-dcommit-concurrent.sh | 2 +-
...65-git-svn-fetch-merge-branch-of-branch.sh | 2 +-
t/t9200-git-cvsexportcommit.sh | 6 +-
t/t9400-git-cvsserver-server.sh | 6 +-
t/t9401-git-cvsserver-crlf.sh | 4 +-
t/t9600-cvsimport.sh | 2 +-
t/t9806-git-p4-options.sh | 2 +-
t/t9810-git-p4-rcs.sh | 2 +-
t/t9811-git-p4-label-import.sh | 2 +-
t/t9814-git-p4-rename.sh | 16 +-
t/t9815-git-p4-submit-fail.sh | 2 +-
t/t9830-git-p4-symlink-dir.sh | 2 +-
t/t9831-git-p4-triggers.sh | 2 +-
t/t9902-completion.sh | 4 +-
t/t9903-bash-prompt.sh | 2 +-
t/test-lib.sh | 245 ++++++++++++-
104 files changed, 810 insertions(+), 593 deletions(-)
--
2.18.0.419.gfe4b301394
next reply other threads:[~2018-06-26 7:30 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-26 7:29 Eric Sunshine [this message]
2018-06-26 7:29 ` [PATCH 01/29] t7508: use test_when_finished() instead of managing exit code manually Eric Sunshine
2018-06-26 7:29 ` [PATCH 02/29] t0001: use "{...}" block around "||" expression rather than subshell Eric Sunshine
2018-06-26 7:29 ` [PATCH 03/29] t1300: use sane_unset() to avoid breaking &&-chain Eric Sunshine
2018-06-26 7:29 ` [PATCH 04/29] t3303: use standard here-doc tag "EOF" to avoid fooling --chain-lint Eric Sunshine
2018-06-26 7:29 ` [PATCH 05/29] t5505: modernize and simplify hard-to-digest test Eric Sunshine
2018-06-26 7:29 ` [PATCH 06/29] t6036: fix broken "merge fails but has appropriate contents" tests Eric Sunshine
2018-06-26 8:44 ` Elijah Newren
2018-06-26 7:29 ` [PATCH 07/29] t7201: drop pointless "exit 0" at end of subshell Eric Sunshine
2018-06-26 7:29 ` [PATCH 08/29] t7400: fix broken "submodule add/reconfigure --force" test Eric Sunshine
2018-06-27 18:04 ` Stefan Beller
2018-06-26 7:29 ` [PATCH 09/29] t7810: use test_expect_code() instead of hand-rolled comparison Eric Sunshine
2018-06-26 7:29 ` [PATCH 10/29] t9001: fix broken "invoke hook" test Eric Sunshine
2018-06-26 17:07 ` Jonathan Tan
2018-06-26 7:29 ` [PATCH 11/29] t9104: use "{...}" block around "||" expression rather than subshell Eric Sunshine
2018-06-26 7:29 ` [PATCH 12/29] t9401: drop unnecessary nested subshell Eric Sunshine
2018-06-26 7:29 ` [PATCH 13/29] t/lib-submodule-update: fix broken "replace submodule must-fail" test Eric Sunshine
2018-06-27 18:30 ` [PATCH] t/lib-submodule-update: fix absorbing test Stefan Beller
2018-06-27 18:38 ` Eric Sunshine
2018-06-26 7:29 ` [PATCH 14/29] t: drop subshell with missing &&-chain in favor of simpler construct Eric Sunshine
2018-06-26 19:31 ` Junio C Hamano
2018-06-26 20:06 ` Eric Sunshine
2018-06-26 7:29 ` [PATCH 15/29] t: drop unnecessary terminating semicolons in subshell Eric Sunshine
2018-06-26 7:29 ` [PATCH 16/29] t: use test_might_fail() instead of manipulating exit code manually Eric Sunshine
2018-06-26 7:29 ` [PATCH 17/29] t: use test_must_fail() instead of checking " Eric Sunshine
2018-06-26 7:59 ` Luke Diamand
2018-06-26 8:58 ` Elijah Newren
2018-06-26 9:21 ` Eric Sunshine
2018-06-26 18:05 ` Johannes Sixt
2018-06-26 18:14 ` Eric Sunshine
2018-06-26 21:00 ` Johannes Sixt
2018-06-26 7:29 ` [PATCH 18/29] t0000-t0999: fix broken &&-chains in subshells Eric Sunshine
2018-06-26 7:29 ` [PATCH 19/29] t1000-t1999: " Eric Sunshine
2018-06-26 7:29 ` [PATCH 20/29] t2000-t2999: " Eric Sunshine
2018-06-26 7:29 ` [PATCH 21/29] t3000-t3999: " Eric Sunshine
2018-06-26 7:29 ` [PATCH 22/29] t3030: " Eric Sunshine
2018-06-26 7:29 ` [PATCH 23/29] t4000-t4999: " Eric Sunshine
2018-06-26 7:29 ` [PATCH 24/29] t5000-t5999: " Eric Sunshine
2018-06-26 7:29 ` [PATCH 25/29] t6000-t6999: " Eric Sunshine
2018-06-26 7:29 ` [PATCH 26/29] t7000-t7999: " Eric Sunshine
2018-06-26 7:29 ` [PATCH 27/29] t9000-t9999: " Eric Sunshine
2018-06-26 7:30 ` [PATCH 28/29] t9119: " Eric Sunshine
2018-06-26 7:30 ` [PATCH 29/29] t/test-lib: teach --chain-lint to detect " Eric Sunshine
2018-06-26 19:15 ` Junio C Hamano
2018-06-26 19:52 ` Eric Sunshine
2018-06-26 20:17 ` Jeff King
2018-06-26 20:22 ` Jeff King
2018-06-26 20:59 ` Eric Sunshine
2018-06-26 21:33 ` Elijah Newren
2018-06-26 21:42 ` Eric Sunshine
2018-06-26 20:46 ` Eric Sunshine
2018-06-26 21:01 ` Jeff King
2018-06-26 21:13 ` Eric Sunshine
2018-06-28 14:35 ` Jeff King
2018-06-27 2:15 ` Elijah Newren
2018-06-27 6:27 ` Johannes Sixt
2018-06-27 6:48 ` Eric Sunshine
2018-06-28 14:37 ` Jeff King
2018-06-26 21:09 ` Junio C Hamano
2018-06-26 9:20 ` [PATCH 00/29] t: detect and fix " Elijah Newren
2018-06-26 9:31 ` Eric Sunshine
2018-06-26 15:34 ` Elijah Newren
2018-06-26 19:38 ` Junio C Hamano
2018-06-26 21:25 ` Eric Sunshine
2018-06-26 22:31 ` Junio C Hamano
2018-06-27 0:22 ` Jonathan Nieder
2018-07-11 6:46 ` [PATCH v2 00/10] detect " Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 01/10] t/test-lib: teach --chain-lint to " Eric Sunshine
2018-07-11 21:37 ` Junio C Hamano
2018-07-12 10:50 ` Eric Sunshine
2018-07-12 16:56 ` Jeff King
2018-07-12 19:32 ` Eric Sunshine
2018-07-12 19:54 ` Junio C Hamano
2018-07-30 18:13 ` Jonathan Nieder
2018-07-30 19:06 ` [PATCH 0/2] subtree: fix &&-chain and simplify tests (Re: [PATCH v2 01/10] t/test-lib: teach --chain-lint to detect broken &&-chains in subshells) Jonathan Nieder
2018-07-30 19:07 ` [PATCH 1/2] subtree test: add missing && to &&-chain Jonathan Nieder
2018-07-30 19:07 ` [PATCH 2/2] subtree test: simplify preparation of expected results Jonathan Nieder
2018-07-30 20:25 ` [PATCH v2 01/10] t/test-lib: teach --chain-lint to detect broken &&-chains in subshells Eric Sunshine
2018-07-30 20:59 ` Jonathan Nieder
2018-07-30 21:38 ` Eric Sunshine
2018-07-31 12:50 ` Jeff King
2018-07-31 18:55 ` Eric Sunshine
2018-07-31 19:08 ` Jeff King
2018-08-23 18:02 ` Ævar Arnfjörð Bjarmason
2018-08-23 18:27 ` Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 02/10] t/Makefile: add machinery to check correctness of chainlint.sed Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 03/10] t/chainlint: add chainlint "basic" test cases Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 04/10] t/chainlint: add chainlint "whitespace" " Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 05/10] t/chainlint: add chainlint "one-liner" " Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 06/10] t/chainlint: add chainlint "nested subshell" " Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 07/10] t/chainlint: add chainlint "loop" and "conditional" " Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 08/10] t/chainlint: add chainlint "cuddled" " Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 09/10] t/chainlint: add chainlint "complex" " Eric Sunshine
2018-07-11 6:46 ` [PATCH v2 10/10] t/chainlint: add chainlint "specialized" " Eric Sunshine
2018-08-07 8:21 ` [PATCH 0/5] chainlint: improve robustness against "unusual" shell coding Eric Sunshine
2018-08-07 8:21 ` [PATCH 1/5] chainlint: match arbitrary here-docs tags rather than hard-coded names Eric Sunshine
2018-08-08 22:50 ` Jeff King
2018-08-09 5:58 ` Eric Sunshine
2018-08-09 14:26 ` Jeff King
2018-08-07 8:21 ` [PATCH 2/5] chainlint: recognize multi-line $(...) when command cuddled with "$(" Eric Sunshine
2018-08-07 8:21 ` [PATCH 3/5] chainlint: let here-doc and multi-line string commence on same line Eric Sunshine
2018-08-07 8:21 ` [PATCH 4/5] chainlint: recognize multi-line quoted strings more robustly Eric Sunshine
2018-08-07 8:21 ` [PATCH 5/5] chainlint: add test of pathological case which triggered false positive Eric Sunshine
2018-08-08 22:53 ` [PATCH 0/5] chainlint: improve robustness against "unusual" shell coding Jeff King
2018-08-09 0:44 ` Junio C Hamano
2018-08-13 8:47 ` [PATCH v2 0/6] " Eric Sunshine
2018-08-13 8:47 ` [PATCH v2 1/6] chainlint: match arbitrary here-docs tags rather than hard-coded names Eric Sunshine
2018-08-13 8:47 ` [PATCH v2 2/6] chainlint: match 'quoted' here-doc tags Eric Sunshine
2018-08-13 19:27 ` Junio C Hamano
2018-08-13 20:12 ` Eric Sunshine
2018-08-13 8:47 ` [PATCH v2 3/6] chainlint: recognize multi-line $(...) when command cuddled with "$(" Eric Sunshine
2018-08-13 8:47 ` [PATCH v2 4/6] chainlint: let here-doc and multi-line string commence on same line Eric Sunshine
2018-08-13 8:47 ` [PATCH v2 5/6] chainlint: recognize multi-line quoted strings more robustly Eric Sunshine
2018-08-13 8:47 ` [PATCH v2 6/6] chainlint: add test of pathological case which triggered false positive Eric Sunshine
2018-08-15 18:45 ` [PATCH v3 0/6] chainlint: improve robustness against "unusual" shell coding Eric Sunshine
2018-08-15 18:45 ` [PATCH v3 1/6] chainlint: match arbitrary here-docs tags rather than hard-coded names Eric Sunshine
2018-08-15 18:45 ` [PATCH v3 2/6] chainlint: match quoted here-doc tags Eric Sunshine
2018-08-15 18:45 ` [PATCH v3 3/6] chainlint: recognize multi-line $(...) when command cuddled with "$(" Eric Sunshine
2018-08-15 18:45 ` [PATCH v3 4/6] chainlint: let here-doc and multi-line string commence on same line Eric Sunshine
2018-08-15 18:45 ` [PATCH v3 5/6] chainlint: recognize multi-line quoted strings more robustly Eric Sunshine
2018-08-15 18:45 ` [PATCH v3 6/6] chainlint: add test of pathological case which triggered false positive Eric Sunshine
2018-08-29 9:45 ` [PATCH] chainlint: match "quoted" here-doc tags Eric Sunshine
2018-08-29 17:57 ` 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=20180626073001.6555-1-sunshine@sunshineco.com \
--to=sunshine@sunshineco.com \
--cc=git@vger.kernel.org \
--cc=jonathantanmy@google.com \
--cc=jrnieder@gmail.com \
--cc=newren@gmail.com \
--cc=peff@peff.net \
--cc=sbeller@google.com \
--cc=szeder@ira.uka.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).