lib/Parrot/Test.pm has several lines like
$cmd = qq{(cd $path_to_parrot && $parrot $args "$code_f")};
As this command is executed with system(), it should not include "&&".
All tests on Win98/VC6 are failing with "Command not found" due to this.
This idiom shows up in several places. :( Here's a quick scan.
./languages/m4/t/basic/003_getopt.t
./languages/m4/t/basic/012_eval.t
./languages/m4/t/freezing/001_freeze.t
./languages/m4/t/freezing/002_many_files.t
./languages/m4/t/harness (documentation)
./languages/parrot_compiler/lib/Parrot/Test/ParrotCompiler.pm
./languages/parrot_compiler/t/harness (documentation)
./languages/python/t/harness (documentation)
./languages/tcl/README (documentation)
./languages/testall (documentation)
./lib/Parrot/Test/m4.pm
./lib/Parrot/Test/Tcl.pm
./lib/Parrot/Test.pm
The cross-platform version of
system("cd $dir && command");
is
my($dir, @command) = @_;
my $orig_dir = cwd;
chdir $dir;
my $ret = system(@command);
chdir $orig_dir;
return $ret;
which I have added to Parrot::Test::_run_command() and made it publicly
available. Lots of code was using it already anyway.
Also languages/m4/M4/Test.pm, languages/perl6/P6C/TestCompiler.pm,
languages/scheme/Scheme/Test.pm, lib/Parrot/Configure/Step.pm, have their
own probably duplicate _run_commands() which should probably be eliminated
but I'm not going to do in this patch.
I've also left the "cd dir && foo" idiom used in documentation alone,
though again this should probably be changed.
Finally I haven't fixed the m4 tests as they're just straight `` not going
through run_command() and require a bit more time to fix than I have at the
moment.
jens