Commit | Line | Data |
---|---|---|
543eec9e JP |
1 | #! /usr/local/perl -w |
2 | # Before `make install' is performed this script should be runnable with | |
3 | # `make test'. After `make install' it should work as `perl test.pl' | |
4 | ||
5 | ######################### | |
6 | ||
7 | use File::Basename; | |
8 | use File::Temp qw/tempfile/; | |
9 | use POSIX qw/locale_h/; | |
02aba72f | 10 | use Test::More tests => 7; |
569f7fc5 | 11 | use Config; |
543eec9e JP |
12 | |
13 | BEGIN { | |
4141ef59 | 14 | use_ok('version', 0.9905); |
543eec9e JP |
15 | } |
16 | ||
17 | SKIP: { | |
5027b3af JP |
18 | skip 'No locale testing for Perl < 5.6.0', 6 if $] < 5.006; |
19 | skip 'No locale testing without d_setlocale', 6 | |
20 | if(!$Config{d_setlocale}); | |
21 | ||
543eec9e JP |
22 | # test locale handling |
23 | my $warning; | |
b127e37e | 24 | |
543eec9e JP |
25 | local $SIG{__WARN__} = sub { $warning = $_[0] }; |
26 | ||
543eec9e | 27 | my $ver = 1.23; # has to be floating point number |
543eec9e | 28 | my $loc; |
8c72d156 | 29 | my $orig_loc = setlocale(LC_NUMERIC); |
3fca3d61 | 30 | ok ($ver eq "1.23", 'Not using locale yet'); # Don't use is(), |
5027b3af JP |
31 | # because have to |
32 | # evaluate in current | |
33 | # scope | |
95a23f5d JP |
34 | use locale; |
35 | ||
543eec9e JP |
36 | while (<DATA>) { |
37 | chomp; | |
38 | $loc = setlocale( LC_ALL, $_); | |
95a23f5d | 39 | last if $loc && localeconv()->{decimal_point} eq ','; |
543eec9e | 40 | } |
02aba72f | 41 | skip 'Cannot test locale handling without a comma locale', 5 |
35c57365 | 42 | unless $loc and localeconv()->{decimal_point} eq ','; |
543eec9e | 43 | |
5027b3af | 44 | setlocale(LC_NUMERIC, $loc); |
4141ef59 | 45 | $ver = 1.23; # has to be floating point number |
3fca3d61 | 46 | ok ($ver eq "1,23", "Using locale: $loc"); |
543eec9e JP |
47 | $v = version->new($ver); |
48 | unlike($warning, qr/Version string '1,23' contains invalid data/, | |
49 | "Process locale-dependent floating point"); | |
3fca3d61 | 50 | ok ($v eq "1.23", "Locale doesn't apply to version objects"); |
543eec9e JP |
51 | ok ($v == $ver, "Comparison to locale floating point"); |
52 | ||
53 | setlocale( LC_ALL, $orig_loc); # reset this before possible skip | |
54 | skip 'Cannot test RT#46921 with Perl < 5.008', 1 | |
55 | if ($] < 5.008); | |
56 | skip 'Cannot test RT#46921 with pure Perl module', 1 | |
57 | if exists $INC{'version/vpp.pm'}; | |
58 | my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1); | |
59 | (my $package = basename($filename)) =~ s/\.pm$//; | |
60 | print $fh <<"EOF"; | |
61 | package $package; | |
68e8f474 | 62 | use locale; |
543eec9e JP |
63 | use POSIX qw(locale_h); |
64 | \$^W = 1; | |
65 | use version; | |
66 | setlocale (LC_ALL, '$loc'); | |
67 | use version ; | |
68 | eval "use Socket 1.7"; | |
69 | setlocale( LC_ALL, '$orig_loc'); | |
70 | 1; | |
71 | EOF | |
72 | close $fh; | |
73 | ||
74 | eval "use lib '.'; use $package;"; | |
75 | unlike($warning, qr"Version string '1,7' contains invalid data", | |
76 | 'Handle locale action-at-a-distance'); | |
77 | } | |
78 | ||
79 | __DATA__ | |
80 | af_ZA | |
81 | af_ZA.utf8 | |
82 | an_ES | |
83 | an_ES.utf8 | |
84 | az_AZ.utf8 | |
85 | be_BY | |
86 | be_BY.utf8 | |
87 | bg_BG | |
88 | bg_BG.utf8 | |
89 | br_FR | |
90 | br_FR@euro | |
91 | br_FR.utf8 | |
92 | bs_BA | |
93 | bs_BA.utf8 | |
94 | ca_ES | |
95 | ca_ES@euro | |
96 | ca_ES.utf8 | |
97 | cs_CZ | |
98 | cs_CZ.utf8 | |
99 | da_DK | |
100 | da_DK.utf8 | |
101 | de_AT | |
102 | de_AT@euro | |
103 | de_AT.utf8 | |
104 | de_BE | |
105 | de_BE@euro | |
106 | de_BE.utf8 | |
107 | de_DE | |
108 | de_DE@euro | |
109 | de_DE.utf8 | |
110 | de_LU | |
111 | de_LU@euro | |
112 | de_LU.utf8 | |
113 | el_GR | |
114 | el_GR.utf8 | |
115 | en_DK | |
116 | en_DK.utf8 | |
117 | es_AR | |
118 | es_AR.utf8 | |
119 | es_BO | |
120 | es_BO.utf8 | |
121 | es_CL | |
122 | es_CL.utf8 | |
123 | es_CO | |
124 | es_CO.utf8 | |
125 | es_EC | |
126 | es_EC.utf8 | |
127 | es_ES | |
128 | es_ES@euro | |
129 | es_ES.utf8 | |
130 | es_PY | |
131 | es_PY.utf8 | |
132 | es_UY | |
133 | es_UY.utf8 | |
134 | es_VE | |
135 | es_VE.utf8 | |
136 | et_EE | |
137 | et_EE.iso885915 | |
138 | et_EE.utf8 | |
139 | eu_ES | |
140 | eu_ES@euro | |
141 | eu_ES.utf8 | |
142 | fi_FI | |
143 | fi_FI@euro | |
144 | fi_FI.utf8 | |
145 | fo_FO | |
146 | fo_FO.utf8 | |
147 | fr_BE | |
148 | fr_BE@euro | |
149 | fr_BE.utf8 | |
150 | fr_CA | |
151 | fr_CA.utf8 | |
152 | fr_CH | |
153 | fr_CH.utf8 | |
154 | fr_FR | |
155 | fr_FR@euro | |
156 | fr_FR.utf8 | |
157 | fr_LU | |
158 | fr_LU@euro | |
159 | fr_LU.utf8 | |
160 | gl_ES | |
161 | gl_ES@euro | |
162 | gl_ES.utf8 | |
163 | hr_HR | |
164 | hr_HR.utf8 | |
165 | hu_HU | |
166 | hu_HU.utf8 | |
167 | id_ID | |
168 | id_ID.utf8 | |
169 | is_IS | |
170 | is_IS.utf8 | |
171 | it_CH | |
172 | it_CH.utf8 | |
173 | it_IT | |
174 | it_IT@euro | |
175 | it_IT.utf8 | |
176 | ka_GE | |
177 | ka_GE.utf8 | |
178 | kk_KZ | |
179 | kk_KZ.utf8 | |
180 | kl_GL | |
181 | kl_GL.utf8 | |
182 | lt_LT | |
183 | lt_LT.utf8 | |
184 | lv_LV | |
185 | lv_LV.utf8 | |
186 | mk_MK | |
187 | mk_MK.utf8 | |
188 | mn_MN | |
189 | mn_MN.utf8 | |
190 | nb_NO | |
191 | nb_NO.utf8 | |
192 | nl_BE | |
193 | nl_BE@euro | |
194 | nl_BE.utf8 | |
195 | nl_NL | |
196 | nl_NL@euro | |
197 | nl_NL.utf8 | |
198 | nn_NO | |
199 | nn_NO.utf8 | |
200 | no_NO | |
201 | no_NO.utf8 | |
202 | oc_FR | |
203 | oc_FR.utf8 | |
204 | pl_PL | |
205 | pl_PL.utf8 | |
206 | pt_BR | |
207 | pt_BR.utf8 | |
208 | pt_PT | |
209 | pt_PT@euro | |
210 | pt_PT.utf8 | |
211 | ro_RO | |
212 | ro_RO.utf8 | |
213 | ru_RU | |
214 | ru_RU.koi8r | |
215 | ru_RU.utf8 | |
216 | ru_UA | |
217 | ru_UA.utf8 | |
218 | se_NO | |
219 | se_NO.utf8 | |
220 | sh_YU | |
221 | sh_YU.utf8 | |
222 | sk_SK | |
223 | sk_SK.utf8 | |
224 | sl_SI | |
225 | sl_SI.utf8 | |
226 | sq_AL | |
227 | sq_AL.utf8 | |
228 | sr_CS | |
229 | sr_CS.utf8 | |
230 | sv_FI | |
231 | sv_FI@euro | |
232 | sv_FI.utf8 | |
233 | sv_SE | |
234 | sv_SE.iso885915 | |
235 | sv_SE.utf8 | |
236 | tg_TJ | |
237 | tg_TJ.utf8 | |
238 | tr_TR | |
239 | tr_TR.utf8 | |
240 | tt_RU.utf8 | |
241 | uk_UA | |
242 | uk_UA.utf8 | |
243 | vi_VN | |
244 | vi_VN.tcvn | |
245 | wa_BE | |
246 | wa_BE@euro | |
247 | wa_BE.utf8 |