Running perl from a test on Windows

[email protected] (Buddy Burden)
Newsgroups perl.qa
Message-ID <CAL0mxoT0Dz1+fLp6FPjQF=39p04zMLfoUqgxCVUS_5yt1dtjeQ@mail.gmail.com>
Guys,

Okay, my Google-fu is failing me, so hopefully one of you guys can help me out.

For a test, I need to run a snippet of Perl and collect the output.
However, if it rus in the current interpreter, it will load a module
that I need not to be loaded ('cause I'm also going to test if my code
properly loads it).  So I want to run it in a separate instance of
Perl.

First (naive) attempt:

    my $output = `$^X -e '$cmd'`;

This works fine on Linux, but fails on Windows.  Happily, as soon as I
saw the failures, I recognized I had a quoting problem.  No worries, I
said: let's just bypass the shell altogether:

    use IPC::System::Simple qw<capturex>;
    my $output = capturex($^X, '-e', $cmd);

and then added IPC::System::Simple as a test_requires.  That certainly
_changed_ the Windows failures: :-/

C:\strawberry\perl\bin\perl.exe "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'inc', 'blib\lib', 'blib\arch')" t/*.t
t/00.load.t .................. ok
The system cannot find the path specified.
t/data_printer.t ............. skipped: Data::Printer required for
testing pretty dumping
syntax error at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
"C:\strawberry\perl\bin\perl.exe" unexpectedly returned exit value 255
at t/default_funcs.t line 30.
t/default_funcs.t ............
Dubious, test returned 255 (wstat 65280, 0xff00)
No subtests run

I assume the output is intermingled due to parallelization, but I
wanted to reproduce it faithfully.  This seems to be consistent
between ActiveState and Strawberry, but interestingly Cygwin has no
issues.  And all other OSes pass, so it's obviously not a syntax error
in my snippet.

So, generally speaking, how _should_ one go about spawning a separate
instance of perl -e inside a test, reliably, on Windows?


            -- Buddy
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.