X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FTest-Leaner.git;a=blobdiff_plain;f=t%2Flib%2FTest%2FLeaner%2FTestHelper.pm;fp=t%2Flib%2FTest%2FLeaner%2FTestHelper.pm;h=fffb0012e5b99cadd006606573e30df1d1194a74;hp=0000000000000000000000000000000000000000;hb=e63601e117e265834dc41b4001bcacfa73d270df;hpb=9497e7098591c7bbc659406d4ffae555a7b8acc8 diff --git a/t/lib/Test/Leaner/TestHelper.pm b/t/lib/Test/Leaner/TestHelper.pm new file mode 100644 index 0000000..fffb001 --- /dev/null +++ b/t/lib/Test/Leaner/TestHelper.pm @@ -0,0 +1,44 @@ +package Test::Leaner::TestHelper; + +use strict; +use warnings; + +my $memory_stream; +my $buf_ref; + +sub capture_to_buffer { + return unless $] >= 5.008; + + die "Can't call capture_to_buffer twice" if $memory_stream; + + $buf_ref = \$_[0]; + open $memory_stream, '>', $buf_ref + or die 'could not create the in-memory file'; + + Test::Leaner::tap_stream($memory_stream); + + return 1; +} + +# The ";&" prototype does not work well with perl 5.6 +sub reset_buffer (&) { + my $code = shift; + + die "The memory stream has not been initialized" unless $memory_stream; + + $$buf_ref = ''; + seek $memory_stream, 0, 0; + + goto $code if $code; +} + +our @EXPORT = qw< + capture_to_buffer + reset_buffer +>; + +use Exporter (); + +sub import { goto &Exporter::import } + +1;