X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FVPIT%2FTestHelpers.pm;h=0f37b40b6e3026eda9cb99dfb747276a4080aa71;hb=f24eb57f90ecd534833e5b4237144240d4562290;hp=763c7115a5f22e780dc04b1513d28b3d17526d6b;hpb=09bc4632d4b12d88192269d8e57251b41e157380;p=perl%2Fmodules%2FVPIT-TestHelpers.git diff --git a/lib/VPIT/TestHelpers.pm b/lib/VPIT/TestHelpers.pm index 763c711..0f37b40 100644 --- a/lib/VPIT/TestHelpers.pm +++ b/lib/VPIT/TestHelpers.pm @@ -29,6 +29,20 @@ sub export_to_pkg { return 1; } +sub sanitize_prefix { + my $prefix = shift; + + if (defined $prefix) { + if (length $prefix and $prefix !~ /_$/) { + $prefix .= '_'; + } + } else { + $prefix = ''; + } + + return $prefix; +} + my %default_exports = ( load_or_skip => \&load_or_skip, load_or_skip_all => \&load_or_skip_all, @@ -225,17 +239,7 @@ sub fresh_perl_env (&) { } sub init_run_perl { - my $prefix = shift; - - if (defined $prefix) { - if (length $prefix and $prefix !~ /_$/) { - $prefix .= '_'; - } - } else { - $prefix = ''; - } - - my $p = $prefix; + my $p = sanitize_prefix(shift); return ( run_perl => \&run_perl, @@ -264,7 +268,17 @@ sub run_perl { Import : - use VPIT::TestHelpers 'capture' + use VPIT::TestHelpers capture => [ $p ]; + +where : + +=over 8 + +=item - + +C<$p> is prefixed to the constants exported by this feature (defaults to C<''>). + +=back =item * @@ -298,8 +312,16 @@ C =item - +C (possibly prefixed by C<$p>) + +=item - + C +=item - + +C (possibly prefixed by C<$p>) + =back =back @@ -307,6 +329,8 @@ C =cut sub init_capture { + my $p = sanitize_prefix(shift); + skip_all 'Cannot capture output on VMS' if $^O eq 'VMS'; load_or_skip_all 'IO::Handle', '0', [ ]; @@ -317,8 +341,10 @@ sub init_capture { } return ( - capture => \&capture, - capture_perl => \&capture_perl, + capture => \&capture, + "${p}CAPTURE_FAILED" => \&capture_failed_msg, + capture_perl => \&capture_perl, + "${p}CAPTURE_PERL_FAILED" => \&capture_perl_failed_msg, ); } @@ -459,6 +485,15 @@ sub capture { } } +sub capture_failed_msg { + my $details = shift; + + my $msg = 'Could not capture command output'; + $msg .= " ($details)" if defined $details; + + return $msg; +} + sub capture_perl { my $code = shift; @@ -472,6 +507,15 @@ sub capture_perl { }; } +sub capture_perl_failed_msg { + my $details = shift; + + my $msg = 'Could not capture perl output'; + $msg .= " ($details)" if defined $details; + + return $msg; +} + =head2 C =over 4