Currently Test::Builder does not print anything ( plan, use_ok results, etc ) if $^C is true. However to test B::C I'd like to have a way to force the output.
Reason: ---- #!perl BEGIN { print "1..2\n"; print "ok 1\n"; } print "ok 2\n"; ---- is failing because the 1..2 ok 1 is printed at compile time, and the resulting executable prints just ok 2 I have modified perlcc to take a --testsuite switch that enables BEGIN output replay: it saves the compile time output, and adds to the .c file eval_pv( "print qq{$compile_time_output}" ); However Test::Builder is inhibiting any output if $^C is true, so most test using Test::Simple/Test::More are failing when compiled with B::C My local modification to T::B is --- ./lib/Test/Builder.pm.orig Wed Nov 21 15:26:48 2001 +++ ./lib/Test/Builder.pm Sun Dec 30 16:52:42 2001 @@ -569,5 +569,5 @@ # Prevent printing headers when compiling (i.e. -c) - return if $^C; + return if $^C && !$ENV{I_WANT_BEGIN_OUT}; # Escape each line with a #. @@ -600,5 +600,5 @@ # Prevent printing headers when only compiling. Mostly for when # tests are deparsed with B::Deparse - return if $^C; + return if $^C && !$ENV{I_WANT_BEGIN_OUT}; local($\, $", $,) = (undef, ' ', ''); @@ -681,5 +681,5 @@ } -unless( $^C ) { +unless( $^C && !$ENV{I_WANT_BEGIN_OUT}) { # We dup STDOUT and STDERR so people can change them in their # test suites while still getting normal test output. I don't care for the variable name, but I'd really like to have this feature. Regards Mattia