This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: [PATCH abigail.t] another portability attempt
[perl5.git] / t / japh / abigail.t
index c8412aa..2ece031 100644 (file)
@@ -3,6 +3,18 @@
 #
 # Tests derived from Japhs.
 #
+# These test use obscure features of Perl, or surprising combinations
+# of features. The tests were added because in the past, they have
+# exposed several bugs in Perl.
+#
+# Some of these tests may actually (mis)use bugs or use undefined behaviour.
+# These tests are still useful - behavioural changes or bugfixes will be
+# noted, and a remark can be put in the documentation. (Don't forget to
+# disable the test!)
+#
+# Getting everything to run well on the myriad of platforms Perl runs on
+# is unfortunally, not a trivial task.
+#
 
 BEGIN {
     if (ord("A") == 193) {
@@ -174,8 +186,8 @@ plan tests => 130;
             next;
         }
 
+       chomp @{$program -> {SKIP_OS}};
         if (@{$program -> {SKIP_OS}}) {
-            chomp @{$program -> {SKIP_OS}};
             if (grep {$^O eq $_} @{$program -> {SKIP_OS}}) {
                 skip "Your OS uses different quoting.", 1;
                 next;
@@ -237,13 +249,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 ++;
     }
 }
 
@@ -258,12 +275,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?;??;
@@ -500,6 +519,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}