Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: > That's very reminiscent of [1]. Although, unlike [1], the output > presented to the user in this case is (I suppose) less likely to be > messed up; only the combined captured output is probably affected. So, > capturing stdout and stderr separately would indeed be a good idea. Hmph, something along this line? It loses to capture how the output should be intermixed, which is essential to validate what the end-user should see. As we can see in the attached patch, we cannot express that "Unknown ..." should come in between two "Stage addition?" questions, which is a downside. Between adding fflush() before err() writes, and updating err() to write to the standard output stream, I am in favor of the latter for its simplicity (of the mental model of the resulting code, not of the patch that is required to do so). diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index ed7e414649..a8dfebd8d7 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -64,11 +64,12 @@ test_expect_success 'unknown command' ' git add -N command && git diff command >expect && cat >>expect <<-EOF && - (1/1) Stage addition [y,n,q,a,d,e,p,?]? Unknown command ${SQ}W${SQ} (use ${SQ}?${SQ} for help) - (1/1) Stage addition [y,n,q,a,d,e,p,?]?$SP + (1/1) Stage addition [y,n,q,a,d,e,p,?]? (1/1) Stage addition [y,n,q,a,d,e,p,?]?$SP EOF - git add -p -- command <command >actual 2>&1 && - test_cmp expect actual + echo "Unknown command ${SQ}W${SQ} (use ${SQ}?${SQ} for help)" >expect.error && + git add -p -- command <command >actual 2>actual.error && + test_cmp expect actual && + test_cmp expect.error actual.error ' test_expect_success 'setup (initial)' '