X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FVPIT%2FTestHelpers.pm;h=6a3655e9646aa45649087d5e063ecfd42d71a9a5;hb=0061dae2bcee89818b69face072da887029ae488;hp=9054314e3be4a04356cadac696e7f8ddd88f2d9d;hpb=3b6eb95acf3764c1877a4309b0f9362323d71938;p=perl%2Fmodules%2FVPIT-TestHelpers.git diff --git a/lib/VPIT/TestHelpers.pm b/lib/VPIT/TestHelpers.pm index 9054314..6a3655e 100644 --- a/lib/VPIT/TestHelpers.pm +++ b/lib/VPIT/TestHelpers.pm @@ -142,12 +142,8 @@ sub load_or_skip_all { return $loaded; } -sub run_perl { - my $code = shift; - - if ($code =~ /"/) { - die 'Double quotes in evaluated code are not portable'; - } +sub fresh_perl_env (&) { + my $handler = shift; my ($SystemRoot, $PATH) = @ENV{qw}; my $ld_name = $Config::Config{ldlibpthname}; @@ -166,7 +162,20 @@ sub run_perl { } } - system { $perl } $perl, '-T', map("-I$_", @INC), '-e', $code; + return $handler->($perl, '-T', map("-I$_", @INC)); +} + +sub run_perl { + my $code = shift; + + if ($code =~ /"/) { + die 'Double quotes in evaluated code are not portable'; + } + + fresh_perl_env { + my ($perl, @perl_args) = @_; + system { $perl } $perl, @perl_args, '-e', $code; + }; } sub init_capture { @@ -179,7 +188,10 @@ sub init_capture { load_or_skip_all 'Socket', '0', [ ]; } - return capture => \&capture; + return ( + capture => \&capture, + capture_perl => \&capture_perl, + ); } # Inspired from IPC::Cmd @@ -319,6 +331,19 @@ sub capture { } } +sub capture_perl { + my $code = shift; + + if ($code =~ /"/) { + die 'Double quotes in evaluated code are not portable'; + } + + fresh_perl_env { + my @perl = @_; + capture @perl, '-e', $code; + }; +} + sub init_threads { my ($pkg, $threadsafe, $force_var) = @_;