Doesn't make any difference for the test but is more logical.
[p5sagit/p5-mst-13.2.git] / t / test.pl
index a58b86c..735d966 100644 (file)
--- a/t/test.pl
+++ b/t/test.pl
@@ -40,7 +40,7 @@ sub _diag {
 
 sub skip_all {
     if (@_) {
-       print STDOUT "1..0 - @_\n";
+       print STDOUT "1..0 # Skipped: @_\n";
     } else {
        print STDOUT "1..0\n";
     }
@@ -133,7 +133,16 @@ sub display {
 
 sub is {
     my ($got, $expected, $name, @mess) = @_;
-    my $pass = $got eq $expected;
+
+    my $pass;
+    if( !defined $got || !defined $expected ) {
+        # undef only matches undef
+        $pass = !defined $got && !defined $expected;
+    }
+    else {
+        $pass = $got eq $expected;
+    }
+
     unless ($pass) {
        unshift(@mess, "#      got "._q($got)."\n",
                       "# expected "._q($expected)."\n");
@@ -143,7 +152,16 @@ sub is {
 
 sub isnt {
     my ($got, $isnt, $name, @mess) = @_;
-    my $pass = $got ne $isnt;
+
+    my $pass;
+    if( !defined $got || !defined $isnt ) {
+        # undef only matches undef
+        $pass = defined $got || defined $isnt;
+    }
+    else {
+        $pass = $got ne $isnt;
+    }
+
     unless( $pass ) {
         unshift(@mess, "# it should not be "._q($got)."\n",
                        "# but it is.\n");
@@ -378,15 +396,28 @@ sub runperl {
        $runperl .= qq( "$args{progfile}");
     }
     if (defined $args{stdin}) {
-        # so we don't try to put literal newlines and crs onto the
-        # command line.
-        $args{stdin} =~ s/\n/\\n/g;
-        $args{stdin} =~ s/\r/\\r/g;
+       # so we don't try to put literal newlines and crs onto the
+       # command line.
+       $args{stdin} =~ s/\n/\\n/g;
+       $args{stdin} =~ s/\r/\\r/g;
 
        if ($is_mswin || $is_netware || $is_vms) {
            $runperl = qq{$^X -e "print qq(} .
                $args{stdin} . q{)" | } . $runperl;
        }
+       elsif ($is_macos) {
+           # MacOS can only do two processes under MPW at once;
+           # the test itself is one; we can't do two more, so
+           # write to temp file
+           my $stdin = qq{$^X -e 'print qq(} . $args{stdin} . qq{)' > teststdin; };
+           if ($args{verbose}) {
+               my $stdindisplay = $stdin;
+               $stdindisplay =~ s/\n/\n\#/g;
+               print STDERR "# $stdindisplay\n";
+           }
+           `$stdin`;
+           $runperl .= q{ < teststdin };
+       }
        else {
            $runperl = qq{$^X -e 'print qq(} .
                $args{stdin} . q{)' | } . $runperl;
@@ -420,6 +451,9 @@ sub which_perl {
     unless (defined $Perl) {
        $Perl = $^X;
        
+       # VMS should have 'perl' aliased properly
+       return $Perl if $^O eq 'VMS';
+
        my $exe;
        eval "require Config; Config->import";
        if ($@) {