On Tue, Oct 10, 2017 at 10:10:19AM -0400, Jeff King wrote: > That said, I'm still puzzled why it would return zero output. Strace > shows that the read from stdin is getting no input. I suspect this may > have to do with how we redirect stdin in test-terminal.perl. > > See 18d8c26930 (test_terminal: redirect child process' stdin to a pty, > 2015-08-04), which claims there's some raciness with closing the > descriptor. Ah, yeah, I think that is it. Try: echo input | test_terminal sed s/^/foo:/ it will randomly succeed or fail, depending on whether sed manages to read the input before the stdin terminal is closed. I'm not sure of an easy way to fix test-terminal, but we could work around it like this (which also uses "-p" to actually invoke the pager, and uses a pager that makes it clear when it's being run): diff --git a/t/t9002-column.sh b/t/t9002-column.sh index 9441145bf0..d322c3b745 100755 --- a/t/t9002-column.sh +++ b/t/t9002-column.sh @@ -180,14 +180,14 @@ EOF test_expect_success TTY '20 columns, mode auto, pager' ' cat >expected <<\EOF && -one seven -two eight -three nine -four ten -five eleven -six +paged:one seven +paged:two eight +paged:three nine +paged:four ten +paged:five eleven +paged:six EOF - test_terminal env PAGER="cat|cat" git column --mode=auto <lista >actual && + test_terminal env PAGER="sed s/^/paged:/" sh -c "git -p column --mode=auto <lista" >actual && test_cmp expected actual ' test_done All that said, I think I'd just as soon test a real command like "git tag", which doesn't care about reading from stdin. -Peff