about summary refs log tree commit homepage
path: root/t/test_common.perl
diff options
context:
space:
mode:
Diffstat (limited to 't/test_common.perl')
-rw-r--r--t/test_common.perl20
1 files changed, 13 insertions, 7 deletions
diff --git a/t/test_common.perl b/t/test_common.perl
index 8827362..3a073cf 100644
--- a/t/test_common.perl
+++ b/t/test_common.perl
@@ -6,8 +6,9 @@ use v5.12;
 use parent qw(Exporter);
 use Test::More;
 use File::Temp 0.19 (); # 0.19 for ->newdir
-our $mwrap_src = slurp('blib/script/mwrap-perl');
-our $mwrap_tmp = File::Temp->newdir('mwrap-perl-XXXX', TMPDIR => 1);
+our $mwrap_src;
+$mwrap_src = slurp('blib/script/mwrap-perl') if -e 'script/mwrap-perl';
+our $mwrap_tmp = File::Temp->newdir('mwrap-XXXX', TMPDIR => 1);
 our $mwrap_out = "$mwrap_tmp/out";
 our $mwrap_err = "$mwrap_tmp/err";
 our @EXPORT = qw(mwrap_run slurp $mwrap_err $mwrap_out $mwrap_src $mwrap_tmp);
@@ -20,9 +21,6 @@ sub slurp {
 
 sub mwrap_run {
         my ($msg, $env, @args) = @_;
-        unless (grep(/\A-.+\bMwrap\b/, @args)) {
-                unshift @args, '-MDevel::Mwrap';
-        }
         my $pid = fork;
         if ($pid == 0) {
                 while (my ($k, $v) = each %$env) {
@@ -30,8 +28,16 @@ sub mwrap_run {
                 }
                 open STDERR, '>', $mwrap_err or die "open: $!";
                 open STDOUT, '>', $mwrap_out or die "open: $!";
-                @ARGV = ($^X, @args);
-                eval $mwrap_src;
+                if (defined $mwrap_src) {
+                        unless (grep(/\A-.+\bMwrap\b/, @args)) {
+                                unshift @args, '-MDevel::Mwrap';
+                        }
+                        @ARGV = ($^X, @args);
+                        eval $mwrap_src;
+                } else {
+                        my $ruby = $ENV{RUBY} // 'ruby';
+                        exec $ruby, '-Ilib', 'bin/mwrap', $ruby, @args;
+                }
                 die "fail: $! ($@)";
         }
         if (defined(wantarray)) {