When checking a git command's output with 'test_i18ngrep', it's tempting to conveniently pipe the git command's standard output into 'test_i18ngrep'. Unfortunately, this is an anti-pattern, because it hides the git command's exit code, and the test could continue even if the command exited with error. Add a bit of linting to 'test_i18ngrep' to detect when data is fed to its standard input and to error out with a "bug in the test script" message. Note that this change will also forbid cases where 'test_i18ngrep' would legitimately read its standard input, e.g. - when its standard input is redirected from a file, or - when a git command's standard output is first written to an intermediate file, which is then preprocessed by a non-git command before the results are piped into 'test_i18ngrep'. See two of the previous patches for the only such cases we had in our test suite. However, reliably preventing this antipattern is arguably more important than supporting these cases, which can be worked around by only minor inconveniences. Signed-off-by: SZEDER Gábor <szeder.dev@xxxxxxxxx> --- t/test-lib-functions.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 92ed02937..e381d50d0 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -719,6 +719,10 @@ test_i18ncmp () { # under GETTEXT_POISON this pretends that the command produced expected # results. test_i18ngrep () { + ( read line ) && + error "bug in the test script: data on test_i18ngrep's stdin;" \ + "perhaps a git command's output is piped into it?" + if test -n "$GETTEXT_POISON" then : # pretend success -- 2.16.1.155.g5159265b1