PATCH: [perl #133649] fails on OpenBSD-6.4 unthreaded
authorKarl Williamson <khw@cpan.org>
Sun, 18 Nov 2018 20:18:49 +0000 (13:18 -0700)
committerKarl Williamson <khw@cpan.org>
Mon, 19 Nov 2018 20:53:25 +0000 (13:53 -0700)
OpenBSD has a (perfectly legal) different syntax for the string
parameter to setlocale(), so the failing tests are not actually valid on
that platform.  Rather than go to the significant effort to create a
Configure probe to find out what platforms use what syntax, simply skip
these on this platform.  The tests aren't skipped if built with threads,
as they actually help make sure that the code that deals with different
syntaxes for thread-safe handling of locales works in the face of
different syntaxes

t/run/locale.t

index e249c65..0296c9a 100644 (file)
@@ -459,7 +459,18 @@ EOF
         }
     }
 
-    {
+SKIP: {
+        # Note: a Configure probe could be written to give us the syntax to
+        # use, but khw doesn't think it's worth it.  If the POSIX 2008 locale
+        # functions are being used, the syntax becomes mostly irrelevant, so
+        # do the test anyway if they are
+        # it's a lot of trouble to figure out in a perl script
+        if ($^O eq 'openbsd' && (     $Config{useithreads} ne 'define'
+                                 || ! ${^SAFE_LOCALES}))
+        {
+            skip("The setlocale() syntax used is invalid on this platform", 2);
+        }
+
         my @valid_categories = valid_locale_categories();
 
         my $valid_string = "";