]> git.vpit.fr Git - perl/modules/VPIT-TestHelpers.git/commitdiff
Implement capture_perl()
authorVincent Pit <vince@profvince.com>
Thu, 9 Apr 2015 14:33:31 +0000 (11:33 -0300)
committerVincent Pit <vince@profvince.com>
Thu, 9 Apr 2015 14:33:31 +0000 (11:33 -0300)
lib/VPIT/TestHelpers.pm

index 7dfd15eb63f108f9001d8f906fba2d53a92b9056..6a3655e9646aa45649087d5e063ecfd42d71a9a5 100644 (file)
@@ -188,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
@@ -328,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) = @_;