Re: [PATCH 1/2] t9902: verify that completion does not print anything
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 12, 2024, 10:08 UTC
- Message-ID
- <d978494d-6c48-5923-4745-c42a39e1187a@gmx.de>
- In-Reply-To
- <73406ca9c8f38ac2ad8f0e32d6d81f1566a6b4d1.1704969119.git.ps@pks.im>
Hi Patrick,
On Thu, 11 Jan 2024, Patrick Steinhardt wrote:
Show 23 quoted lines
> The Bash completion script must not print anything to either stdout or > stderr. Instead, it is only expected to populate certain variables. > Tighten our `test_completion ()` test helper to verify this requirement. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > t/t9902-completion.sh | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh > index aa9a614de3..78cb93bea7 100755 > --- a/t/t9902-completion.sh > +++ b/t/t9902-completion.sh > @@ -87,9 +87,11 @@ test_completion () > else > sed -e 's/Z$//' |sort >expected > fi && > - run_completion "$1" && > + run_completion "$1" >"$TRASH_DIRECTORY"/output 2>&1 && > sort out >out_sorted && > - test_cmp expected out_sorted > + test_cmp expected out_sorted && > + test_must_be_empty "$TRASH_DIRECTORY"/output &&
It seems that this fails CI on macOS, most likely because we're running with `set -x` and that output somehow ends up in `output`, see e.g. here: https://github.com/git/git/actions/runs/7496790359/job/20409405194#step:4:1880
[...] ++ test_completion 'git switch ' ++ test 1 -gt 1 ++ sed -e 's/Z$//' ++ sort ++ run_completion 'git switch ' ++ sort out ++ test_cmp expected out_sorted ++ test 2 -ne 2 ++ eval 'diff -u' '"$@"' +++ diff -u expected out_sorted ++ test_must_be_empty '/Users/runner/work/git/git/t/trash directory.t9902-completion/output' ++ test 1 -ne 1 ++ test_path_is_file '/Users/runner/work/git/git/t/trash directory.t9902-completion/output' ++ test 1 -ne 1 ++ test -f '/Users/runner/work/git/git/t/trash directory.t9902-completion/output' ++ test -s '/Users/runner/work/git/git/t/trash directory.t9902-completion/output' ++ echo ''\''/Users/runner/work/git/git/t/trash directory.t9902-completion/output'\'' is not empty, it contains:' '/Users/runner/work/git/git/t/trash directory.t9902-completion/output' is not empty, it contains: ++ cat '/Users/runner/work/git/git/t/trash directory.t9902-completion/output' ++ local -a COMPREPLY _words ++ local _cword [...]
Maybe this is running in Dash and therefore `BASH_XTRACEFD=4` in `test-lib.sh` has not the intended effect?
Ciao, Johannes