POSIX/t/mb.t: Skip test on early HP-UX
authorKarl Williamson <khw@cpan.org>
Sun, 14 Apr 2019 19:03:51 +0000 (13:03 -0600)
committerKarl Williamson <khw@cpan.org>
Sun, 14 Apr 2019 19:22:03 +0000 (13:22 -0600)
There is a bug in this OS, fixed as of 11.31, in which mblen() doesn't
return the proper result in the UTF-8 locale C.utf8.  Any other UTF-8
locales on this platform are broken for another reason, being that a
bunch of what Perl expects to be punctuation characters aren't.

ext/POSIX/t/mb.t

index 25bffe1..84de90e 100644 (file)
@@ -42,11 +42,17 @@ SKIP: {
         'use POSIX; print &POSIX::MB_CUR_MAX',
       qr/[4-6]/, {}, 'MB_CUR_MAX is at least 4 in a UTF-8 locale');
 
+  SKIP: {
+    my ($major, $minor, $rest) = $Config{osvers} =~ / (\d+) \. (\d+) \. .* /x;
+    skip("mblen() broken (at least for c.utf8) on early HP-UX", 1)
+        if   $Config{osname} eq 'hpux'
+          && $major < 11 || ($major == 11 && $minor < 31);
     fresh_perl_is(
         'use POSIX; print &POSIX::mblen("'
       . I8_to_native("\x{c3}\x{28}")
       . '", 2)',
       -1, {}, 'mblen() recognizes invalid multibyte characters');
+    }
 
     fresh_perl_is(
      'use POSIX; print &POSIX::mblen("\N{GREEK SMALL LETTER SIGMA}", 2)',