- could even detect if line buffering is happening
It can be also detected with what I have proposed.
- fragile on console output because of scrolling (hence the move to top of screenbuffer)
It doesn't really make sense to test console output. It can't be buffered because it will break mixing stdout and stderr.
- need more work on PIPE
If tests on pipes are needed it should be easy to check if data is available on other end.
I think you're trying to test to much ending depending on implementation details / object internals. We should focus on things observable by applications. I'm not happy with the change made in native ucrtbase (one can create a bug saying that it's much slower in some scenarios when stderr is unbuffered) but I think we should follow native development. What I want to make sure is to have the tests failing if native decides to restore old behavior.