Re: [PATCH 1/2] worktree: send "chatty" messages to stderr
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-12-03 09:19:42
On Thu, Dec 02 2021, Eric Sunshine wrote:
The order in which the stdout and stderr streams are flushed is not
guaranteed to be the same across platforms or `libc` implementations.
This lack of determinism can lead to anomalous and potentially confusing
output if normal (stdout) output is flushed after error (stderr) output.
For instance, the following output which clearly indicates a failure due
to a fatal error:
% git worktree add ../foo bar
Preparing worktree (checking out 'bar')
fatal: 'bar' is already checked out at '.../wherever'
has been reported[1] on Microsoft Windows to appear as:
% git worktree add ../foo bar
fatal: 'bar' is already checked out at '.../wherever'
Preparing worktree (checking out 'bar')Makes sense.
quoted hunk ↗ jump to hunk
test_expect_success 'repair incorrect gitdir' '@@ -141,10 +139,9 @@ test_expect_success 'repair incorrect gitdir' ' git worktree add --detach orig && sed s,orig/\.git$,moved/.git, .git/worktrees/orig/gitdir >expect && mv orig moved && - git worktree repair moved >out 2>err && + git worktree repair moved 2>err && test_cmp expect .git/worktrees/orig/gitdir && - test_i18ngrep "gitdir incorrect" out && - test_must_be_empty err + test_i18ngrep "gitdir incorrect" err '
This is just a "for bonus points", but maybe we could/should while we're
at it harden and make the tests more exhaustive by checking the full
output of both, e.g.
cat >actual.out <<-\EOF &&
Preparing worktree (checking out 'bar')
EOF
cat >actual.err <<-\EOF &&
fatal: 'bar' is already checked out at '.../wherever'
EOF
<cmd> [...]
test_cmp expect.out actual.out &&
test_cmp expect.err actual.err
Doesn't need a re-roll etc., just if you're interested... :)