summaryrefslogtreecommitdiff
path: root/t/run
diff options
context:
space:
mode:
authorNiko Tyni <ntyni@debian.org>2010-10-27 09:49:38 +0300
committerFather Chrysostomos <sprout@cpan.org>2010-10-27 05:50:18 -0700
commit9c6df44eda98e5e43bb8a8d4d71688ae77f9a590 (patch)
tree3810bc9102c5eff77c95b43fff76e91bbd26c35b /t/run
parent9f1eb87f94b3f331150512092da4adda55d38443 (diff)
downloadperl-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.t36
-rw-r--r--t/run/locale.t50
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 }