diff options
author | Niko Tyni <ntyni@debian.org> | 2010-10-27 09:49:38 +0300 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2010-10-27 05:50:18 -0700 |
commit | 9c6df44eda98e5e43bb8a8d4d71688ae77f9a590 (patch) | |
tree | 3810bc9102c5eff77c95b43fff76e91bbd26c35b /t/run | |
parent | 9f1eb87f94b3f331150512092da4adda55d38443 (diff) | |
download | perl-9c6df44eda98e5e43bb8a8d4d71688ae77f9a590.tar.gz |
Refactor LC_NUMERIC test out of t/run/fresh_perl.t
Neither lib/locale.t nor t/run/fresh_perl.t should be used for new tests,
so take the locale related tests and the setup code from fresh_perl.t
to make ground for more.
Diffstat (limited to 't/run')
-rw-r--r-- | t/run/fresh_perl.t | 36 | ||||
-rw-r--r-- | t/run/locale.t | 50 |
2 files changed, 50 insertions, 36 deletions
diff --git a/t/run/fresh_perl.t b/t/run/fresh_perl.t index 3666f0922e..927d7f6426 100644 --- a/t/run/fresh_perl.t +++ b/t/run/fresh_perl.t @@ -565,42 +565,6 @@ EOT EXPECT ok ######## -# This test is here instead of lib/locale.t because -# the bug depends on in the internal state of the locale -# settings and pragma/locale messes up that state pretty badly. -# We need a "fresh run". -BEGIN { - eval { require POSIX }; - if ($@) { - exit(0); # running minitest? - } -} -use Config; -my $have_setlocale = $Config{d_setlocale} eq 'define'; -$have_setlocale = 0 if $@; -# Visual C's CRT goes silly on strings of the form "en_US.ISO8859-1" -# and mingw32 uses said silly CRT -$have_setlocale = 0 if (($^O eq 'MSWin32' || $^O eq 'NetWare') && $Config{cc} =~ /^(cl|gcc)/i); -exit(0) unless $have_setlocale; -my @locales; -if (-x "/usr/bin/locale" && open(LOCALES, "/usr/bin/locale -a 2>/dev/null|")) { - while(<LOCALES>) { - chomp; - push(@locales, $_); - } - close(LOCALES); -} -exit(0) unless @locales; -for (@locales) { - use POSIX qw(locale_h); - use locale; - setlocale(LC_NUMERIC, $_) or next; - my $s = sprintf "%g %g", 3.1, 3.1; - next if $s eq '3.1 3.1' || $s =~ /^(3.+1) \1$/; - print "$_ $s\n"; -} -EXPECT -######## # [ID 20001202.002] and change #8066 added 'at -e line 1'; # reversed again as a result of [perl #17763] die qr(x) diff --git a/t/run/locale.t b/t/run/locale.t new file mode 100644 index 0000000000..9f9d32cc19 --- /dev/null +++ b/t/run/locale.t @@ -0,0 +1,50 @@ +#!./perl +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + require './test.pl'; # for fresh_perl_is() etc +} + +use strict; + +######## +# This test is here instead of lib/locale.t because +# the bug depends on in the internal state of the locale +# settings and pragma/locale messes up that state pretty badly. +# We need a "fresh run". +BEGIN { + eval { require POSIX }; + if ($@) { + skip_all("could not load the POSIX module"); # running minitest? + } +} +use Config; +my $have_setlocale = $Config{d_setlocale} eq 'define'; +$have_setlocale = 0 if $@; +# Visual C's CRT goes silly on strings of the form "en_US.ISO8859-1" +# and mingw32 uses said silly CRT +$have_setlocale = 0 if (($^O eq 'MSWin32' || $^O eq 'NetWare') && $Config{cc} =~ /^(cl|gcc)/i); +skip_all("no setlocale available") unless $have_setlocale; +my @locales; +if (-x "/usr/bin/locale" && open(LOCALES, "/usr/bin/locale -a 2>/dev/null|")) { + while(<LOCALES>) { + chomp; + push(@locales, $_); + } + close(LOCALES); +} +skip_all("no locales available") unless @locales; + +plan tests => &last; +fresh_perl_is("for (qw(@locales)) {\n" . <<'EOF', + use POSIX qw(locale_h); + use locale; + setlocale(LC_NUMERIC, "$_") or next; + my $s = sprintf "%g %g", 3.1, 3.1; + next if $s eq '3.1 3.1' || $s =~ /^(3.+1) \1$/; + print "$_ $s\n"; +} +EOF + "", {}, "no locales where LC_NUMERIC breaks"); + +sub last { 1 } |