This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fixes for running a clean minitest (at least in OS X). - detect POSIX locale support...
authorJarkko Hietaniemi <jhi@iki.fi>
Sat, 19 Apr 2014 19:38:40 +0000 (15:38 -0400)
committerTony Cook <tony@develop-help.com>
Thu, 29 May 2014 01:13:46 +0000 (11:13 +1000)
t/op/lc.t
t/op/pwent.t
t/op/tr.t
t/uni/fold.t

index 38d2b6b..e01f2b0 100644 (file)
--- a/t/op/lc.t
+++ b/t/op/lc.t
@@ -322,6 +322,11 @@ my $utf8_locale = find_utf8_ctype_locale();
 SKIP: {
     skip 'Can\'t find a UTF-8 locale', 4*256 unless defined $utf8_locale;
 
+    eval { require POSIX; import POSIX 'locale_h'; };
+    unless (defined &POSIX::LC_CTYPE) {
+        skip "no POSIX (maybe no Fcntl, or no dynamic loading)", 4*256;
+    }
+
     use feature qw( unicode_strings );
 
     no locale;
@@ -339,7 +344,6 @@ SKIP: {
         push @unicode_ucfirst, ucfirst(chr $i);
     }
 
-    use if $Config{d_setlocale}, qw(POSIX locale_h);
     use locale;
     setlocale(LC_CTYPE, $utf8_locale);
 
index 7562bc0..f4cc8ec 100644 (file)
@@ -36,7 +36,14 @@ $where //= try_prog('NetInfo passwd', 'passwd .', '/usr/bin/nidump');
 $where //= try_prog('NIS+', 'passwd.org_dir', '/bin/niscat');
 
 # Try dscl
-if (!defined $where && $Config::Config{useperlio}) {
+DSCL: {
+my @dscl = qw(/usr/bin/dscl);
+if (!defined $where && $Config::Config{useperlio} && grep { -x } @dscl) {
+    eval { require PerlIO::scalar; }; # Beware miniperl.
+    if ($@) {
+        print "# No PerlIO::scalar, will not try dscl\n";
+        last DSCL;
+    }
     # Map dscl items to passwd fields, and provide support for
     # mucking with the dscl output if we need to (and we do).
     my %want = do {
@@ -65,7 +72,7 @@ if (!defined $where && $Config::Config{useperlio}) {
     $want{UniqueID}{mung} = $want{PrimaryGroupID}{mung} = sub {
        unpack 'L', pack 'l', $_[0]};
 
-    foreach my $dscl (qw(/usr/bin/dscl)) {
+    foreach my $dscl (@dscl) {
        next unless -x $dscl;
        next unless open my $fh, '-|', "$dscl . -readall /Users @{[keys %want]} 2>/dev/null";
        my @lines;
@@ -101,12 +108,13 @@ if (!defined $where && $Config::Config{useperlio}) {
            push @lines, join (':', @rec) . "\n";
        }
        my $data = join '', @lines;
-       if (open PW, '<', \$data) {
+       if (open PW, '<', \$data) { # Needs PerlIO::scalar.
            $where = "dscl . -readall /Users";
            last;
        }
     }
 }
+} # DSCL:
 
 if (not defined $where) {
     # Try local.
index 55a3438..580d55a 100644 (file)
--- a/t/op/tr.t
+++ b/t/op/tr.t
@@ -522,7 +522,7 @@ SKIP: {
 
     my $x = "Perlα";
     $x =~ tr/αα/βγ/;
-    note $x;
+    { no warnings 'utf8'; print "# $x\n"; } # No note() to avoid wide warning.
     is($x, "Perlβ", "Only first of multiple transliterations is used");
 }
 
index 94090e9..032f382 100644 (file)
@@ -418,9 +418,14 @@ foreach my $test_ref (@CF) {
 }
 
 
-{
+SKIP: {
     use feature qw( fc unicode_strings );
-    use if $Config{d_setlocale}, qw(POSIX locale_h);
+
+    eval { require POSIX; import POSIX 'locale_h'; };
+    unless (defined &POSIX::LC_ALL) {
+       skip "no POSIX (or no Fcntl, or no dynamic loading)", 256;
+    }
+
     setlocale(&POSIX::LC_ALL, "C") if $Config{d_setlocale};
 
     # This tests both code paths in pp_fc