From: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> For the sake of newcomers to the project, I have several times over the last couple years thought to update t/README to explain the rather cryptic and terse problem annotations emitted by chainlint (i.e. "?!FOO?!"), but I never got around to it. However, a review comment[*] I posted recently suggesting an update to CodingGuidelines reminded me of the need to update t/README. As such, I set about to do so but quickly realized that it would be far more useful to newcomers for chainlint to emit friendly problem descriptions rather than expecting users to know to consult t/README to interpret the existing cryptic annotations. This patch series, which improves chainlint's output, is the result of that epiphany. [*]: https://lore.kernel.org/git/CAPig+cQLr+vAzkt8UJNVCeE8osGEcEfFunG36oqxa0k8JamJzQ@xxxxxxxxxxxxxx/ Eric Sunshine (2): chainlint: make error messages self-explanatory chainlint: reduce annotation noise-factor t/chainlint.pl | 33 ++++++++++++++----- t/chainlint/arithmetic-expansion.expect | 2 +- t/chainlint/block.expect | 8 ++--- t/chainlint/broken-chain.expect | 2 +- t/chainlint/case.expect | 4 +-- t/chainlint/chain-break-false.expect | 2 +- t/chainlint/chained-block.expect | 2 +- t/chainlint/chained-subshell.expect | 4 +-- t/chainlint/command-substitution.expect | 2 +- t/chainlint/complex-if-in-cuddled-loop.expect | 2 +- t/chainlint/cuddled.expect | 4 +-- t/chainlint/for-loop.expect | 8 ++--- t/chainlint/function.expect | 4 +-- t/chainlint/here-doc-body-indent.expect | 2 +- t/chainlint/here-doc-body-pathological.expect | 4 +-- t/chainlint/here-doc-body.expect | 4 +-- t/chainlint/here-doc-double.expect | 2 +- t/chainlint/here-doc-indent-operator.expect | 2 +- .../here-doc-multi-line-command-subst.expect | 2 +- t/chainlint/here-doc-multi-line-string.expect | 2 +- t/chainlint/if-condition-split.expect | 2 +- t/chainlint/if-in-loop.expect | 4 +-- t/chainlint/if-then-else.expect | 4 +-- t/chainlint/inline-comment.expect | 2 +- t/chainlint/loop-detect-failure.expect | 2 +- t/chainlint/loop-in-if.expect | 8 ++--- t/chainlint/multi-line-string.expect | 2 +- t/chainlint/negated-one-liner.expect | 4 +-- t/chainlint/nested-cuddled-subshell.expect | 6 ++-- t/chainlint/nested-here-doc.expect | 2 +- t/chainlint/nested-loop-detect-failure.expect | 6 ++-- t/chainlint/nested-subshell-comment.expect | 2 +- t/chainlint/nested-subshell.expect | 2 +- t/chainlint/not-heredoc.expect | 2 +- t/chainlint/one-liner-for-loop.expect | 2 +- t/chainlint/one-liner.expect | 6 ++-- t/chainlint/pipe.expect | 2 +- t/chainlint/semicolon.expect | 12 +++---- t/chainlint/subshell-here-doc.expect | 2 +- t/chainlint/subshell-one-liner.expect | 10 +++--- t/chainlint/token-pasting.expect | 8 ++--- t/chainlint/unclosed-here-doc-indent.expect | 2 +- t/chainlint/unclosed-here-doc.expect | 2 +- t/chainlint/while-loop.expect | 8 ++--- t/test-lib.sh | 2 +- 45 files changed, 108 insertions(+), 91 deletions(-) -- 2.46.0