print "1..0\n";
exit 0;
}
+ require 'loc_tools.pl';
}
use Test::More tests => 120;
unlike( $@, qr/Can't use string .* as a symbol ref/, "Can import autoloaded constants" );
SKIP: {
- skip("localeconv() not present", 26) unless $Config{d_locconv};
+ skip("locales not available", 26) unless locales_enabled(qw(NUMERIC MONETARY));
+ skip("localeconv() not available", 26) unless $Config{d_locconv};
my $conv = localeconv;
is(ref $conv, 'HASH', 'localconv returns a hash reference');
print "1..0 # Skip -- Perl configured without re module\n";
exit 0;
}
+ require 'loc_tools.pl';
}
use strict;
}
SKIP: {
- if (
- !$Config::Config{d_setlocale}
- || $Config::Config{ccflags} =~ /\bD?NO_LOCALE\b/
- ) {
- skip "no locale support", 7
- }
+ skip "no locale support", 7 unless locales_enabled('CTYPE');
use locale;
use re '/u';
is qr//, '(?^u:)', 'use re "/u" with active locale';
package locale;
-our $VERSION = '1.05';
+our $VERSION = '1.06';
use Config;
$Carp::Internal{ (__PACKAGE__) } = 1;
chdir 't' if -d 't';
@INC = '../lib';
unshift @INC, '.';
- require Config; import Config;
- if (!$Config{d_setlocale} || $Config{ccflags} =~ /\bD?NO_LOCALE\b/) {
+ require './loc_tools.pl';
+ unless (locales_enabled('LC_CTYPE')) {
print "1..0\n";
exit;
}
- require './loc_tools.pl';
$| = 1;
+ require Config; import Config;
}
use strict;
# first). This is only done if the current locale has LC_MESSAGES
$ok14 = 1;
$ok14_5 = 1;
- if (setlocale(&POSIX::LC_MESSAGES, $Locale)) {
+ if ( locales_enabled('LC_MESSAGES')
+ && setlocale(&POSIX::LC_MESSAGES, $Locale))
+ {
foreach my $err (keys %!) {
use Errno;
$! = eval "&Errno::$err"; # Convert to strerror() output
}
$ok21 = 1;
+ if (locales_enabled('LC_MESSAGES')) {
foreach my $err (keys %!) {
no locale;
use Errno;
if ("$strerror" =~ /\P{ASCII}/) {
$ok21 = 0;
last;
+ }
}
}
########
# NAME Wide character in non-UTF-8 locale
+require '../loc_tools.pl';
+unless (locales_enabled()) {
+ print("SKIPPED\n# locales not available\n"),exit;
+}
eval { require POSIX; POSIX->import("locale_h") };
if ($@) {
print("SKIPPED\n# no POSIX\n"),exit;
"\x{100}" =~ /[\x{100}\x{102}]/l;
no warnings 'locale';
EXPECT
-Wide character (U+100) in pattern match (m//) at - line 8.
-Wide character (U+100) in pattern match (m//) at - line 8.
-Wide character (U+100) in pattern match (m//) at - line 9.
-Wide character (U+100) in pattern match (m//) at - line 9.
-Wide character (U+100) in pattern match (m//) at - line 9.
-Wide character (U+100) in pattern match (m//) at - line 10.
-Wide character (U+100) in pattern match (m//) at - line 10.
-Wide character (U+100) in pattern match (m//) at - line 11.
Wide character (U+100) in pattern match (m//) at - line 12.
Wide character (U+100) in pattern match (m//) at - line 12.
+Wide character (U+100) in pattern match (m//) at - line 13.
+Wide character (U+100) in pattern match (m//) at - line 13.
+Wide character (U+100) in pattern match (m//) at - line 13.
+Wide character (U+100) in pattern match (m//) at - line 14.
+Wide character (U+100) in pattern match (m//) at - line 14.
+Wide character (U+100) in pattern match (m//) at - line 15.
+Wide character (U+100) in pattern match (m//) at - line 16.
+Wide character (U+100) in pattern match (m//) at - line 16.
########
# NAME \b{} in non-UTF-8 locale
eval { require POSIX; POSIX->import("locale_h") };
EXPECT
########
# NAME Case change crosses 255/256 under non-UTF8 locale
+require '../loc_tools.pl';
+unless (locales_enabled('LC_CTYPE')) {
+ print("SKIPPED\n# locales not available\n"),exit;
+}
eval { require POSIX; POSIX->import("locale_h") };
if ($@) {
print("SKIPPED\n# no POSIX\n"),exit;
$a = ucfirst("\x{149}");
$a = lcfirst("\x{178}");
EXPECT
-Can't do lc("\x{178}") on non-UTF-8 locale; resolved to "\x{178}". at - line 10.
-Can't do fc("\x{1E9E}") on non-UTF-8 locale; resolved to "\x{17F}\x{17F}". at - line 11.
-Can't do fc("\x{FB05}") on non-UTF-8 locale; resolved to "\x{FB06}". at - line 12.
-Can't do uc("\x{FB00}") on non-UTF-8 locale; resolved to "\x{FB00}". at - line 13.
-Can't do ucfirst("\x{149}") on non-UTF-8 locale; resolved to "\x{149}". at - line 14.
-Can't do lcfirst("\x{178}") on non-UTF-8 locale; resolved to "\x{178}". at - line 15.
+Can't do lc("\x{178}") on non-UTF-8 locale; resolved to "\x{178}". at - line 14.
+Can't do fc("\x{1E9E}") on non-UTF-8 locale; resolved to "\x{17F}\x{17F}". at - line 15.
+Can't do fc("\x{FB05}") on non-UTF-8 locale; resolved to "\x{FB06}". at - line 16.
+Can't do uc("\x{FB00}") on non-UTF-8 locale; resolved to "\x{FB00}". at - line 17.
+Can't do ucfirst("\x{149}") on non-UTF-8 locale; resolved to "\x{149}". at - line 18.
+Can't do lcfirst("\x{178}") on non-UTF-8 locale; resolved to "\x{178}". at - line 19.
########
# NAME Wide character in non-UTF-8 locale
+require '../loc_tools.pl';
+unless (locales_enabled('LC_CTYPE')) {
+ print("SKIPPED\n# locales not available\n"),exit;
+}
eval { require POSIX; POSIX->import("locale_h") };
if ($@) {
print("SKIPPED\n# no POSIX\n"),exit;
$a = uc("\x{103}");
$a = ucfirst("\x{104}");
EXPECT
-Wide character (U+100) in lc at - line 10.
-Wide character (U+101) in lcfirst at - line 11.
-Wide character (U+102) in fc at - line 12.
-Wide character (U+103) in uc at - line 13.
-Wide character (U+104) in ucfirst at - line 14.
+Wide character (U+100) in lc at - line 14.
+Wide character (U+101) in lcfirst at - line 15.
+Wide character (U+102) in fc at - line 16.
+Wide character (U+103) in uc at - line 17.
+Wide character (U+104) in ucfirst at - line 18.
@INC = qw(../lib .);
require Config; import Config;
require "./test.pl";
+ require "./loc_tools.pl";
}
plan tests => 60;
is(length(quotemeta("\x{df}")), 2, "quotemeta Latin1 no unicode_strings quoted length");
SKIP: {
- skip 'No locale testing without d_setlocale', 8 if(!$Config{d_setlocale});
+ skip 'Locales not available', 8 unless locales_enabled('LC_CTYPE');
use locale;
my $char = ":";
is(length(quotemeta("\x{df}")), 1, "quotemeta Latin1 unicode_strings nonquoted length");
SKIP: {
- skip 'No locale testing without d_setlocale', 12 if(!$Config{d_setlocale});
+ skip 'Locales not available', 12 unless locales_enabled('LC_CTYPE');
use locale;
my $char = ":";
BEGIN {
chdir 't' if -d 't';
require './test.pl';
+ require './loc_tools.pl';
set_up_inc('../lib');
}
is($one, 'a', "$desc: \$1 value");
SKIP: {
- skip 'No locale testing without d_setlocale', 10 if(!$Config{d_setlocale});
+ skip 'Locales not available', 10 unless locales_enabled('LC_CTYPE');
$desc = "match with pattern tainted via locale";
is($one, 'd', "$desc: \$1 value");
SKIP: {
- skip 'No locale testing without d_setlocale', 12 if(!$Config{d_setlocale});
+ skip 'Locales not available', 12 unless locales_enabled('LC_CTYPE');
$desc = "match with pattern tainted via locale, list cxt";
is($one, 'abcd', "$desc: \$1 value");
SKIP: {
- skip 'No locale testing without d_setlocale', 18 if(!$Config{d_setlocale});
+ skip 'Locales not available', 18 unless locales_enabled('LC_CTYPE');
$desc = "substitution with pattern tainted via locale";
is($one, 'a', "$desc: \$1 value");
SKIP: {
- skip 'No locale testing without d_setlocale', 10 if(!$Config{d_setlocale});
+ skip 'Locales not available', 10 unless locales_enabled('LC_CTYPE');
$desc = "use re 'taint': match with pattern tainted via locale";
is($one, 'd', "$desc: \$1 value");
SKIP: {
- skip 'No locale testing without d_setlocale', 12 if(!$Config{d_setlocale});
+ skip 'Locales not available', 12 unless locales_enabled('LC_CTYPE');
$desc = "use re 'taint': match with pattern tainted via locale, list cxt";
is($one, 'abcd', "$desc: \$1 value");
SKIP: {
- skip 'No locale testing without d_setlocale', 18 if(!$Config{d_setlocale});
+ skip 'Locales not available', 18 unless locales_enabled('LC_CTYPE');
$desc = "use re 'taint': substitution with pattern tainted via locale";
}
SKIP: {
- skip 'No locale testing without d_setlocale', 4 if(!$Config{d_setlocale});
+ skip 'Locales not available', 4 unless locales_enabled('LC_CTYPE');
use feature 'fc';
use locale;
my $utf8_locale;
my @charsets = qw(a d u aa);
-if (! is_miniperl() && $Config{d_setlocale}) {
+if (! is_miniperl() && locales_enabled('LC_CTYPE')) {
require POSIX;
my $current_locale = POSIX::setlocale( &POSIX::LC_ALL, "C") // "";
if ($current_locale eq 'C') {
@INC = ('../lib','.','../ext/re');
require Config; import Config;
require './test.pl'; require './charset_tools.pl';
+ require './loc_tools.pl';
skip_all('no re module') unless defined &DynaLoader::boot_DynaLoader;
skip_all_without_unicode_tables();
}
my $locale;
SKIP: {
- skip 'No locale testing without d_setlocale', 1 if(!$Config{d_setlocale});
+ skip 'Locales not available', 1 unless locales_enabled('LC_CTYPE');
use locale;
$locale = qr/\b\v$/;
is(qr/abc$dual/, '(?^u:abc(?^:\b\v$))', 'Verify retains d meaning when interpolated under locale');
SKIP: {
- skip 'No locale testing without d_setlocale', 1 if(!$Config{d_setlocale});
+ skip 'Locales not available', 1 unless locales_enabled('LC_CTYPE');
is(qr/abc$locale/, '(?^u:abc(?^l:\b\v$))', 'Verify retains l when interpolated under unicode_strings');
}
no feature 'unicode_strings';
SKIP: {
- skip 'No locale testing without d_setlocale', 1 if(!$Config{d_setlocale});
-
+ skip 'Locales not available', 1 unless locales_enabled('LC_CTYPE');
is(qr/abc$locale/, '(?^:abc(?^l:\b\v$))', 'Verify retains l when interpolated outside locale and unicode strings');
}
is(qr/def$unicode/, '(?^:def(?^u:\b\v$))', 'Verify retains u when interpolated outside locale and unicode strings');
SKIP: {
- skip 'No locale testing without d_setlocale', 2 if(!$Config{d_setlocale});
+ skip 'Locales not available', 2 unless locales_enabled('LC_CTYPE');
use locale;
is(qr/abc$dual/, '(?^l:abc(?^:\b\v$))', 'Verify retains d meaning when interpolated under locale');
utf8::upgrade($utf8);
is(fc($latin1), fc($utf8), "fc() gives the same results for \\x{$_} in Latin-1 and UTF-8 under unicode_strings");
SKIP: {
- skip 'No locale testing without d_setlocale', 2 if(!$Config{d_setlocale});
+ skip 'Locales not available', 2 unless locales_enabled('LC_CTYPE');
use locale;
is(fc($latin1), lc($latin1), "use locale; fc(qq{\\x{$_}}), lc(qq{\\x{$_}}) when qq{\\x{$_}} is in latin-1");
is(fc($utf8), lc($utf8), "use locale; fc(qq{\\x{$_}}), lc(qq{\\x{$_}}) when qq{\\x{$_}} is in latin-1");