This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: t/japh/abigail.t [PATCH]
[perl5.git] / t / japh / abigail.t
index 9b2dc96..b4c4c8d 100644 (file)
@@ -21,9 +21,9 @@ BEGIN {
 #
 sub skip {
     my $why  = shift;
-    my $test = curr_test;
     my $n    = @_ ? shift : 1;
     for (1..$n) {
+        my $test = curr_test;
         print STDOUT "ok $test # skip: $why\n";
         next_test;
     }
@@ -80,7 +80,7 @@ plan tests => 130;
     if ($^O eq 'MSWin32' ||
         $^O eq 'NetWare' ||
         $^O eq 'VMS') {
-            skip 3, "Your platform quotes differently.\n";
+            skip "Your platform quotes differently.", 3;
             last;
     }
 
@@ -108,7 +108,7 @@ plan tests => 130;
     if ($^O eq 'MSWin32' ||
         $^O eq 'NetWare' ||
         $^O eq 'VMS') {
-            skip 1, "Your platform quotes differently.\n";
+            skip "Your platform quotes differently.", 1;
             last;
     }
     is (runperl (switches => [qw /-sweprint --/,
@@ -170,14 +170,16 @@ plan tests => 130;
     foreach my $program (@progs) {
         if (exists $program -> {SKIP}) {
             chomp  $program -> {SKIP};
-            skip   $program -> {SKIP};
+            skip   $program -> {SKIP}, 1;
             next;
         }
 
-        if (@{$program -> {SKIP_OS}} &&
-            grep {$^O eq $_} @{$program -> {SKIP_OS}}) {
-            skip "Your OS uses different quoting.";
-            next;
+       chomp @{$program -> {SKIP_OS}};
+        if (@{$program -> {SKIP_OS}}) {
+            if (grep {$^O eq $_} @{$program -> {SKIP_OS}}) {
+                skip "Your OS uses different quoting.", 1;
+                next;
+            }
         }
 
         map {s/\$datafile/$datafile/} @{$program -> {ARGS}};
@@ -212,6 +214,20 @@ truncate$0,-1+-s$0;exec$0;}}//rekcaH_lreP_rehtona_tsuJ
     --
     chomp @programs;
 
+    if ($^O eq 'VMS') {
+        # VMS needs extensions for files to be executable,
+        # but the Japhs above rely on $0 being exactly the
+        # filename of the program.
+        skip "VMS", 2 * @programs;
+        last
+    }
+
+    use Config;
+    unless (defined $Config {useperlio}) {
+        skip "Uuseperlio", 2 * @programs;
+        last
+    }
+
     my $i = 1;
     foreach my $program (@programs) {
         open my $fh => "> $progfile" or die "Failed to open $progfile: $!\n";
@@ -221,13 +237,18 @@ truncate$0,-1+-s$0;exec$0;}}//rekcaH_lreP_rehtona_tsuJ
         chmod 0755   => $progfile or die "Failed to chmod $progfile: $!\n";
         my $command  = "./$progfile";
            $command .= ' 2>&1' unless $^O eq 'MacOS';
-        my $output   = `$command`;
+        if ( $^O eq 'qnx' ) {
+          skip "#!./perl not supported in QNX4";
+          skip "#!./perl not supported in QNX4";
+        } else {
+          my $output   = `$command`;
 
-        $i ++;
-        is ($output, $JaPH, "Self correcting code $i");
+          is ($output, $JaPH, "Self correcting code $i");
 
-           $output   = `$command`;
-        is ($output, "",    "Self corrected code $i");
+                 $output   = `$command`;
+          is ($output, "",    "Self corrected code $i");
+        }
+        $i ++;
     }
 }
 
@@ -242,12 +263,14 @@ $_ = q *4a75737420616e6f74686572205065726c204861636b65720a*;
 for ($*=******;$**=******;$**=******) {$**=*******s*..*qq}
 print chr 0x$& and q
 qq}*excess********}
+SKIP_OS: qnx
 
 #######  Funky loop 3.
 $_ = q *4a75737420616e6f74686572205065726c204861636b65720a*;
 for ($*=******;$**=******;$**=******) {$**=*******s*..*qq}
 print chr 0x$& and q
 qq}*excess********}
+SKIP_OS: qnx
 
 #######  Funky loop 4.
 $_ = q ?4a75737420616e6f74686572205065726c204861636b65720as?;??;
@@ -484,6 +507,7 @@ SWITCHES: -w
 #######  Overloaded constants 1
 BEGIN {$^H {q} = sub {pop and pop and print pop}; $^H = 2**4.2**12}
 "Just "; "another "; "Perl "; "Hacker";
+SKIP_OS: qnx
 
 #######  Overloaded constants 2
 BEGIN {$^H {q} = sub {$_ [1] =~ y/S-ZA-IK-O/q-tc-fe-m/d; $_ [1]}; $^H = 0x28100}