On Wed, 4 Jun 2003, Stas Bekman wrote:
Randy Kobes wrote:
Hi, On Win32, the apache/subprocess tests fail on Win32. This is due to the following: currently, the tests do something like @argv = qw(potentially something); $command = catfile $target_dir, "some_script.pl"; Apache::SubProcess::spawn_proc_prog($r, $command, [EMAIL PROTECTED]); The problem on Win32 is that $command isn't associated with Perl. To fix this, one could do one of two things.
- create a "some_script.bat" with pl2bat, use $command = catfile $target_dir, "some_script.bat"; and insert a $r->subprocess_env->set(PATH => $Config{bin}); before invoking the script.
- use $command = $Config{perlpath}; # or perhaps better $^X @list = ("some_script.pl", @argv); Apache::SubProcess::spawn_proc_prog($r, $command, [EMAIL PROTECTED]); (the potentially nicer looking $command = "$Config{perlpath} some_script.pl"; Apache::SubProcess::spawn_proc_prog($r, $command, [EMAIL PROTECTED]); doesn't work - I think it interprets $command as one single command - Win32 is famous for problems with quoting command-line things).
Either of the above works - does anyone have a strong preference one way or another?
I prefer 2nd, since it doesn't force us to modify the filename. However I'd check whether $Config{perlpath} works everywhere. Perhaps check perl test suite to see what it uses? I remember there was a discussion of may be using $^X. or both.
Would you believe that $^X is reported as Apache.exe?
oops
otherwise +1
Incidentally, for both, subtests 3 and 4 need some massaging for line endings - either have my $value = "some text\r\n"; or use $output =~ s!\r!!; Although, with perlio the :crlf filter would be available, which would be neater ...
what about mac? there is no \r there. I guess we need to do what CGI.pm does or is there a standard module that defines $CRLF?
In any case we could probably always write "\r\n" (e.g. "some text\r\n") and then after reading the output do:
s/[\r\n]{1,2}/\r\n/;
and only then compare. Will that work?
Yes, it does - thanks. Here's a diff that enables all the apache/subprocess tests to pass on Win32 (I haven't tested it on Unix):
========================================================== Index: subprocess.pm =================================================================== RCS file: /home/cvs/modperl-2.0/t/response/TestApache/subprocess.pm,v retrieving revision 1.13 diff -u -r1.13 subprocess.pm --- subprocess.pm 8 Apr 2003 02:05:34 -0000 1.13 +++ subprocess.pm 5 Jun 2003 06:51:32 -0000 @@ -5,6 +5,7 @@
use Apache::Test; use Apache::TestUtil; +require Apache::TestConfig;
use File::Spec::Functions qw(catfile catdir); use IO::Select (); @@ -44,11 +45,16 @@
my $target_dir = catfile $vars->{documentroot}, "util";
+ my $perl = catfile $Config{bin}, + (Apache::TestConfig::WIN32 ? 'perl.exe' : 'perl'); +
In that case, we do know the path to perl, it's stored in Apache::Build:
require Apache::Build;
my $build = Apache::Build->build_config;
my $perl_path = $build->perl_config('perlpath');$Config{bin}/perl is definitely wrong, as it can be $Config{bin}/perl5.9.0 for example. Or anything else for that purpose. e.g. $Config{bin}/python to confuse the management ;)
{
# test: passing argv + scalar context
my $command = catfile $target_dir, "argv.pl";
my @argv = qw(foo bar);
- my $out_fh = Apache::SubProcess::spawn_proc_prog($r, $command, [EMAIL
PROTECTED]);
+ my $out_fh = Apache::TestConfig::WIN32 ?
+ Apache::SubProcess::spawn_proc_prog($r, $perl, [$command, @argv]) :
+ Apache::SubProcess::spawn_proc_prog($r, $command, [EMAIL
PROTECTED]);
Also any reason for not doing the same for all? the WIN32 case should work just fine for others, no?
[...]
- my $output = read_data($out_fh);
+ (my $output = read_data($out_fh)) =~ s/[\r\n]{1,2}/\r\n/;
I guess we leave it for now, but later will probably abstract it into a function, once we need it in other tests, probably put XXX so we will remember.
please test with using Apache::Build to get the perl path and if it works, I'll test on UNIX.
Thanks Randy.
FWIW, perl uses:
my $runperl = $^X =~ m/\s/ ? qq{"$^X"} : $^X;
but as you said, Apache.exe is not what we want ;)
__________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
