So I stepped back for a bit and thought about the the problem people
wanted solved.  They don't want this:

  ok 1 - test 1
  not ok 2 - test 2
  #   Failed test 'test 2'
  #   at t/foo.t line 12.
  #          got: '3'
  #     expected: '4'
  not ok 3 - whee!
  #   Failed test 'whee!'
  #   at t/foo.t line 13.
  # +----+-----+----------+
  # | Elt|Got  |Expected  |
  # +----+-----+----------+
  # |   0|1    |1         |
  # |   1|2    |2         |
  # *   2|3    |three     *
  # |   3|4    |4         |
  # +----+-----+----------+
  ok 4 - last
  ok 5 - no warnings

To turn into this:

  ok 1 - test 1
  Failed test 'test 2'
  #   at t/foo.t line 12.
  not ok 2 - test 2
  #          got: '3'
  #     expected: '4'
  # +----+-----+----------+
  # | Elt|Got  |Expected  |
  # +----+-----+----------+
  # |   0|1    |1         |
  not ok 3 - whee!
  #   Failed test 'whee!'
  #   at t/foo.t line 13.
  # |   1|2    |2         |
  # *   2|3    |three     *
  ok 4 - last
  # |   3|4    |4         |
  # +----+-----+----------+
  ok 5 - no warnings

The latter is virtually impossible to read but it's a fairly common
complaint.  But I think that provides us with our answer.  The streams
only need to be in synch when runtests (or prove) is in VERBOSE mode. 
There is no information lost and everyone's happy, yes?  Otherwise, let
STDERR be STDERR and the problem is solved.  Does this work?

Cheers,
Ovid

--

Buy the book -- http://www.oreilly.com/catalog/perlhks/
Perl and CGI -- http://users.easystreet.com/ovid/cgi_course/

Reply via email to