Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lib/locale.t: new failures on Darwin/PPC #13554

Closed
p5pRT opened this issue Jan 25, 2014 · 29 comments
Closed

lib/locale.t: new failures on Darwin/PPC #13554

p5pRT opened this issue Jan 25, 2014 · 29 comments

Comments

@p5pRT
Copy link

@p5pRT p5pRT commented Jan 25, 2014

Migrated from rt.perl.org#121079 (status was 'resolved')

Searchable as RT121079$

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 25, 2014

From @jkeenan

I last successfully built and tested Perl on Darwin/PPC on Jan 19 2014
at commit 20e5bab.

Tonight I was testing a smoke-me branch I created to test alh's patch.
This branch, 5b009e5, is essentially
commit e0580a6 plus alh's patch. I
experienced new failures during 'make test' in lib/locale.t. Full
output is attached, but here are the failures​:

#####
not ok 244 Verify that a different locale radix works when doing "=="
with a constant
not ok 245 Verify that a different locale radix works when doing "=="
with a scalar
...
not ok 249 Verify that "==" with a scalar and an intervening sprintf
still works in inner no locale
...
not ok 252 Verify that after a no-locale block, a different locale radix
still works when doing "==" with a scalar and an intervening sprintf
...
not ok 254 Verify that don't get warning under "==" even if radix is not
a dot
#####

In addition, more locales had problems. Previously, I would get these
locale failures​:

#####
# The following locales
#
# lt_LT.ISO8859-13 lt_LT.ISO8859-4
#
# had problems.
#####

But this evening I got​:

#####
# The following locales
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
# lt_LT.ISO8859-13 lt_LT.ISO8859-4
#
# had problems.
#####

I have been compiling blead on this machine weekly for two years. This
is the first time I can recall problems with those three eu_ES* locales.

While I haven't bisected, suspicion naturally falls on the
locale-related commits such as a02ae65
made on Jan 22.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 25, 2014

From @jkeenan

ok 1 verify that isn't tainted​: not tainted outside 'use locale'
ok 2 verify that isn't tainted
ok 3 verify that is tainted
ok 4 verify that is tainted
ok 5 verify that is tainted
ok 6 verify that is tainted
ok 7 verify that is tainted
ok 8 verify that is tainted
ok 9 verify that is tainted
ok 10 verify that is tainted
ok 11 verify that is tainted
ok 12 verify that is tainted
ok 13 verify that isn't tainted
ok 14 verify that isn't tainted
ok 15 verify that isn't tainted
ok 16 verify that isn't tainted
ok 17 verify that isn't tainted
ok 18 verify that is tainted
ok 19 verify that is tainted
ok 20 verify that is tainted
ok 21 verify that is tainted
ok 22 verify that is tainted
ok 23 verify that is tainted
ok 24 verify that isn't tainted
ok 25 verify that isn't tainted
ok 26 verify that isn't tainted
ok 27 verify that isn't tainted
ok 28 verify that isn't tainted
ok 29 verify that isn't tainted
ok 30 verify that isn't tainted
ok 31 verify that is tainted
ok 32 verify that is tainted
ok 33 verify that is tainted
ok 34 verify that is tainted
ok 35 verify that is tainted
ok 36 verify that isn't tainted
ok 37 verify that is tainted
ok 38 verify that is tainted
ok 39 verify that is tainted
ok 40 verify that is tainted
ok 41 verify that is tainted
ok 42 verify that isn't tainted
ok 43 verify that is tainted
ok 44 verify that is tainted
ok 45 verify that is tainted
ok 46 verify that is tainted
ok 47 verify that is tainted
ok 48 verify that isn't tainted
ok 49 verify that isn't tainted
ok 50 verify that isn't tainted
ok 51 verify that isn't tainted
ok 52 verify that isn't tainted
ok 53 verify that isn't tainted
ok 54 verify that isn't tainted
ok 55 verify that isn't tainted
ok 56 verify that isn't tainted
ok 57 verify that is tainted
ok 58 verify that isn't tainted
ok 59 verify that isn't tainted
ok 60 verify that isn't tainted
ok 61 verify that isn't tainted
ok 62 verify that isn't tainted
ok 63 verify that isn't tainted
ok 64 verify that isn't tainted
ok 65 verify that isn't tainted
ok 66 verify that isn't tainted
ok 67 verify that isn't tainted
ok 68 verify that isn't tainted
ok 69 verify that isn't tainted
ok 70 verify that isn't tainted
ok 71 verify that is tainted
ok 72 verify that isn't tainted
ok 73 verify that is tainted
ok 74 verify that is tainted
ok 75 verify that is tainted
ok 76 verify that is tainted
ok 77 verify that is tainted
ok 78 verify that is tainted
ok 79 verify that isn't tainted
ok 80 verify that is tainted
ok 81 verify that is tainted
ok 82 verify that is tainted
ok 83 verify that is tainted
ok 84 verify that is tainted
ok 85 verify that is tainted
ok 86 verify that isn't tainted
ok 87 verify that is tainted
ok 88 verify that is tainted
ok 89 verify that is tainted
ok 90 verify that is tainted
ok 91 verify that is tainted
ok 92 verify that is tainted
ok 93 verify that isn't tainted
ok 94 verify that is tainted
ok 95 verify that is tainted
ok 96 verify that is tainted
ok 97 verify that is tainted
ok 98 verify that is tainted
ok 99 verify that is tainted
ok 100 verify that isn't tainted
ok 101 verify that isn't tainted
ok 102 verify that isn't tainted​: "a" =~ /([a-z])/
ok 103 verify that isn't tainted​: "foo.bar_baz" =~ /^(.*)[._](.*?)$/
ok 104 verify that isn't tainted
ok 105 verify that isn't tainted
ok 106 verify that isn't tainted
ok 107 verify that isn't tainted
ok 108 verify that isn't tainted
ok 109 verify that isn't tainted
ok 110 verify that isn't tainted
ok 111 verify that isn't tainted
ok 112 verify that isn't tainted
ok 113 verify that isn't tainted
ok 114 verify that isn't tainted
ok 115 verify that isn't tainted
ok 116 verify that isn't tainted
ok 117 verify that isn't tainted
ok 118 verify that isn't tainted
ok 119 verify that isn't tainted
ok 120 verify that isn't tainted
ok 121 verify that isn't tainted
ok 122 verify that isn't tainted
ok 123 verify that isn't tainted
ok 124 verify that isn't tainted
ok 125 verify that isn't tainted
ok 126 verify that isn't tainted
ok 127 verify that isn't tainted
ok 128 verify that isn't tainted
ok 129 verify that isn't tainted
ok 130 verify that isn't tainted
ok 131 verify that isn't tainted
ok 132 verify that isn't tainted
ok 133 verify that isn't tainted
ok 134 verify that isn't tainted
ok 135 verify that isn't tainted
ok 136 verify that isn't tainted
ok 137 verify that isn't tainted
ok 138 verify that isn't tainted
ok 139 verify that isn't tainted
ok 140 verify that isn't tainted
ok 141 verify that isn't tainted
ok 142 verify that isn't tainted
ok 143 verify that isn't tainted
ok 144 verify that isn't tainted
ok 145 verify that isn't tainted
ok 146 verify that isn't tainted
ok 147 verify that isn't tainted
ok 148 verify that isn't tainted
ok 149 verify that isn't tainted
ok 150 verify that isn't tainted
ok 151 verify that isn't tainted
ok 152 verify that isn't tainted
ok 153 verify that isn't tainted
ok 154 verify that isn't tainted
ok 155 verify that isn't tainted
ok 156 verify that isn't tainted
ok 157 verify that isn't tainted
ok 158 verify that isn't tainted
ok 159 verify that isn't tainted
ok 160 verify that isn't tainted
ok 161 verify that isn't tainted
ok 162 verify that isn't tainted
ok 163 verify that isn't tainted
ok 164 verify that isn't tainted
ok 165 verify that isn't tainted
ok 166 verify that isn't tainted
ok 167 verify that isn't tainted
ok 168 verify that isn't tainted
ok 169 verify that isn't tainted
ok 170 verify that isn't tainted
ok 171 verify that isn't tainted
ok 172 verify that isn't tainted
ok 173 verify that isn't tainted
ok 174 verify that isn't tainted
ok 175 verify that isn't tainted
ok 176 verify that isn't tainted
ok 177 verify that isn't tainted
ok 178 verify that isn't tainted
ok 179 verify that isn't tainted
ok 180 verify that isn't tainted
ok 181 verify that isn't tainted
ok 182 verify that isn't tainted
ok 183 verify that isn't tainted
ok 184 verify that isn't tainted
ok 185 verify that isn't tainted
ok 186 verify that isn't tainted
ok 187 verify that isn't tainted
ok 188 verify that isn't tainted
ok 189 verify that isn't tainted
ok 190 verify that isn't tainted
ok 191 verify that isn't tainted
ok 192 verify that isn't tainted
ok 193 verify that isn't tainted
ok 194 verify that isn't tainted
ok 195 verify that isn't tainted
ok 196 verify that isn't tainted
ok 197 verify that isn't tainted
ok 198 verify that isn't tainted
ok 199 verify that isn't tainted
ok 200 verify that isn't tainted
ok 201 verify that isn't tainted
ok 202 verify that isn't tainted
ok 203 verify that isn't tainted
ok 204 verify that isn't tainted​: "a" =~ /([a-z])/
ok 205 verify that isn't tainted​: "foo.bar_baz" =~ /^(.*)[._](.*?)$/
not ok 206 Verify that /[[​:upper​:]]/ matches all alpha X for which uc(X) == X and lc(X) != X # TODO
not ok 207 Verify that /[[​:lower​:]]/i matches all alpha X for which uc(X) == X and lc(X) != X # TODO
ok 208 Verify that /[[​:lower​:]]/ matches all alpha X for which lc(X) == X and uc(X) != X
ok 209 Verify that /[[​:upper​:]]/i matches all alpha X for which lc(X) == X and uc(X) != X
ok 210 Verify that \w and [​:word​:] are identical
ok 211 Verify that \d and [​:digit​:] are identical
ok 212 Verify that \s and [​:space​:] are identical
ok 213 Verify that [​:posix​:] and [​:^posix​:] are mutually exclusive
ok 214 Verify that [​:lower​:] contains at least a-z
not ok 215 Verify that [​:lower​:] is a subset of [​:alpha​:] # TODO
ok 216 Verify that [​:upper​:] contains at least A-Z
ok 217 Verify that [​:upper​:] is a subset of [​:alpha​:]
not ok 218 Verify that /[[​:lower​:]]/i is a subset of [​:alpha​:] # TODO
ok 219 Verify that [​:alpha​:] is a subset of [​:alnum​:]
ok 220 Verify that [​:digit​:] contains at least 0-9
ok 221 Verify that [​:digit​:] is a subset of [​:alnum​:]
ok 222 Verify that [​:digit​:] matches either 10 or 20 code points
ok 223 Verify that if there is a second set of digits in [​:digit​:], they are consecutive
ok 224 Verify that [​:digit​:] is a subset of [​:xdigit​:]
ok 225 Verify that [​:xdigit​:] contains at least A-F, a-f
ok 226 Verify that any additional members of [​:xdigit​:], are in groups of 6 consecutive code points
ok 227 Verify that [​:xdigit​:] is a subset of [​:graph​:]
ok 228 Verify that [​:punct​:] is a subset of [​:graph​:]
ok 229 Verify that the space character is not in [​:graph​:]
ok 230 Verify that [​:space​:] contains at least [\f\n\r\t\cK ]
ok 231 Verify that [​:blank​:] contains at least [\t ]
ok 232 Verify that [​:blank​:] is a subset of [​:space​:]
ok 233 Verify that [​:graph​:] is a subset of [​:print​:]
ok 234 Verify that the space character is in [​:print​:]
ok 235 Verify that isn't both [​:cntrl​:] and [​:print​:]
ok 236 Verify that isn't both [​:alpha​:] and [​:digit​:]
ok 237 Verify that isn't both [​:alnum​:] and [​:punct​:]
ok 238 Verify that isn't both [​:xdigit​:] and [​:punct​:]
ok 239 Verify that isn't both [​:graph​:] and [​:space​:]
ok 240 Verify that cmp works with a read-only scalar; no- vs locale
ok 241 Verify that "le", "ne", etc work
ok 242 Verify that an intervening printf doesn't change assignment results
ok 243 Verify that an intervening sprintf doesn't change assignment results
not ok 244 Verify that a different locale radix works when doing "==" with a constant
not ok 245 Verify that a different locale radix works when doing "==" with a scalar
ok 246 Verify that a different locale radix works when doing "==" with a scalar and an intervening sprintf
ok 247 Verify that can assign stringified under inner no-locale block
ok 248 Verify that "==" with a scalar still works in inner no locale
not ok 249 Verify that "==" with a scalar and an intervening sprintf still works in inner no locale
ok 250 Verify that after a no-locale block, a different locale radix still works when doing "==" with a constant
ok 251 Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar
not ok 252 Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar and an intervening sprintf
ok 253 Verify that after a no-locale block, a different locale radix can participate in an addition and function call as numeric
not ok 254 Verify that don't get warning under "==" even if radix is not a dot
ok 255 Verify that non-ASCII UTF-8 error messages are in UTF-8
ok 256 Verify that a number with a UTF-8 radix has a UTF-8 stringification
ok 257 Verify that a sprintf of a number with a UTF-8 radix yields UTF-8
ok 258 Verify that a sprintf of a number outside locale scope uses a dot radix
ok 259 Verify that a sprintf of a number back within locale scope uses locale radix
ok 260 Verify "lc(foo) cmp lc(bar)" is the same as using intermediaries for the cmp
not ok 261 Verify case insensitive matching works # TODO
ok 262 Verify atof with locale radix and negative exponent
ok 263 variable set to setlocale(BAD LOCALE) is considered uninitialized
ok 264 uc("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 265 verify that isn't tainted
ok 266 uc("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 267 verify that isn't tainted
ok 268 uc("a") in C locale (use locale; not encoded in utf8) should be "A", got "A"
ok 269 verify that is tainted
ok 270 uc("a") in C locale (use locale; encoded in utf8) should be "A", got "A"
ok 271 verify that is tainted
ok 272 uc("à") in C locale (use locale; not encoded in utf8) should be "à", got "à"
ok 273 verify that is tainted
ok 274 uc("à") in C locale (use locale; encoded in utf8) should be "à", got "à"
ok 275 verify that is tainted
ok 276 uc("ÿ") in C locale (use locale; not encoded in utf8) should be "ÿ", got "ÿ"
ok 277 verify that is tainted
ok 278 uc("ÿ") in C locale (use locale; encoded in utf8) should be "ÿ", got "ÿ"
ok 279 verify that is tainted
ok 280 uc("ff") in C locale (use locale; not encoded in utf8) should be "ff", got "ff"
ok 281 verify that isn't tainted
ok 282 uc("ff") in C locale (use locale; encoded in utf8) should be "ff", got "ff"
ok 283 verify that isn't tainted
ok 284 uc("ʼn") in C locale (use locale; not encoded in utf8) should be "ʼn", got "ʼn"
ok 285 verify that isn't tainted
ok 286 uc("ʼn") in C locale (use locale; encoded in utf8) should be "ʼn", got "ʼn"
ok 287 verify that isn't tainted
ok 288 uc("ā") in C locale (use locale; not encoded in utf8) should be "Ā", got "Ā"
ok 289 verify that isn't tainted
ok 290 uc("ā") in C locale (use locale; encoded in utf8) should be "Ā", got "Ā"
ok 291 verify that isn't tainted
ok 292 uc("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 293 verify that isn't tainted
ok 294 uc("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 295 verify that isn't tainted
ok 296 uc("a") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "A", got "A"
ok 297 verify that isn't tainted
ok 298 uc("a") in C locale (use locale '​:not_characters'; encoded in utf8) should be "A", got "A"
ok 299 verify that isn't tainted
ok 300 uc("à") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "À", got "À"
ok 301 verify that isn't tainted
ok 302 uc("à") in C locale (use locale '​:not_characters'; encoded in utf8) should be "À", got "À"
ok 303 verify that isn't tainted
ok 304 uc("ÿ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ÿ", got "Ÿ"
ok 305 verify that isn't tainted
ok 306 uc("ÿ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ÿ", got "Ÿ"
ok 307 verify that isn't tainted
ok 308 uc("ff") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "FF", got "FF"
ok 309 verify that isn't tainted
ok 310 uc("ff") in C locale (use locale '​:not_characters'; encoded in utf8) should be "FF", got "FF"
ok 311 verify that isn't tainted
ok 312 uc("ʼn") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ʼN", got "ʼN"
ok 313 verify that isn't tainted
ok 314 uc("ʼn") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ʼN", got "ʼN"
ok 315 verify that isn't tainted
ok 316 uc("ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ā", got "Ā"
ok 317 verify that isn't tainted
ok 318 uc("ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ā", got "Ā"
ok 319 verify that isn't tainted
ok 320 ucfirst("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 321 verify that isn't tainted
ok 322 ucfirst("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 323 verify that isn't tainted
ok 324 ucfirst("a") in C locale (use locale; not encoded in utf8) should be "A", got "A"
ok 325 verify that is tainted
ok 326 ucfirst("a") in C locale (use locale; encoded in utf8) should be "A", got "A"
ok 327 verify that is tainted
ok 328 ucfirst("à") in C locale (use locale; not encoded in utf8) should be "à", got "à"
ok 329 verify that is tainted
ok 330 ucfirst("à") in C locale (use locale; encoded in utf8) should be "à", got "à"
ok 331 verify that is tainted
ok 332 ucfirst("ÿ") in C locale (use locale; not encoded in utf8) should be "ÿ", got "ÿ"
ok 333 verify that is tainted
ok 334 ucfirst("ÿ") in C locale (use locale; encoded in utf8) should be "ÿ", got "ÿ"
ok 335 verify that is tainted
ok 336 ucfirst("ff") in C locale (use locale; not encoded in utf8) should be "ff", got "ff"
ok 337 verify that isn't tainted
ok 338 ucfirst("ff") in C locale (use locale; encoded in utf8) should be "ff", got "ff"
ok 339 verify that isn't tainted
ok 340 ucfirst("ʼn") in C locale (use locale; not encoded in utf8) should be "ʼn", got "ʼn"
ok 341 verify that isn't tainted
ok 342 ucfirst("ʼn") in C locale (use locale; encoded in utf8) should be "ʼn", got "ʼn"
ok 343 verify that isn't tainted
ok 344 ucfirst("ā") in C locale (use locale; not encoded in utf8) should be "Ā", got "Ā"
ok 345 verify that isn't tainted
ok 346 ucfirst("ā") in C locale (use locale; encoded in utf8) should be "Ā", got "Ā"
ok 347 verify that isn't tainted
ok 348 ucfirst("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 349 verify that isn't tainted
ok 350 ucfirst("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 351 verify that isn't tainted
ok 352 ucfirst("a") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "A", got "A"
ok 353 verify that isn't tainted
ok 354 ucfirst("a") in C locale (use locale '​:not_characters'; encoded in utf8) should be "A", got "A"
ok 355 verify that isn't tainted
ok 356 ucfirst("à") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "À", got "À"
ok 357 verify that isn't tainted
ok 358 ucfirst("à") in C locale (use locale '​:not_characters'; encoded in utf8) should be "À", got "À"
ok 359 verify that isn't tainted
ok 360 ucfirst("ÿ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ÿ", got "Ÿ"
ok 361 verify that isn't tainted
ok 362 ucfirst("ÿ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ÿ", got "Ÿ"
ok 363 verify that isn't tainted
ok 364 ucfirst("ff") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ff", got "Ff"
ok 365 verify that isn't tainted
ok 366 ucfirst("ff") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ff", got "Ff"
ok 367 verify that isn't tainted
ok 368 ucfirst("ʼn") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ʼN", got "ʼN"
ok 369 verify that isn't tainted
ok 370 ucfirst("ʼn") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ʼN", got "ʼN"
ok 371 verify that isn't tainted
ok 372 ucfirst("ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ā", got "Ā"
ok 373 verify that isn't tainted
ok 374 ucfirst("ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ā", got "Ā"
ok 375 verify that isn't tainted
ok 376 lc("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 377 verify that isn't tainted
ok 378 lc("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 379 verify that isn't tainted
ok 380 lc("A") in C locale (use locale; not encoded in utf8) should be "a", got "a"
ok 381 verify that is tainted
ok 382 lc("A") in C locale (use locale; encoded in utf8) should be "a", got "a"
ok 383 verify that is tainted
ok 384 lc("À") in C locale (use locale; not encoded in utf8) should be "À", got "À"
ok 385 verify that is tainted
ok 386 lc("À") in C locale (use locale; encoded in utf8) should be "À", got "À"
ok 387 verify that is tainted
ok 388 lc("ſ") in C locale (use locale; not encoded in utf8) should be "ſ", got "ſ"
ok 389 verify that isn't tainted
ok 390 lc("ſ") in C locale (use locale; encoded in utf8) should be "ſ", got "ſ"
ok 391 verify that isn't tainted
ok 392 lc("Ā") in C locale (use locale; not encoded in utf8) should be "ā", got "ā"
ok 393 verify that isn't tainted
ok 394 lc("Ā") in C locale (use locale; encoded in utf8) should be "ā", got "ā"
ok 395 verify that isn't tainted
ok 396 lc("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 397 verify that isn't tainted
ok 398 lc("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 399 verify that isn't tainted
ok 400 lc("A") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "a", got "a"
ok 401 verify that isn't tainted
ok 402 lc("A") in C locale (use locale '​:not_characters'; encoded in utf8) should be "a", got "a"
ok 403 verify that isn't tainted
ok 404 lc("À") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "à", got "à"
ok 405 verify that isn't tainted
ok 406 lc("À") in C locale (use locale '​:not_characters'; encoded in utf8) should be "à", got "à"
ok 407 verify that isn't tainted
ok 408 lc("ſ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ſ", got "ſ"
ok 409 verify that isn't tainted
ok 410 lc("ſ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ſ", got "ſ"
ok 411 verify that isn't tainted
ok 412 lc("Ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ā", got "ā"
ok 413 verify that isn't tainted
ok 414 lc("Ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ā", got "ā"
ok 415 verify that isn't tainted
ok 416 lcfirst("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 417 verify that isn't tainted
ok 418 lcfirst("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 419 verify that isn't tainted
ok 420 lcfirst("A") in C locale (use locale; not encoded in utf8) should be "a", got "a"
ok 421 verify that is tainted
ok 422 lcfirst("A") in C locale (use locale; encoded in utf8) should be "a", got "a"
ok 423 verify that is tainted
ok 424 lcfirst("À") in C locale (use locale; not encoded in utf8) should be "À", got "À"
ok 425 verify that is tainted
ok 426 lcfirst("À") in C locale (use locale; encoded in utf8) should be "À", got "À"
ok 427 verify that is tainted
ok 428 lcfirst("ſ") in C locale (use locale; not encoded in utf8) should be "ſ", got "ſ"
ok 429 verify that isn't tainted
ok 430 lcfirst("ſ") in C locale (use locale; encoded in utf8) should be "ſ", got "ſ"
ok 431 verify that isn't tainted
ok 432 lcfirst("Ā") in C locale (use locale; not encoded in utf8) should be "ā", got "ā"
ok 433 verify that isn't tainted
ok 434 lcfirst("Ā") in C locale (use locale; encoded in utf8) should be "ā", got "ā"
ok 435 verify that isn't tainted
ok 436 lcfirst("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 437 verify that isn't tainted
ok 438 lcfirst("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 439 verify that isn't tainted
ok 440 lcfirst("A") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "a", got "a"
ok 441 verify that isn't tainted
ok 442 lcfirst("A") in C locale (use locale '​:not_characters'; encoded in utf8) should be "a", got "a"
ok 443 verify that isn't tainted
ok 444 lcfirst("À") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "à", got "à"
ok 445 verify that isn't tainted
ok 446 lcfirst("À") in C locale (use locale '​:not_characters'; encoded in utf8) should be "à", got "à"
ok 447 verify that isn't tainted
ok 448 lcfirst("ſ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ſ", got "ſ"
ok 449 verify that isn't tainted
ok 450 lcfirst("ſ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ſ", got "ſ"
ok 451 verify that isn't tainted
ok 452 lcfirst("Ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ā", got "ā"
ok 453 verify that isn't tainted
ok 454 lcfirst("Ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ā", got "ā"
ok 455 verify that isn't tainted
ok 456 fc("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 457 verify that isn't tainted
ok 458 fc("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 459 verify that isn't tainted
ok 460 fc("A") in C locale (use locale; not encoded in utf8) should be "a", got "a"
ok 461 verify that is tainted
ok 462 fc("A") in C locale (use locale; encoded in utf8) should be "a", got "a"
ok 463 verify that is tainted
ok 464 fc("À") in C locale (use locale; not encoded in utf8) should be "À", got "À"
ok 465 verify that is tainted
ok 466 fc("À") in C locale (use locale; encoded in utf8) should be "À", got "À"
ok 467 verify that is tainted
ok 468 fc("ſ") in C locale (use locale; not encoded in utf8) should be "ſ", got "ſ"
ok 469 verify that isn't tainted
ok 470 fc("ſ") in C locale (use locale; encoded in utf8) should be "ſ", got "ſ"
ok 471 verify that isn't tainted
ok 472 fc("Ā") in C locale (use locale; not encoded in utf8) should be "ā", got "ā"
ok 473 verify that isn't tainted
ok 474 fc("Ā") in C locale (use locale; encoded in utf8) should be "ā", got "ā"
ok 475 verify that isn't tainted
ok 476 fc("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 477 verify that isn't tainted
ok 478 fc("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 479 verify that isn't tainted
ok 480 fc("A") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "a", got "a"
ok 481 verify that isn't tainted
ok 482 fc("A") in C locale (use locale '​:not_characters'; encoded in utf8) should be "a", got "a"
ok 483 verify that isn't tainted
ok 484 fc("À") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "à", got "à"
ok 485 verify that isn't tainted
ok 486 fc("À") in C locale (use locale '​:not_characters'; encoded in utf8) should be "à", got "à"
ok 487 verify that isn't tainted
ok 488 fc("ſ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "s", got "s"
ok 489 verify that isn't tainted
ok 490 fc("ſ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "s", got "s"
ok 491 verify that isn't tainted
ok 492 fc("Ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ā", got "ā"
ok 493 verify that isn't tainted
ok 494 fc("Ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ā", got "ā"
ok 495 verify that isn't tainted
# The following locales
#
# C POSIX af_ZA af_ZA.ISO8859-1 af_ZA.ISO8859-15 af_ZA.UTF-8
# am_ET am_ET.UTF-8 be_BY be_BY.CP1131 be_BY.CP1251 be_BY.ISO8859-5
# be_BY.UTF-8 bg_BG bg_BG.CP1251 bg_BG.UTF-8 ca_ES ca_ES.ISO8859-1
# ca_ES.ISO8859-15 ca_ES.UTF-8 cs_CZ cs_CZ.ISO8859-2
# cs_CZ.UTF-8 da_DK da_DK.ISO8859-1 da_DK.ISO8859-15
# da_DK.UTF-8 de_AT de_AT.ISO8859-1 de_AT.ISO8859-15
# de_AT.UTF-8 de_CH de_CH.ISO8859-1 de_CH.ISO8859-15
# de_CH.UTF-8 de_DE de_DE.ISO8859-1 de_DE.ISO8859-15
# de_DE.UTF-8 el_GR el_GR.ISO8859-7 el_GR.UTF-8 en_AU
# en_AU.ISO8859-1 en_AU.ISO8859-15 en_AU.US-ASCII en_AU.UTF-8
# en_CA en_CA.ISO8859-1 en_CA.ISO8859-15 en_CA.US-ASCII
# en_CA.UTF-8 en_GB en_GB.ISO8859-1 en_GB.ISO8859-15
# en_GB.US-ASCII en_GB.UTF-8 en_IE en_IE.UTF-8 en_NZ
# en_NZ.ISO8859-1 en_NZ.ISO8859-15 en_NZ.US-ASCII en_NZ.UTF-8
# en_US en_US.ISO8859-1 en_US.ISO8859-15 en_US.US-ASCII
# en_US.UTF-8 es_ES es_ES.ISO8859-1 es_ES.ISO8859-15
# es_ES.UTF-8 et_EE et_EE.ISO8859-15 et_EE.UTF-8 fi_FI
# fi_FI.ISO8859-1 fi_FI.ISO8859-15 fi_FI.UTF-8 fr_BE
# fr_BE.ISO8859-1 fr_BE.ISO8859-15 fr_BE.UTF-8 fr_CA
# fr_CA.ISO8859-1 fr_CA.ISO8859-15 fr_CA.UTF-8 fr_CH
# fr_CH.ISO8859-1 fr_CH.ISO8859-15 fr_CH.UTF-8 fr_FR
# fr_FR.ISO8859-1 fr_FR.ISO8859-15 fr_FR.UTF-8 he_IL
# he_IL.UTF-8 hi_IN.ISCII-DEV hr_HR hr_HR.ISO8859-2 hr_HR.UTF-8
# hu_HU hu_HU.ISO8859-2 hu_HU.UTF-8 hy_AM hy_AM.ARMSCII-8
# hy_AM.UTF-8 is_IS is_IS.ISO8859-1 is_IS.ISO8859-15
# is_IS.UTF-8 it_CH it_CH.ISO8859-1 it_CH.ISO8859-15
# it_CH.UTF-8 it_IT it_IT.ISO8859-1 it_IT.ISO8859-15
# it_IT.UTF-8 ja_JP ja_JP.SJIS ja_JP.UTF-8 ja_JP.eucJP kk_KZ
# kk_KZ.PT154 kk_KZ.UTF-8 ko_KR ko_KR.CP949 ko_KR.UTF-8
# ko_KR.eucKR lt_LT lt_LT.UTF-8 nl_BE nl_BE.ISO8859-1
# nl_BE.ISO8859-15 nl_BE.UTF-8 nl_NL nl_NL.ISO8859-1
# nl_NL.ISO8859-15 nl_NL.UTF-8 no_NO no_NO.ISO8859-1
# no_NO.ISO8859-15 no_NO.UTF-8 pl_PL pl_PL.ISO8859-2
# pl_PL.UTF-8 pt_BR pt_BR.ISO8859-1 pt_BR.UTF-8 pt_PT
# pt_PT.ISO8859-1 pt_PT.ISO8859-15 pt_PT.UTF-8 ro_RO
# ro_RO.ISO8859-2 ro_RO.UTF-8 ru_RU ru_RU.CP1251 ru_RU.CP866
# ru_RU.ISO8859-5 ru_RU.KOI8-R ru_RU.UTF-8 sk_SK sk_SK.ISO8859-2
# sk_SK.UTF-8 sl_SI sl_SI.ISO8859-2 sl_SI.UTF-8 sr_YU
# sr_YU.ISO8859-2 sr_YU.ISO8859-5 sr_YU.UTF-8 sv_SE sv_SE.ISO8859-1
# sv_SE.ISO8859-15 sv_SE.UTF-8 tr_TR tr_TR.ISO8859-9
# tr_TR.UTF-8 uk_UA uk_UA.ISO8859-5 uk_UA.KOI8-U uk_UA.UTF-8
# zh_CN zh_CN.GB18030 zh_CN.GB2312 zh_CN.GBK zh_CN.UTF-8
# zh_CN.eucCN zh_HK zh_HK.Big5HKSCS zh_HK.UTF-8 zh_TW
# zh_TW.Big5 zh_TW.UTF-8
#
# tested okay.
#
# The following locales
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
# lt_LT.ISO8859-13 lt_LT.ISO8859-4
#
# had problems.
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
Failed 5/495 subtests

Test Summary Report


../lib/locale.t (Wstat​: 0 Tests​: 495 Failed​: 5)
  Failed tests​: 244-245, 249, 252, 254
Files=1, Tests=495, 32 wallclock secs ( 0.53 usr 0.07 sys + 27.78 cusr 0.74 csys = 29.12 CPU)
Result​: FAIL
/Users/jimk/gitwork/perl

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 25, 2014

From @jkeenan

Summary of my perl5 (revision 5 version 19 subversion 9) configuration​:
  Commit id​: 5b009e5
  Platform​:
  osname=darwin, osvers=8.11.0, archname=darwin-2level
  uname='darwin macintosh-9.local 8.11.0 darwin kernel version 8.11.0​: wed oct 10 18​:26​:00 pdt 2007; root​:xnu-792.24.17~1release_ppc power macintosh powerpc '
  config_args='-des -Dusedevel'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=undef, usemultiplicity=undef
  use64bitint=undef, use64bitall=undef, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -I/usr/local/include -I/opt/local/include',
  optimize='-O3',
  cppflags='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -I/usr/local/include -I/opt/local/include'
  ccversion='', gccversion='4.0.1 (Apple Computer, Inc. build 5250)', gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
  alignbytes=8, prototype=define
  Linker and Libraries​:
  ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -L/usr/local/lib -L/opt/local/lib'
  libpth=/usr/local/lib /usr/lib /opt/local/lib
  libs=-ldbm -ldl -lm -lc
  perllibs=-ldl -lm -lc
  libc=, so=dylib, useshrplib=false, libperl=libperl.a
  gnulibc_version=''
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
  cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/opt/local/lib'

Characteristics of this binary (from libperl)​:
  Compile-time options​: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
  PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP
  PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
  PERL_USE_DEVEL USE_LARGE_FILES USE_LOCALE
  USE_LOCALE_COLLATE USE_LOCALE_CTYPE
  USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
  Built under darwin
  Compiled at Jan 24 2014 20​:22​:03
  %ENV​:
  PERLBREW_BASHRC_VERSION="0.59"
  PERLBREW_HOME="/Users/jimk/.perlbrew"
  PERLBREW_MANPATH=""
  PERLBREW_PATH="/Users/jimk/perl5/perlbrew/bin"
  PERLBREW_ROOT="/Users/jimk/perl5/perlbrew"
  PERLBREW_VERSION="0.59"
  @​INC​:
  lib
  /usr/local/lib/perl5/site_perl/5.19.9/darwin-2level
  /usr/local/lib/perl5/site_perl/5.19.9
  /usr/local/lib/perl5/5.19.9/darwin-2level
  /usr/local/lib/perl5/5.19.9
  /usr/local/lib/perl5/site_perl
  .

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 25, 2014

From @khwilliamson

On 01/24/2014 08​:09 PM, James E Keenan (via RT) wrote​:

# New Ticket Created by James E Keenan
# Please include the string​: [perl #121079]
# in the subject line of all future correspondence about this issue.
# <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=121079 >

I last successfully built and tested Perl on Darwin/PPC on Jan 19 2014
at commit 20e5bab.

Tonight I was testing a smoke-me branch I created to test alh's patch.
This branch, 5b009e5, is essentially
commit e0580a6 plus alh's patch. I
experienced new failures during 'make test' in lib/locale.t. Full
output is attached, but here are the failures​:

#####
not ok 244 Verify that a different locale radix works when doing "=="
with a constant
not ok 245 Verify that a different locale radix works when doing "=="
with a scalar
...
not ok 249 Verify that "==" with a scalar and an intervening sprintf
still works in inner no locale
...
not ok 252 Verify that after a no-locale block, a different locale radix
still works when doing "==" with a scalar and an intervening sprintf
...
not ok 254 Verify that don't get warning under "==" even if radix is not
a dot
#####

In addition, more locales had problems. Previously, I would get these
locale failures​:

#####
# The following locales
#
# lt_LT.ISO8859-13 lt_LT.ISO8859-4
#
# had problems.
#####

But this evening I got​:

#####
# The following locales
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
# lt_LT.ISO8859-13 lt_LT.ISO8859-4
#
# had problems.
#####

I have been compiling blead on this machine weekly for two years. This
is the first time I can recall problems with those three eu_ES* locales.

While I haven't bisected, suspicion naturally falls on the
locale-related commits such as a02ae65
made on Jan 22.

Thank you very much.
Jim Keenan

I have some ideas about what could be happening, but I really need a
debugger on a Darwin machine to see for sure. Until one shows up, could
you rerun the test with the environment variable PERL_DEBUG_FULL_TEST=2
set, and send me the results?

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 25, 2014

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 25, 2014

From @craigberry

On Sat, Jan 25, 2014 at 11​:26 AM, Karl Williamson
<public@​khwilliamson.com> wrote​:

I have some ideas about what could be happening, but I really need a
debugger on a Darwin machine to see for sure. Until one shows up, could you
rerun the test with the environment variable PERL_DEBUG_FULL_TEST=2 set, and
send me the results?

FWIW I can't reproduce these new problems on my Darwin PPC system, but
it's osvers=9.8.0, not osvers=8.11.0 like Jim's. This with

% git describe
v5.19.8-107-ge0580a6

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 25, 2014

From @jkeenan

On Sat Jan 25 09​:27​:02 2014, public@​khwilliamson.com wrote​:

I have some ideas about what could be happening, but I really need a
debugger on a Darwin machine to see for sure. Until one shows up, could
you rerun the test with the environment variable PERL_DEBUG_FULL_TEST=2
set, and send me the results?

Attached.

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 25, 2014

From @jkeenan

ok 1 verify that isn't tainted​: not tainted outside 'use locale'
ok 2 verify that isn't tainted
ok 3 verify that is tainted
ok 4 verify that is tainted
ok 5 verify that is tainted
ok 6 verify that is tainted
ok 7 verify that is tainted
ok 8 verify that is tainted
ok 9 verify that is tainted
ok 10 verify that is tainted
ok 11 verify that is tainted
ok 12 verify that is tainted
ok 13 verify that isn't tainted
ok 14 verify that isn't tainted
ok 15 verify that isn't tainted
ok 16 verify that isn't tainted
ok 17 verify that isn't tainted
ok 18 verify that is tainted
ok 19 verify that is tainted
ok 20 verify that is tainted
ok 21 verify that is tainted
ok 22 verify that is tainted
ok 23 verify that is tainted
ok 24 verify that isn't tainted
ok 25 verify that isn't tainted
ok 26 verify that isn't tainted
ok 27 verify that isn't tainted
ok 28 verify that isn't tainted
ok 29 verify that isn't tainted
ok 30 verify that isn't tainted
ok 31 verify that is tainted
ok 32 verify that is tainted
ok 33 verify that is tainted
ok 34 verify that is tainted
ok 35 verify that is tainted
ok 36 verify that isn't tainted
ok 37 verify that is tainted
ok 38 verify that is tainted
ok 39 verify that is tainted
ok 40 verify that is tainted
ok 41 verify that is tainted
ok 42 verify that isn't tainted
ok 43 verify that is tainted
ok 44 verify that is tainted
ok 45 verify that is tainted
ok 46 verify that is tainted
ok 47 verify that is tainted
ok 48 verify that isn't tainted
ok 49 verify that isn't tainted
ok 50 verify that isn't tainted
ok 51 verify that isn't tainted
ok 52 verify that isn't tainted
ok 53 verify that isn't tainted
ok 54 verify that isn't tainted
ok 55 verify that isn't tainted
ok 56 verify that isn't tainted
ok 57 verify that is tainted
ok 58 verify that isn't tainted
ok 59 verify that isn't tainted
ok 60 verify that isn't tainted
ok 61 verify that isn't tainted
ok 62 verify that isn't tainted
ok 63 verify that isn't tainted
ok 64 verify that isn't tainted
ok 65 verify that isn't tainted
ok 66 verify that isn't tainted
ok 67 verify that isn't tainted
ok 68 verify that isn't tainted
ok 69 verify that isn't tainted
ok 70 verify that isn't tainted
ok 71 verify that is tainted
ok 72 verify that isn't tainted
ok 73 verify that is tainted
ok 74 verify that is tainted
ok 75 verify that is tainted
ok 76 verify that is tainted
ok 77 verify that is tainted
ok 78 verify that is tainted
ok 79 verify that isn't tainted
ok 80 verify that is tainted
ok 81 verify that is tainted
ok 82 verify that is tainted
ok 83 verify that is tainted
ok 84 verify that is tainted
ok 85 verify that is tainted
ok 86 verify that isn't tainted
ok 87 verify that is tainted
ok 88 verify that is tainted
ok 89 verify that is tainted
ok 90 verify that is tainted
ok 91 verify that is tainted
ok 92 verify that is tainted
ok 93 verify that isn't tainted
ok 94 verify that is tainted
ok 95 verify that is tainted
ok 96 verify that is tainted
ok 97 verify that is tainted
ok 98 verify that is tainted
ok 99 verify that is tainted
ok 100 verify that isn't tainted
ok 101 verify that isn't tainted
ok 102 verify that isn't tainted​: "a" =~ /([a-z])/
ok 103 verify that isn't tainted​: "foo.bar_baz" =~ /^(.*)[._](.*?)$/
ok 104 verify that isn't tainted
ok 105 verify that isn't tainted
ok 106 verify that isn't tainted
ok 107 verify that isn't tainted
ok 108 verify that isn't tainted
ok 109 verify that isn't tainted
ok 110 verify that isn't tainted
ok 111 verify that isn't tainted
ok 112 verify that isn't tainted
ok 113 verify that isn't tainted
ok 114 verify that isn't tainted
ok 115 verify that isn't tainted
ok 116 verify that isn't tainted
ok 117 verify that isn't tainted
ok 118 verify that isn't tainted
ok 119 verify that isn't tainted
ok 120 verify that isn't tainted
ok 121 verify that isn't tainted
ok 122 verify that isn't tainted
ok 123 verify that isn't tainted
ok 124 verify that isn't tainted
ok 125 verify that isn't tainted
ok 126 verify that isn't tainted
ok 127 verify that isn't tainted
ok 128 verify that isn't tainted
ok 129 verify that isn't tainted
ok 130 verify that isn't tainted
ok 131 verify that isn't tainted
ok 132 verify that isn't tainted
ok 133 verify that isn't tainted
ok 134 verify that isn't tainted
ok 135 verify that isn't tainted
ok 136 verify that isn't tainted
ok 137 verify that isn't tainted
ok 138 verify that isn't tainted
ok 139 verify that isn't tainted
ok 140 verify that isn't tainted
ok 141 verify that isn't tainted
ok 142 verify that isn't tainted
ok 143 verify that isn't tainted
ok 144 verify that isn't tainted
ok 145 verify that isn't tainted
ok 146 verify that isn't tainted
ok 147 verify that isn't tainted
ok 148 verify that isn't tainted
ok 149 verify that isn't tainted
ok 150 verify that isn't tainted
ok 151 verify that isn't tainted
ok 152 verify that isn't tainted
ok 153 verify that isn't tainted
ok 154 verify that isn't tainted
ok 155 verify that isn't tainted
ok 156 verify that isn't tainted
ok 157 verify that isn't tainted
ok 158 verify that isn't tainted
ok 159 verify that isn't tainted
ok 160 verify that isn't tainted
ok 161 verify that isn't tainted
ok 162 verify that isn't tainted
ok 163 verify that isn't tainted
ok 164 verify that isn't tainted
ok 165 verify that isn't tainted
ok 166 verify that isn't tainted
ok 167 verify that isn't tainted
ok 168 verify that isn't tainted
ok 169 verify that isn't tainted
ok 170 verify that isn't tainted
ok 171 verify that isn't tainted
ok 172 verify that isn't tainted
ok 173 verify that isn't tainted
ok 174 verify that isn't tainted
ok 175 verify that isn't tainted
ok 176 verify that isn't tainted
ok 177 verify that isn't tainted
ok 178 verify that isn't tainted
ok 179 verify that isn't tainted
ok 180 verify that isn't tainted
ok 181 verify that isn't tainted
ok 182 verify that isn't tainted
ok 183 verify that isn't tainted
ok 184 verify that isn't tainted
ok 185 verify that isn't tainted
ok 186 verify that isn't tainted
ok 187 verify that isn't tainted
ok 188 verify that isn't tainted
ok 189 verify that isn't tainted
ok 190 verify that isn't tainted
ok 191 verify that isn't tainted
ok 192 verify that isn't tainted
ok 193 verify that isn't tainted
ok 194 verify that isn't tainted
ok 195 verify that isn't tainted
ok 196 verify that isn't tainted
ok 197 verify that isn't tainted
ok 198 verify that isn't tainted
ok 199 verify that isn't tainted
ok 200 verify that isn't tainted
ok 201 verify that isn't tainted
ok 202 verify that isn't tainted
ok 203 verify that isn't tainted
ok 204 verify that isn't tainted​: "a" =~ /([a-z])/
ok 205 verify that isn't tainted​: "foo.bar_baz" =~ /^(.*)[._](.*?)$/
# Argument "1'23" isn't numeric in numeric eq (==) at lib/locale.t line 1417.

# Argument "1'23" isn't numeric in numeric eq (==) at lib/locale.t line 1419.

# Argument "1'23" isn't numeric in numeric eq (==) at lib/locale.t line 1417.

# Argument "1'23" isn't numeric in numeric eq (==) at lib/locale.t line 1419.

# Argument "1'23" isn't numeric in numeric eq (==) at lib/locale.t line 1417.

# Argument "1'23" isn't numeric in numeric eq (==) at lib/locale.t line 1419.

# Argument "1'23" isn't numeric in numeric eq (==) at lib/locale.t line 1470.

# Argument "1'23" isn't numeric in numeric eq (==) at lib/locale.t line 1472.

# 99.5% of locales pass the following test, so it is likely that the failures
# are errors in the locale definitions. The test is marked TODO, as the
# problem is not likely to be Perl's
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 206'
not ok 206 Verify that /[[​:upper​:]]/ matches all alpha X for which uc(X) == X and lc(X) != X # TODO
# 99.5% of locales pass the following test, so it is likely that the failures
# are errors in the locale definitions. The test is marked TODO, as the
# problem is not likely to be Perl's
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 207'
not ok 207 Verify that /[[​:lower​:]]/i matches all alpha X for which uc(X) == X and lc(X) != X # TODO
ok 208 Verify that /[[​:lower​:]]/ matches all alpha X for which lc(X) == X and uc(X) != X
ok 209 Verify that /[[​:upper​:]]/i matches all alpha X for which lc(X) == X and uc(X) != X
ok 210 Verify that \w and [​:word​:] are identical
ok 211 Verify that \d and [​:digit​:] are identical
ok 212 Verify that \s and [​:space​:] are identical
ok 213 Verify that [​:posix​:] and [​:^posix​:] are mutually exclusive
ok 214 Verify that [​:lower​:] contains at least a-z
# 99.5% of locales pass the following test, so it is likely that the failures
# are errors in the locale definitions. The test is marked TODO, as the
# problem is not likely to be Perl's
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 215'
not ok 215 Verify that [​:lower​:] is a subset of [​:alpha​:] # TODO
ok 216 Verify that [​:upper​:] contains at least A-Z
ok 217 Verify that [​:upper​:] is a subset of [​:alpha​:]
# 99.5% of locales pass the following test, so it is likely that the failures
# are errors in the locale definitions. The test is marked TODO, as the
# problem is not likely to be Perl's
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 218'
not ok 218 Verify that /[[​:lower​:]]/i is a subset of [​:alpha​:] # TODO
ok 219 Verify that [​:alpha​:] is a subset of [​:alnum​:]
ok 220 Verify that [​:digit​:] contains at least 0-9
ok 221 Verify that [​:digit​:] is a subset of [​:alnum​:]
ok 222 Verify that [​:digit​:] matches either 10 or 20 code points
ok 223 Verify that if there is a second set of digits in [​:digit​:], they are consecutive
ok 224 Verify that [​:digit​:] is a subset of [​:xdigit​:]
ok 225 Verify that [​:xdigit​:] contains at least A-F, a-f
ok 226 Verify that any additional members of [​:xdigit​:], are in groups of 6 consecutive code points
ok 227 Verify that [​:xdigit​:] is a subset of [​:graph​:]
ok 228 Verify that [​:punct​:] is a subset of [​:graph​:]
ok 229 Verify that the space character is not in [​:graph​:]
ok 230 Verify that [​:space​:] contains at least [\f\n\r\t\cK ]
ok 231 Verify that [​:blank​:] contains at least [\t ]
ok 232 Verify that [​:blank​:] is a subset of [​:space​:]
ok 233 Verify that [​:graph​:] is a subset of [​:print​:]
ok 234 Verify that the space character is in [​:print​:]
ok 235 Verify that isn't both [​:cntrl​:] and [​:print​:]
ok 236 Verify that isn't both [​:alpha​:] and [​:digit​:]
ok 237 Verify that isn't both [​:alnum​:] and [​:punct​:]
ok 238 Verify that isn't both [​:xdigit​:] and [​:punct​:]
ok 239 Verify that isn't both [​:graph​:] and [​:space​:]
ok 240 Verify that cmp works with a read-only scalar; no- vs locale
ok 241 Verify that "le", "ne", etc work
ok 242 Verify that an intervening printf doesn't change assignment results
ok 243 Verify that an intervening sprintf doesn't change assignment results
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 244'
not ok 244 Verify that a different locale radix works when doing "==" with a constant
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 245'
not ok 245 Verify that a different locale radix works when doing "==" with a scalar
ok 246 Verify that a different locale radix works when doing "==" with a scalar and an intervening sprintf
ok 247 Verify that can assign stringified under inner no-locale block
ok 248 Verify that "==" with a scalar still works in inner no locale
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 249'
not ok 249 Verify that "==" with a scalar and an intervening sprintf still works in inner no locale
ok 250 Verify that after a no-locale block, a different locale radix still works when doing "==" with a constant
ok 251 Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 252'
not ok 252 Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar and an intervening sprintf
ok 253 Verify that after a no-locale block, a different locale radix can participate in an addition and function call as numeric
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 254'
not ok 254 Verify that don't get warning under "==" even if radix is not a dot
ok 255 Verify that non-ASCII UTF-8 error messages are in UTF-8
ok 256 Verify that a number with a UTF-8 radix has a UTF-8 stringification
ok 257 Verify that a sprintf of a number with a UTF-8 radix yields UTF-8
ok 258 Verify that a sprintf of a number outside locale scope uses a dot radix
ok 259 Verify that a sprintf of a number back within locale scope uses locale radix
ok 260 Verify "lc(foo) cmp lc(bar)" is the same as using intermediaries for the cmp
# 99.5% of locales pass the following test, so it is likely that the failures
# are errors in the locale definitions. The test is marked TODO, as the
# problem is not likely to be Perl's
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
# Then look at that output for lines that match 'failed 261'
not ok 261 Verify case insensitive matching works # TODO
ok 262 Verify atof with locale radix and negative exponent
ok 263 variable set to setlocale(BAD LOCALE) is considered uninitialized
ok 264 uc("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 265 verify that isn't tainted
ok 266 uc("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 267 verify that isn't tainted
ok 268 uc("a") in C locale (use locale; not encoded in utf8) should be "A", got "A"
ok 269 verify that is tainted
ok 270 uc("a") in C locale (use locale; encoded in utf8) should be "A", got "A"
ok 271 verify that is tainted
ok 272 uc("à") in C locale (use locale; not encoded in utf8) should be "à", got "à"
ok 273 verify that is tainted
ok 274 uc("à") in C locale (use locale; encoded in utf8) should be "à", got "à"
ok 275 verify that is tainted
ok 276 uc("ÿ") in C locale (use locale; not encoded in utf8) should be "ÿ", got "ÿ"
ok 277 verify that is tainted
ok 278 uc("ÿ") in C locale (use locale; encoded in utf8) should be "ÿ", got "ÿ"
ok 279 verify that is tainted
ok 280 uc("ff") in C locale (use locale; not encoded in utf8) should be "ff", got "ff"
ok 281 verify that isn't tainted
ok 282 uc("ff") in C locale (use locale; encoded in utf8) should be "ff", got "ff"
ok 283 verify that isn't tainted
ok 284 uc("ʼn") in C locale (use locale; not encoded in utf8) should be "ʼn", got "ʼn"
ok 285 verify that isn't tainted
ok 286 uc("ʼn") in C locale (use locale; encoded in utf8) should be "ʼn", got "ʼn"
ok 287 verify that isn't tainted
ok 288 uc("ā") in C locale (use locale; not encoded in utf8) should be "Ā", got "Ā"
ok 289 verify that isn't tainted
ok 290 uc("ā") in C locale (use locale; encoded in utf8) should be "Ā", got "Ā"
ok 291 verify that isn't tainted
ok 292 uc("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 293 verify that isn't tainted
ok 294 uc("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 295 verify that isn't tainted
ok 296 uc("a") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "A", got "A"
ok 297 verify that isn't tainted
ok 298 uc("a") in C locale (use locale '​:not_characters'; encoded in utf8) should be "A", got "A"
ok 299 verify that isn't tainted
ok 300 uc("à") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "À", got "À"
ok 301 verify that isn't tainted
ok 302 uc("à") in C locale (use locale '​:not_characters'; encoded in utf8) should be "À", got "À"
ok 303 verify that isn't tainted
ok 304 uc("ÿ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ÿ", got "Ÿ"
ok 305 verify that isn't tainted
ok 306 uc("ÿ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ÿ", got "Ÿ"
ok 307 verify that isn't tainted
ok 308 uc("ff") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "FF", got "FF"
ok 309 verify that isn't tainted
ok 310 uc("ff") in C locale (use locale '​:not_characters'; encoded in utf8) should be "FF", got "FF"
ok 311 verify that isn't tainted
ok 312 uc("ʼn") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ʼN", got "ʼN"
ok 313 verify that isn't tainted
ok 314 uc("ʼn") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ʼN", got "ʼN"
ok 315 verify that isn't tainted
ok 316 uc("ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ā", got "Ā"
ok 317 verify that isn't tainted
ok 318 uc("ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ā", got "Ā"
ok 319 verify that isn't tainted
ok 320 ucfirst("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 321 verify that isn't tainted
ok 322 ucfirst("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 323 verify that isn't tainted
ok 324 ucfirst("a") in C locale (use locale; not encoded in utf8) should be "A", got "A"
ok 325 verify that is tainted
ok 326 ucfirst("a") in C locale (use locale; encoded in utf8) should be "A", got "A"
ok 327 verify that is tainted
ok 328 ucfirst("à") in C locale (use locale; not encoded in utf8) should be "à", got "à"
ok 329 verify that is tainted
ok 330 ucfirst("à") in C locale (use locale; encoded in utf8) should be "à", got "à"
ok 331 verify that is tainted
ok 332 ucfirst("ÿ") in C locale (use locale; not encoded in utf8) should be "ÿ", got "ÿ"
ok 333 verify that is tainted
ok 334 ucfirst("ÿ") in C locale (use locale; encoded in utf8) should be "ÿ", got "ÿ"
ok 335 verify that is tainted
ok 336 ucfirst("ff") in C locale (use locale; not encoded in utf8) should be "ff", got "ff"
ok 337 verify that isn't tainted
ok 338 ucfirst("ff") in C locale (use locale; encoded in utf8) should be "ff", got "ff"
ok 339 verify that isn't tainted
ok 340 ucfirst("ʼn") in C locale (use locale; not encoded in utf8) should be "ʼn", got "ʼn"
ok 341 verify that isn't tainted
ok 342 ucfirst("ʼn") in C locale (use locale; encoded in utf8) should be "ʼn", got "ʼn"
ok 343 verify that isn't tainted
ok 344 ucfirst("ā") in C locale (use locale; not encoded in utf8) should be "Ā", got "Ā"
ok 345 verify that isn't tainted
ok 346 ucfirst("ā") in C locale (use locale; encoded in utf8) should be "Ā", got "Ā"
ok 347 verify that isn't tainted
ok 348 ucfirst("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 349 verify that isn't tainted
ok 350 ucfirst("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 351 verify that isn't tainted
ok 352 ucfirst("a") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "A", got "A"
ok 353 verify that isn't tainted
ok 354 ucfirst("a") in C locale (use locale '​:not_characters'; encoded in utf8) should be "A", got "A"
ok 355 verify that isn't tainted
ok 356 ucfirst("à") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "À", got "À"
ok 357 verify that isn't tainted
ok 358 ucfirst("à") in C locale (use locale '​:not_characters'; encoded in utf8) should be "À", got "À"
ok 359 verify that isn't tainted
ok 360 ucfirst("ÿ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ÿ", got "Ÿ"
ok 361 verify that isn't tainted
ok 362 ucfirst("ÿ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ÿ", got "Ÿ"
ok 363 verify that isn't tainted
ok 364 ucfirst("ff") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ff", got "Ff"
ok 365 verify that isn't tainted
ok 366 ucfirst("ff") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ff", got "Ff"
ok 367 verify that isn't tainted
ok 368 ucfirst("ʼn") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ʼN", got "ʼN"
ok 369 verify that isn't tainted
ok 370 ucfirst("ʼn") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ʼN", got "ʼN"
ok 371 verify that isn't tainted
ok 372 ucfirst("ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "Ā", got "Ā"
ok 373 verify that isn't tainted
ok 374 ucfirst("ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "Ā", got "Ā"
ok 375 verify that isn't tainted
ok 376 lc("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 377 verify that isn't tainted
ok 378 lc("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 379 verify that isn't tainted
ok 380 lc("A") in C locale (use locale; not encoded in utf8) should be "a", got "a"
ok 381 verify that is tainted
ok 382 lc("A") in C locale (use locale; encoded in utf8) should be "a", got "a"
ok 383 verify that is tainted
ok 384 lc("À") in C locale (use locale; not encoded in utf8) should be "À", got "À"
ok 385 verify that is tainted
ok 386 lc("À") in C locale (use locale; encoded in utf8) should be "À", got "À"
ok 387 verify that is tainted
ok 388 lc("ſ") in C locale (use locale; not encoded in utf8) should be "ſ", got "ſ"
ok 389 verify that isn't tainted
ok 390 lc("ſ") in C locale (use locale; encoded in utf8) should be "ſ", got "ſ"
ok 391 verify that isn't tainted
ok 392 lc("Ā") in C locale (use locale; not encoded in utf8) should be "ā", got "ā"
ok 393 verify that isn't tainted
ok 394 lc("Ā") in C locale (use locale; encoded in utf8) should be "ā", got "ā"
ok 395 verify that isn't tainted
ok 396 lc("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 397 verify that isn't tainted
ok 398 lc("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 399 verify that isn't tainted
ok 400 lc("A") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "a", got "a"
ok 401 verify that isn't tainted
ok 402 lc("A") in C locale (use locale '​:not_characters'; encoded in utf8) should be "a", got "a"
ok 403 verify that isn't tainted
ok 404 lc("À") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "à", got "à"
ok 405 verify that isn't tainted
ok 406 lc("À") in C locale (use locale '​:not_characters'; encoded in utf8) should be "à", got "à"
ok 407 verify that isn't tainted
ok 408 lc("ſ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ſ", got "ſ"
ok 409 verify that isn't tainted
ok 410 lc("ſ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ſ", got "ſ"
ok 411 verify that isn't tainted
ok 412 lc("Ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ā", got "ā"
ok 413 verify that isn't tainted
ok 414 lc("Ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ā", got "ā"
ok 415 verify that isn't tainted
ok 416 lcfirst("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 417 verify that isn't tainted
ok 418 lcfirst("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 419 verify that isn't tainted
ok 420 lcfirst("A") in C locale (use locale; not encoded in utf8) should be "a", got "a"
ok 421 verify that is tainted
ok 422 lcfirst("A") in C locale (use locale; encoded in utf8) should be "a", got "a"
ok 423 verify that is tainted
ok 424 lcfirst("À") in C locale (use locale; not encoded in utf8) should be "À", got "À"
ok 425 verify that is tainted
ok 426 lcfirst("À") in C locale (use locale; encoded in utf8) should be "À", got "À"
ok 427 verify that is tainted
ok 428 lcfirst("ſ") in C locale (use locale; not encoded in utf8) should be "ſ", got "ſ"
ok 429 verify that isn't tainted
ok 430 lcfirst("ſ") in C locale (use locale; encoded in utf8) should be "ſ", got "ſ"
ok 431 verify that isn't tainted
ok 432 lcfirst("Ā") in C locale (use locale; not encoded in utf8) should be "ā", got "ā"
ok 433 verify that isn't tainted
ok 434 lcfirst("Ā") in C locale (use locale; encoded in utf8) should be "ā", got "ā"
ok 435 verify that isn't tainted
ok 436 lcfirst("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 437 verify that isn't tainted
ok 438 lcfirst("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 439 verify that isn't tainted
ok 440 lcfirst("A") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "a", got "a"
ok 441 verify that isn't tainted
ok 442 lcfirst("A") in C locale (use locale '​:not_characters'; encoded in utf8) should be "a", got "a"
ok 443 verify that isn't tainted
ok 444 lcfirst("À") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "à", got "à"
ok 445 verify that isn't tainted
ok 446 lcfirst("À") in C locale (use locale '​:not_characters'; encoded in utf8) should be "à", got "à"
ok 447 verify that isn't tainted
ok 448 lcfirst("ſ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ſ", got "ſ"
ok 449 verify that isn't tainted
ok 450 lcfirst("ſ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ſ", got "ſ"
ok 451 verify that isn't tainted
ok 452 lcfirst("Ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ā", got "ā"
ok 453 verify that isn't tainted
ok 454 lcfirst("Ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ā", got "ā"
ok 455 verify that isn't tainted
ok 456 fc("") in C locale (use locale; not encoded in utf8) should be "", got ""
ok 457 verify that isn't tainted
ok 458 fc("") in C locale (use locale; encoded in utf8) should be "", got ""
ok 459 verify that isn't tainted
ok 460 fc("A") in C locale (use locale; not encoded in utf8) should be "a", got "a"
ok 461 verify that is tainted
ok 462 fc("A") in C locale (use locale; encoded in utf8) should be "a", got "a"
ok 463 verify that is tainted
ok 464 fc("À") in C locale (use locale; not encoded in utf8) should be "À", got "À"
ok 465 verify that is tainted
ok 466 fc("À") in C locale (use locale; encoded in utf8) should be "À", got "À"
ok 467 verify that is tainted
ok 468 fc("ſ") in C locale (use locale; not encoded in utf8) should be "ſ", got "ſ"
ok 469 verify that isn't tainted
ok 470 fc("ſ") in C locale (use locale; encoded in utf8) should be "ſ", got "ſ"
ok 471 verify that isn't tainted
ok 472 fc("Ā") in C locale (use locale; not encoded in utf8) should be "ā", got "ā"
ok 473 verify that isn't tainted
ok 474 fc("Ā") in C locale (use locale; encoded in utf8) should be "ā", got "ā"
ok 475 verify that isn't tainted
ok 476 fc("") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "", got ""
ok 477 verify that isn't tainted
ok 478 fc("") in C locale (use locale '​:not_characters'; encoded in utf8) should be "", got ""
ok 479 verify that isn't tainted
ok 480 fc("A") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "a", got "a"
ok 481 verify that isn't tainted
ok 482 fc("A") in C locale (use locale '​:not_characters'; encoded in utf8) should be "a", got "a"
ok 483 verify that isn't tainted
ok 484 fc("À") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "à", got "à"
ok 485 verify that isn't tainted
ok 486 fc("À") in C locale (use locale '​:not_characters'; encoded in utf8) should be "à", got "à"
ok 487 verify that isn't tainted
ok 488 fc("ſ") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "s", got "s"
ok 489 verify that isn't tainted
ok 490 fc("ſ") in C locale (use locale '​:not_characters'; encoded in utf8) should be "s", got "s"
ok 491 verify that isn't tainted
ok 492 fc("Ā") in C locale (use locale '​:not_characters'; not encoded in utf8) should be "ā", got "ā"
ok 493 verify that isn't tainted
ok 494 fc("Ā") in C locale (use locale '​:not_characters'; encoded in utf8) should be "ā", got "ā"
ok 495 verify that isn't tainted
#
# The locale definition
#
# lt_LT.ISO8859-4
#
# on your system may have errors because the locale test 206
# "Verify that /[[​:upper​:]]/ matches all alpha X for which uc(X) == X and lc(X) != X"
# failed in that locale.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definition
#
# lt_LT.ISO8859-4
#
# on your system may have errors because the locale test 207
# "Verify that /[[​:lower​:]]/i matches all alpha X for which uc(X) == X and lc(X) != X"
# failed in that locale.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definition
#
# lt_LT.ISO8859-13
#
# on your system may have errors because the locale test 215
# "Verify that [​:lower​:] is a subset of [​:alpha​:]"
# failed in that locale.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definition
#
# lt_LT.ISO8859-13
#
# on your system may have errors because the locale test 218
# "Verify that /[[​:lower​:]]/i is a subset of [​:alpha​:]"
# failed in that locale.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definitions
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
#
# on your system may have errors because the locale test 244
# "Verify that a different locale radix works when doing "==" with a constant"
# failed in those locales.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definitions
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
#
# on your system may have errors because the locale test 245
# "Verify that a different locale radix works when doing "==" with a scalar"
# failed in those locales.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definitions
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
#
# on your system may have errors because the locale test 249
# "Verify that "==" with a scalar and an intervening sprintf still works in inner no locale"
# failed in those locales.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definitions
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
#
# on your system may have errors because the locale test 252
# "Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar and an intervening sprintf"
# failed in those locales.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definitions
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
#
# on your system may have errors because the locale test 254
# "Verify that don't get warning under "==" even if radix is not a dot"
# failed in those locales.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
#
# The locale definition
#
# lt_LT.ISO8859-4
#
# on your system may have errors because the locale test 261
# "Verify case insensitive matching works"
# failed in that locale.
#
# If your users are not using these locales you are safe for the moment,
# but please report this failure first to perlbug@​perl.com using the
# perlbug script (as described in the INSTALL file) so that the exact
# details of the failures can be sorted out first and then your operating
# system supplier can be alerted about these anomalies.
#
# The following locales
#
# C POSIX af_ZA af_ZA.ISO8859-1 af_ZA.ISO8859-15 af_ZA.UTF-8
# am_ET am_ET.UTF-8 be_BY be_BY.CP1131 be_BY.CP1251 be_BY.ISO8859-5
# be_BY.UTF-8 bg_BG bg_BG.CP1251 bg_BG.UTF-8 ca_ES ca_ES.ISO8859-1
# ca_ES.ISO8859-15 ca_ES.UTF-8 cs_CZ cs_CZ.ISO8859-2
# cs_CZ.UTF-8 da_DK da_DK.ISO8859-1 da_DK.ISO8859-15
# da_DK.UTF-8 de_AT de_AT.ISO8859-1 de_AT.ISO8859-15
# de_AT.UTF-8 de_CH de_CH.ISO8859-1 de_CH.ISO8859-15
# de_CH.UTF-8 de_DE de_DE.ISO8859-1 de_DE.ISO8859-15
# de_DE.UTF-8 el_GR el_GR.ISO8859-7 el_GR.UTF-8 en_AU
# en_AU.ISO8859-1 en_AU.ISO8859-15 en_AU.US-ASCII en_AU.UTF-8
# en_CA en_CA.ISO8859-1 en_CA.ISO8859-15 en_CA.US-ASCII
# en_CA.UTF-8 en_GB en_GB.ISO8859-1 en_GB.ISO8859-15
# en_GB.US-ASCII en_GB.UTF-8 en_IE en_IE.UTF-8 en_NZ
# en_NZ.ISO8859-1 en_NZ.ISO8859-15 en_NZ.US-ASCII en_NZ.UTF-8
# en_US en_US.ISO8859-1 en_US.ISO8859-15 en_US.US-ASCII
# en_US.UTF-8 es_ES es_ES.ISO8859-1 es_ES.ISO8859-15
# es_ES.UTF-8 et_EE et_EE.ISO8859-15 et_EE.UTF-8 fi_FI
# fi_FI.ISO8859-1 fi_FI.ISO8859-15 fi_FI.UTF-8 fr_BE
# fr_BE.ISO8859-1 fr_BE.ISO8859-15 fr_BE.UTF-8 fr_CA
# fr_CA.ISO8859-1 fr_CA.ISO8859-15 fr_CA.UTF-8 fr_CH
# fr_CH.ISO8859-1 fr_CH.ISO8859-15 fr_CH.UTF-8 fr_FR
# fr_FR.ISO8859-1 fr_FR.ISO8859-15 fr_FR.UTF-8 he_IL
# he_IL.UTF-8 hi_IN.ISCII-DEV hr_HR hr_HR.ISO8859-2 hr_HR.UTF-8
# hu_HU hu_HU.ISO8859-2 hu_HU.UTF-8 hy_AM hy_AM.ARMSCII-8
# hy_AM.UTF-8 is_IS is_IS.ISO8859-1 is_IS.ISO8859-15
# is_IS.UTF-8 it_CH it_CH.ISO8859-1 it_CH.ISO8859-15
# it_CH.UTF-8 it_IT it_IT.ISO8859-1 it_IT.ISO8859-15
# it_IT.UTF-8 ja_JP ja_JP.SJIS ja_JP.UTF-8 ja_JP.eucJP kk_KZ
# kk_KZ.PT154 kk_KZ.UTF-8 ko_KR ko_KR.CP949 ko_KR.UTF-8
# ko_KR.eucKR lt_LT lt_LT.UTF-8 nl_BE nl_BE.ISO8859-1
# nl_BE.ISO8859-15 nl_BE.UTF-8 nl_NL nl_NL.ISO8859-1
# nl_NL.ISO8859-15 nl_NL.UTF-8 no_NO no_NO.ISO8859-1
# no_NO.ISO8859-15 no_NO.UTF-8 pl_PL pl_PL.ISO8859-2
# pl_PL.UTF-8 pt_BR pt_BR.ISO8859-1 pt_BR.UTF-8 pt_PT
# pt_PT.ISO8859-1 pt_PT.ISO8859-15 pt_PT.UTF-8 ro_RO
# ro_RO.ISO8859-2 ro_RO.UTF-8 ru_RU ru_RU.CP1251 ru_RU.CP866
# ru_RU.ISO8859-5 ru_RU.KOI8-R ru_RU.UTF-8 sk_SK sk_SK.ISO8859-2
# sk_SK.UTF-8 sl_SI sl_SI.ISO8859-2 sl_SI.UTF-8 sr_YU
# sr_YU.ISO8859-2 sr_YU.ISO8859-5 sr_YU.UTF-8 sv_SE sv_SE.ISO8859-1
# sv_SE.ISO8859-15 sv_SE.UTF-8 tr_TR tr_TR.ISO8859-9
# tr_TR.UTF-8 uk_UA uk_UA.ISO8859-5 uk_UA.KOI8-U uk_UA.UTF-8
# zh_CN zh_CN.GB18030 zh_CN.GB2312 zh_CN.GBK zh_CN.UTF-8
# zh_CN.eucCN zh_HK zh_HK.Big5HKSCS zh_HK.UTF-8 zh_TW
# zh_TW.Big5 zh_TW.UTF-8
#
# tested okay.
#
# The following locales
#
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
# lt_LT.ISO8859-13 lt_LT.ISO8859-4
#
# had problems.
#
# For more details, rerun, with environment variable PERL_DEBUG_FULL_TEST=1.
1..495

[�[01;31mperl�[00m] �[01;33m505 �[00m$ �[K
[�[01;31mperl�[00m] �[01;33m505 �[00m$ exit

Script done on Sat Jan 25 15​:50​:39 2014

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Jan 30, 2014

From @jkeenan

As of commit 59100ba, no improvement.

# The following locales^M
#^M
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8^M
# lt_LT.ISO8859-13 lt_LT.ISO8859-4^M
#^M
# had problems.^M

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 9, 2014

From @jkeenan

On Thu Jan 30 05​:04​:35 2014, jkeenan wrote​:

As of commit 59100ba, no improvement.

# The following locales^M
#^M
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8^M
# lt_LT.ISO8859-13 lt_LT.ISO8859-4^M
#^M
# had problems.^M

Karl,

Have you had a chance to take a look at this?

Given the age of this platform, *fixing* the problem would be nice but *understanding* the cause of the breakage is probably more important.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 10, 2014

From @khwilliamson

On 02/09/2014 11​:19 AM, James E Keenan via RT wrote​:

On Thu Jan 30 05​:04​:35 2014, jkeenan wrote​:

As of commit 59100ba, no improvement.

# The following locales^M
#^M
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8^M
# lt_LT.ISO8859-13 lt_LT.ISO8859-4^M
#^M
# had problems.^M

Karl,

Have you had a chance to take a look at this?

Given the age of this platform, *fixing* the problem would be nice but *understanding* the cause of the breakage is probably more important.

Thank you very much.
Jim Keenan

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=121079

I'm going to need the output of a run with the environment variable set
properly. I don't know what you were doing, but you haven't
successfully set it. If you are doing it on a separate line, in Linux,
it needs to be exported. A single line command on Linux would be

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T lib/locale.t > locale.log 2>&1

I presume the same thing works on Darwin, but don't know for sure

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 10, 2014

From @jkeenan

On Sun Feb 09 20​:13​:07 2014, public@​khwilliamson.com wrote​:

On 02/09/2014 11​:19 AM, James E Keenan via RT wrote​:

On Thu Jan 30 05​:04​:35 2014, jkeenan wrote​:

As of commit 59100ba, no
improvement.

# The following locales^M
#^M
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8^M
# lt_LT.ISO8859-13 lt_LT.ISO8859-4^M
#^M
# had problems.^M

Karl,

Have you had a chance to take a look at this?

Given the age of this platform, *fixing* the problem would be nice
but *understanding* the cause of the breakage is probably more
important.

Thank you very much.
Jim Keenan

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=121079

I'm going to need the output of a run with the environment variable
set
properly. I don't know what you were doing, but you haven't
successfully set it. If you are doing it on a separate line, in
Linux,
it needs to be exported. A single line command on Linux would be

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T lib/locale.t > locale.log 2>&1

I presume the same thing works on Darwin, but don't know for sure

Please let me know if the attached works for you.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 10, 2014

From @jkeenan

121079-locale-log.txt

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 10, 2014

From @khwilliamson

On 02/09/2014 09​:12 PM, Karl Williamson wrote​:

On 02/09/2014 11​:19 AM, James E Keenan via RT wrote​:

On Thu Jan 30 05​:04​:35 2014, jkeenan wrote​:

As of commit 59100ba, no improvement.

# The following locales^M
#^M
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8^M
# lt_LT.ISO8859-13 lt_LT.ISO8859-4^M
#^M
# had problems.^M

Karl,

Have you had a chance to take a look at this?

Given the age of this platform, *fixing* the problem would be nice but
*understanding* the cause of the breakage is probably more important.

Thank you very much.
Jim Keenan

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=121079

I'm going to need the output of a run with the environment variable set
properly. I don't know what you were doing, but you haven't
successfully set it. If you are doing it on a separate line, in Linux,
it needs to be exported. A single line command on Linux would be

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T lib/locale.t > locale.log 2>&1

I presume the same thing works on Darwin, but don't know for sure

On second thought, also add a -DL option to the command line

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T -DL lib/locale.t > locale.log 2>&1

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 10, 2014

From @jkeenan

On Mon Feb 10 12​:41​:19 2014, public@​khwilliamson.com wrote​:

On second thought, also add a -DL option to the command line

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T -DL lib/locale.t > locale.log 2>&1

Please see new attachment.

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 10, 2014

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 19, 2014

From @khwilliamson

On 02/10/2014 01​:40 PM, Karl Williamson wrote​:

On 02/09/2014 09​:12 PM, Karl Williamson wrote​:

On 02/09/2014 11​:19 AM, James E Keenan via RT wrote​:

On Thu Jan 30 05​:04​:35 2014, jkeenan wrote​:

As of commit 59100ba, no improvement.

# The following locales^M
#^M
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8^M
# lt_LT.ISO8859-13 lt_LT.ISO8859-4^M
#^M
# had problems.^M

Karl,

Have you had a chance to take a look at this?

Given the age of this platform, *fixing* the problem would be nice but
*understanding* the cause of the breakage is probably more important.

Thank you very much.
Jim Keenan

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=121079

I'm going to need the output of a run with the environment variable set
properly. I don't know what you were doing, but you haven't
successfully set it. If you are doing it on a separate line, in Linux,
it needs to be exported. A single line command on Linux would be

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T lib/locale.t > locale.log 2>&1

I presume the same thing works on Darwin, but don't know for sure

On second thought, also add a -DL option to the command line

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T -DL lib/locale.t > locale.log 2>&1

I never got an email that you had responded, but I looked at the ticket
after you said something in irc, and found the output I needed. What's
happening is that the three eu_ES locales are saying that the decimal
radix character is the apostrophe, which I find hard to believe. I
found a version of that locale on the internet which has a comma as the
decimal point.

I can write a short C program to send you to compile and run to verify
that Perl is not getting mixed up about this, but I suspect Perl is
right about it.

That would mean that Perl is making some assumptions that the decimal
point is never going to be a quoting character. I am thinking that it's
not worth trying to fix that. Craig was unable to reproduce your issue
with a later version of the OS. Though it may be that he just doesn't
have those locales installed. But I think it is likely that
the locale on your OS version is buggy, and it should have been fixed in
later versions.

I have a friend living in Basque Spain who uses Apple stuff. I could
see if he knows anything about this.

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 19, 2014

From @jkeenan

On 2/19/14 1​:15 AM, Karl Williamson wrote​:

On 02/10/2014 01​:40 PM, Karl Williamson wrote​:

On 02/09/2014 09​:12 PM, Karl Williamson wrote​:

On 02/09/2014 11​:19 AM, James E Keenan via RT wrote​:

On Thu Jan 30 05​:04​:35 2014, jkeenan wrote​:

As of commit 59100ba, no improvement.

# The following locales^M
#^M
# eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8^M
# lt_LT.ISO8859-13 lt_LT.ISO8859-4^M
#^M
# had problems.^M

Karl,

Have you had a chance to take a look at this?

Given the age of this platform, *fixing* the problem would be nice but
*understanding* the cause of the breakage is probably more important.

Thank you very much.
Jim Keenan

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=121079

I'm going to need the output of a run with the environment variable set
properly. I don't know what you were doing, but you haven't
successfully set it. If you are doing it on a separate line, in Linux,
it needs to be exported. A single line command on Linux would be

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T lib/locale.t > locale.log 2>&1

I presume the same thing works on Darwin, but don't know for sure

On second thought, also add a -DL option to the command line

PERL_DEBUG_FULL_TEST=2 ./perl -Ilib -T -DL lib/locale.t > locale.log 2>&1

I never got an email that you had responded, but I looked at the ticket
after you said something in irc, and found the output I needed. What's
happening is that the three eu_ES locales are saying that the decimal
radix character is the apostrophe, which I find hard to believe. I found
a version of that locale on the internet which has a comma as the
decimal point.

I can write a short C program to send you to compile and run to verify
that Perl is not getting mixed up about this, but I suspect Perl is
right about it.

That would mean that Perl is making some assumptions that the decimal
point is never going to be a quoting character. I am thinking that it's
not worth trying to fix that. Craig was unable to reproduce your issue
with a later version of the OS. Though it may be that he just doesn't
have those locales installed. But I think it is likely that
the locale on your OS version is buggy, and it should have been fixed in
later versions.

I have a friend living in Basque Spain who uses Apple stuff. I could see
if he knows anything about this.

Thanks for your investigation. Please send me (on or off list) that C
program and any instructions. Once we identify the problem, we can
always put SKIP blocks in the test file for this platform/version.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 19, 2014

From @craigberry

On Wed, Feb 19, 2014 at 12​:15 AM, Karl Williamson
<public@​khwilliamson.com> wrote​:

Craig was unable to reproduce your issue with a later
version of the OS. Though it may be that he just doesn't have those locales
installed. But I think it is likely that
the locale on your OS version is buggy, and it should have been fixed in
later versions.

I have them​:

% uname -v
Darwin Kernel Version 9.8.0​: Wed Jul 15 16​:57​:01 PDT 2009;
root​:xnu-1228.15.4~1/RELEASE_PPC
% locale -a | grep eu_ES
eu_ES
eu_ES.ISO8859-1
eu_ES.ISO8859-15
eu_ES.UTF-8

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 23, 2014

From @khwilliamson

I sent Jim a C program to print the radix characters. It showed for these locales

eu_ES.ISO8859-1
eu_ES.ISO8859-15
eu_ES.UTF-8

that the radix was a string of two characters​: An apostrophe followed by a space. Since Craig isn't having this problem on his later version of libc, this appears to be a bug in these locales that has since been fixed. I was wrong when I told Jim offlist that a single-byte locale, such as 8859, can only have a single byte radix character. In fact the radix is a string, so this is legal POSIX . I *think* also that Perl can cope with a multi-char radix, but it can't cope with this one. From the error messages, it is likely that Perl can't handle a quote character being part of a decimal point. As I said above, I don't believe it's worth fixing this, given until and if we are ever presented with a legitimate locale that has this characteristic.

The reason this hasn't shown up before is the same reason the Lithuanian locales used to pass. I have added a lot of locale tests in 5.19 that never were there before. In this case, it started failing when I added some new radix tests. (In the Lithuanian case, tests for upper/lowercase pairs showed that the ENG character casing hasn't been implemented correctly).

locale.t has also been updated so that if a certain percentage of tests on a machine pass completely, the failures don't fail the test as a whole. For most platforms the number is >5% failure triggers the whole test failing. The percentage can be varied depending on platform. For MSWindows, every locale but the C locale has at least one violation of the POSIX standard, so the acceptable percentage of failures is 99.9%.

Rather than make special cases for these tests, I think the general mechanism is good enough. If it's the case that these failures are pushing the failure rate too high for this platform and OS version, then we can up the acceptable failure rate enough to get it to pass.
--
Karl Williamson

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 23, 2014

From @jkeenan

On Sat Feb 22 21​:27​:22 2014, khw wrote​:

I sent Jim a C program to print the radix characters. It showed for
these locales

eu_ES.ISO8859-1
eu_ES.ISO8859-15
eu_ES.UTF-8

that the radix was a string of two characters​: An apostrophe followed
by a space. Since Craig isn't having this problem on his later
version of libc, this appears to be a bug in these locales that has
since been fixed. I was wrong when I told Jim offlist that a single-
byte locale, such as 8859, can only have a single byte radix
character. In fact the radix is a string, so this is legal POSIX . I
*think* also that Perl can cope with a multi-char radix, but it can't
cope with this one. From the error messages, it is likely that Perl
can't handle a quote character being part of a decimal point. As I
said above, I don't believe it's worth fixing this, given until and if
we are ever presented with a legitimate locale that has this
characteristic.

The reason this hasn't shown up before is the same reason the
Lithuanian locales used to pass. I have added a lot of locale tests
in 5.19 that never were there before. In this case, it started
failing when I added some new radix tests. (In the Lithuanian case,
tests for upper/lowercase pairs showed that the ENG character casing
hasn't been implemented correctly).

locale.t has also been updated so that if a certain percentage of
tests on a machine pass completely, the failures don't fail the test
as a whole. For most platforms the number is >5% failure triggers the
whole test failing. The percentage can be varied depending on
platform. For MSWindows, every locale but the C locale has at least
one violation of the POSIX standard, so the acceptable percentage of
failures is 99.9%.

Rather than make special cases for these tests, I think the general
mechanism is good enough. If it's the case that these failures are
pushing the failure rate too high for this platform and OS version,
then we can up the acceptable failure rate enough to get it to pass.

Karl, thank you for the time and effort you have put into this investigation.

Let me see if I understand the situation correctly. The problem I reported had two parts.

First, 5 unit tests in lib/locale.t that had been passing for many years suddenly started to fail. With the recent renumbering of the tests, those tests are now​:

#####
not ok 295 Verify that a different locale radix works when doing "==" with a constant
not ok 296 Verify that a different locale radix works when doing "==" with a scalar
...
not ok 300 Verify that "==" with a scalar and an intervening sprintf still works in inner no locale
...
not ok 303 Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar and an intervening sprintf
...
not ok 305 Verify that don't get warning under "==" even if radix is not a dot
#####

Second, the number of failing locales on this platform increased from 2 to 6​:

#####
eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
lt_LT.ISO8859-13 lt_LT.ISO8859-4
#####

The 4 eu_* locales are new failures; the 2 lt_* locales are problematic even on more recent versions of Darwin.

The FAIL which I am getting in lib/locale.t on Darwin/PPC is caused by the 5 'not ok' tests, i.e., the first problem. The FAIL is not, per se, caused by the increased number of problematic locales.

The overall FAIL in lib/locale.t is causing 'make test' as a whole to FAIL on this platform. Hence, to get 'make test' to PASS, we need to address the 5 failing unit tests. In other contexts (t/io/eintr.t) we have tested for platform and OS version and simply SKIPped tests known to fail on a certain platform. Would that be acceptable here?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 24, 2014

From @khwilliamson

On 02/23/2014 06​:50 AM, James E Keenan via RT wrote​:

On Sat Feb 22 21​:27​:22 2014, khw wrote​:

I sent Jim a C program to print the radix characters. It showed for
these locales

eu_ES.ISO8859-1
eu_ES.ISO8859-15
eu_ES.UTF-8

that the radix was a string of two characters​: An apostrophe followed
by a space. Since Craig isn't having this problem on his later
version of libc, this appears to be a bug in these locales that has
since been fixed. I was wrong when I told Jim offlist that a single-
byte locale, such as 8859, can only have a single byte radix
character. In fact the radix is a string, so this is legal POSIX . I
*think* also that Perl can cope with a multi-char radix, but it can't
cope with this one. From the error messages, it is likely that Perl
can't handle a quote character being part of a decimal point. As I
said above, I don't believe it's worth fixing this, given until and if
we are ever presented with a legitimate locale that has this
characteristic.

The reason this hasn't shown up before is the same reason the
Lithuanian locales used to pass. I have added a lot of locale tests
in 5.19 that never were there before. In this case, it started
failing when I added some new radix tests. (In the Lithuanian case,
tests for upper/lowercase pairs showed that the ENG character casing
hasn't been implemented correctly).

locale.t has also been updated so that if a certain percentage of
tests on a machine pass completely, the failures don't fail the test
as a whole. For most platforms the number is >5% failure triggers the
whole test failing. The percentage can be varied depending on
platform. For MSWindows, every locale but the C locale has at least
one violation of the POSIX standard, so the acceptable percentage of
failures is 99.9%.

Rather than make special cases for these tests, I think the general
mechanism is good enough. If it's the case that these failures are
pushing the failure rate too high for this platform and OS version,
then we can up the acceptable failure rate enough to get it to pass.

Karl, thank you for the time and effort you have put into this investigation.

Let me see if I understand the situation correctly. The problem I reported had two parts.

First, 5 unit tests in lib/locale.t that had been passing for many years suddenly started to fail. With the recent renumbering of the tests, those tests are now​:

#####
not ok 295 Verify that a different locale radix works when doing "==" with a constant
not ok 296 Verify that a different locale radix works when doing "==" with a scalar
...
not ok 300 Verify that "==" with a scalar and an intervening sprintf still works in inner no locale
...
not ok 303 Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar and an intervening sprintf
...
not ok 305 Verify that don't get warning under "==" even if radix is not a dot
#####

Second, the number of failing locales on this platform increased from 2 to 6​:

#####
eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
lt_LT.ISO8859-13 lt_LT.ISO8859-4
#####

The 4 eu_* locales are new failures; the 2 lt_* locales are problematic even on more recent versions of Darwin.

The FAIL which I am getting in lib/locale.t on Darwin/PPC is caused by the 5 'not ok' tests, i.e., the first problem. The FAIL is not, per se, caused by the increased number of problematic locales.

The overall FAIL in lib/locale.t is causing 'make test' as a whole to FAIL on this platform. Hence, to get 'make test' to PASS, we need to address the 5 failing unit tests. In other contexts (t/io/eintr.t) we have tested for platform and OS version and simply SKIPped tests known to fail on a certain platform. Would that be acceptable here?

Thank you very much.
Jim Keenan

I had misunderstood this problem, but it turns out that the offending
commit had to be b6d186b,
which removed the following comments and code​:

<
  < if ($^O eq 'darwin') {
  < # Darwin 8/Mac OS X 10.4 and 10.5 have bad Basque locales​: perl bug

  #35895,
  < # Apple bug ID# 4139653. It also has a problem in Byelorussian.
  < (my $v) = $Config{osvers} =~ /^(\d+)/;
  < if ($v >= 8 and $v < 10) {
  < debug "# Skipping eu_ES, be_BY locales -- buggy in Darwin\n";
  < @​Locale = grep ! m/^(eu_ES(?​:\..*)?|be_BY\.CP1131)$/, @​Locale;
  < } elsif ($v < 12) {
  < debug "# Skipping be_BY locales -- buggy in Darwin\n";
  < @​Locale = grep ! m/^be_BY\.CP1131$/, @​Locale;
  < }
  < }

So, the reason this didn't fail until after this commit was these
locales were skipped. I had thought when I made that commit that
the new scheme of allowing a percentage of failures would cover these,
but there are complications, which I need to look into the best way to
fix this.

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 24, 2014

From @jkeenan

On 2/24/14 1​:09 AM, karl williamson via RT wrote​:
[snip]

I had misunderstood this problem, but it turns out that the offending
commit had to be b6d186b,
which removed the following comments and code​:

<
< if ($^O eq 'darwin') {
< # Darwin 8/Mac OS X 10.4 and 10.5 have bad Basque locales​: perl bug

\#35895\,

< # Apple bug ID# 4139653. It also has a problem in Byelorussian.
< (my $v) = $Config{osvers} =~ /^(\d+)/;
< if ($v>= 8 and $v< 10) {
< debug "# Skipping eu_ES, be_BY locales -- buggy in Darwin\n";
< @​Locale = grep ! m/^(eu_ES(?​:\..*)?|be_BY\.CP1131)$/, @​Locale;
< } elsif ($v< 12) {
< debug "# Skipping be_BY locales -- buggy in Darwin\n";
< @​Locale = grep ! m/^be_BY\.CP1131$/, @​Locale;
< }
< }

So, the reason this didn't fail until after this commit was these
locales were skipped. I had thought when I made that commit that
the new scheme of allowing a percentage of failures would cover these,
but there are complications, which I need to look into the best way to
fix this.

My manual bisecting last night confirms this.

803505a PASS (with the 2 failing lt_*
locales)

b6d186b FAIL (with 5 individual tests
failing and eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
additional locale failures).

Would it be possible to revert b6d186b
until a better solution is found?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 24, 2014

From @khwilliamson

On Mon Feb 24 03​:40​:31 2014, jkeen@​verizon.net wrote​:

On 2/24/14 1​:09 AM, karl williamson via RT wrote​:
[snip]

I had misunderstood this problem, but it turns out that the offending
commit had to be b6d186b,
which removed the following comments and code​:

<
< if ($^O eq 'darwin') {
< # Darwin 8/Mac OS X 10.4 and 10.5 have bad Basque locales​:
perl bug

#35895,
< # Apple bug ID# 4139653. It also has a problem in
Byelorussian.
< (my $v) = $Config{osvers} =~ /^(\d+)/;
< if ($v>= 8 and $v< 10) {
< debug "# Skipping eu_ES, be_BY locales -- buggy in
Darwin\n";
< @​Locale = grep ! m/^(eu_ES(?​:\..*)?|be_BY\.CP1131)$/,
@​Locale;
< } elsif ($v< 12) {
< debug "# Skipping be_BY locales -- buggy in Darwin\n";
< @​Locale = grep ! m/^be_BY\.CP1131$/, @​Locale;
< }
< }

So, the reason this didn't fail until after this commit was these
locales were skipped. I had thought when I made that commit that
the new scheme of allowing a percentage of failures would cover
these,
but there are complications, which I need to look into the best way
to
fix this.

My manual bisecting last night confirms this.

803505a PASS (with the 2 failing lt_*
locales)

b6d186b FAIL (with 5 individual tests
failing and eu_ES eu_ES.ISO8859-1 eu_ES.ISO8859-15 eu_ES.UTF-8
additional locale failures).

Would it be possible to revert
b6d186b
until a better solution is found?

Thank you very much.
Jim Keenan

It's best to not skip testing an entire locale because it is defective in one area. I had forgotten that the way locale.t works is that some test failures are considered likely to be a core failure, and some tests are considered to likely be a bad locale definition, and only are considered a core failure if more than an acceptable percentage of locales fail. These failures were in the first group, but really should be in the second.

Attached are two patches that move these tests to the second group. Please apply them to make sure that your machine passes with them. Then I will push them to blead.

I tested on my machine by creating a temporary hack to locale.c that returns the bad radix string for the Basque locales. With that, I was able to reproduce your problem. With these patches, the .t passes for me.
--
Karl Williamson

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 24, 2014

From @khwilliamson

0002-lib-locale.t-Change-an-array-to-a-hash.patch
From 16348e8f95730e05d8ff0a873e623c6ee025ed7a Mon Sep 17 00:00:00 2001
From: Karl Williamson <public@khwilliamson.com>
Date: Mon, 24 Feb 2014 11:56:47 -0700
Subject: [PATCH 2/3] lib/locale.t: Change an array to a hash

This is more naturally a hash in that it is a list of numbers, not
necessarily consecutive, and each time through the loop the same number
was getting pushed, so had multiple entries for each by the time it was
finished.
---
 lib/locale.t | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/locale.t b/lib/locale.t
index 42dde69..ae92eec 100644
--- a/lib/locale.t
+++ b/lib/locale.t
@@ -41,7 +41,7 @@ my $acceptable_fold_failure_percentage = ($^O =~ / ^ ( MSWin32 | AIX ) $ /ix)
                                          : 5;
 
 # The list of test numbers of the problematic tests.
-my @problematical_tests;
+my %problematical_tests;
 
 
 use Dumpvalue;
@@ -1342,7 +1342,7 @@ foreach my $Locale (@Locale) {
     report_multi_result($Locale, $locales_test_number, \@f);
 
     foreach ($first_casing_test_number..$locales_test_number) {
-        push @problematical_tests, $_;
+        $problematical_tests{$_} = 1;
     }
 
 
@@ -1841,7 +1841,7 @@ foreach my $Locale (@Locale) {
             }
 	}
 	report_multi_result($Locale, $locales_test_number, \@f);
-        push @problematical_tests, $locales_test_number;
+        $problematical_tests{$locales_test_number} = 1;
     }
 
     # [perl #109318]
@@ -1894,7 +1894,7 @@ foreach $test_num ($first_locales_test_number..$final_locales_test_number) {
 	    print "# It usually indicates a problem in the environment,\n";
 	    print "# not in Perl itself.\n";
 	}
-        if ($Okay{$test_num} && grep { $_ == $test_num } @problematical_tests) {
+        if ($Okay{$test_num} && grep { $_ == $test_num } keys %problematical_tests) {
             no warnings 'experimental::autoderef';
             # Round to nearest .1%
             my $percent_fail = (int(.5 + (1000 * scalar(keys $Problem{$test_num})
-- 
1.8.3.2

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 24, 2014

From @khwilliamson

0003-lib-locale.t-Make-more-tests-not-fail-unless-is-bad-.patch
From 51389049800b3c7a4c2cfc2d7a98ffd5fa10e3e6 Mon Sep 17 00:00:00 2001
From: Karl Williamson <public@khwilliamson.com>
Date: Mon, 24 Feb 2014 12:00:03 -0700
Subject: [PATCH 3/3] lib/locale.t: Make more tests not fail unless is bad for
 enough locales

locale.t has some tests that fail even one locale fails; and it has some
tests where failure doesn't happen unless a sufficient percentage of
locales have the same problem.

The first set should be for tests whose failure indicates a basic
problem in locale handling; and the second set should be for tests where
it could be that just a locale definition is bad.

Prior to this patch, tests dealing with radix problems were considered
in the first category, but in fact it's possible that just the locale
definition for the radix is wrong.  This is what happened for some older
Darwin versions for their Basque locales, which caused locale.t to show
failures, whereas it was just these locales that were bad, and the
generic handling was ok, or good enough.  (The actual failures had the
radix be the two character string: apostrophe followed by a blank.  It
would be a lot of work to make Perl deal with having a quote character
also mean a decimal point, and that work isn't worth it, especially as
this was a locale definition error, and we don't know of any locale in
the world where an apostrophe is legitimately a radix character.)

For this commit, I looked through the tests, and I added the tests where
it seemed that the problem could just be a bad locale definition to the
list of such tests.  Note that failures here could mean an internal Perl
error, but in that case, it should affect many more locales, so will
show up anyway as the failure rate should exceed the acceptable one.
---
 lib/locale.t | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/locale.t b/lib/locale.t
index ae92eec..2b1724c 100644
--- a/lib/locale.t
+++ b/lib/locale.t
@@ -1621,12 +1621,15 @@ foreach my $Locale (@Locale) {
 
     report_result($Locale, ++$locales_test_number, $ok3);
     $test_names{$locales_test_number} = 'Verify that a different locale radix works when doing "==" with a constant';
+    $problematical_tests{$locales_test_number} = 1;
 
     report_result($Locale, ++$locales_test_number, $ok4);
     $test_names{$locales_test_number} = 'Verify that a different locale radix works when doing "==" with a scalar';
+    $problematical_tests{$locales_test_number} = 1;
 
     report_result($Locale, ++$locales_test_number, $ok5);
     $test_names{$locales_test_number} = 'Verify that a different locale radix works when doing "==" with a scalar and an intervening sprintf';
+    $problematical_tests{$locales_test_number} = 1;
 
     debug "# $first_c_test..$locales_test_number: \$c = $c, \$d = $d, Locale = $Locale\n";
 
@@ -1639,24 +1642,30 @@ foreach my $Locale (@Locale) {
 
     report_result($Locale, ++$locales_test_number, $ok8);
     $test_names{$locales_test_number} = 'Verify that "==" with a scalar and an intervening sprintf still works in inner no locale';
+    $problematical_tests{$locales_test_number} = 1;
 
     debug "# $first_e_test..$locales_test_number: \$e = $e, no locale\n";
 
     report_result($Locale, ++$locales_test_number, $ok9);
     $test_names{$locales_test_number} = 'Verify that after a no-locale block, a different locale radix still works when doing "==" with a constant';
+    $problematical_tests{$locales_test_number} = 1;
     my $first_f_test = $locales_test_number;
 
     report_result($Locale, ++$locales_test_number, $ok10);
     $test_names{$locales_test_number} = 'Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar';
+    $problematical_tests{$locales_test_number} = 1;
 
     report_result($Locale, ++$locales_test_number, $ok11);
     $test_names{$locales_test_number} = 'Verify that after a no-locale block, a different locale radix still works when doing "==" with a scalar and an intervening sprintf';
+    $problematical_tests{$locales_test_number} = 1;
 
     report_result($Locale, ++$locales_test_number, $ok12);
     $test_names{$locales_test_number} = 'Verify that after a no-locale block, a different locale radix can participate in an addition and function call as numeric';
+    $problematical_tests{$locales_test_number} = 1;
 
     report_result($Locale, ++$locales_test_number, $ok13);
     $test_names{$locales_test_number} = 'Verify that don\'t get warning under "==" even if radix is not a dot';
+    $problematical_tests{$locales_test_number} = 1;
 
     report_result($Locale, ++$locales_test_number, $ok14);
     $test_names{$locales_test_number} = 'Verify that non-ASCII UTF-8 error messages are in UTF-8';
@@ -1849,6 +1858,7 @@ foreach my $Locale (@Locale) {
         my @f = ();
         ++$locales_test_number;
         $test_names{$locales_test_number} = 'Verify atof with locale radix and negative exponent';
+        $problematical_tests{$locales_test_number} = 1;
 
         my $radix = POSIX::localeconv()->{decimal_point};
         my @nums = (
-- 
1.8.3.2

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 25, 2014

From @jkeenan

On Mon Feb 24 11​:23​:02 2014, khw wrote​:
[snip]

It's best to not skip testing an entire locale because it is defective
in one area. I had forgotten that the way locale.t works is that some
test failures are considered likely to be a core failure, and some
tests are considered to likely be a bad locale definition, and only
are considered a core failure if more than an acceptable percentage of
locales fail. These failures were in the first group, but really
should be in the second.

Attached are two patches that move these tests to the second group.
Please apply them to make sure that your machine passes with them.
Then I will push them to blead.

The two patches DWIMmed. On darwin/ppc, lib/locale.t once again PASSes because the 5 tests that were failing are now marked TODO. The 4 es_* locales are still listed as having problems -- as are the 2 lt_* locales -- but that is not causing the test file as a whole to fail. Consequently, for the first time in four weeks, 'make test' is once again PASSing on this platform.

I also tested the patches on linux/x86_64 and darwin/x86_64. lib/locale.t was not failing on those platforms. The two patches do no harm.

So, please apply the patches to blead and then close this RT.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 25, 2014

From @khwilliamson

The commit that actually fixed this was
b057411
--
Karl Williamson

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Feb 25, 2014

@khwilliamson - Status changed from 'open' to 'resolved'

@p5pRT p5pRT closed this as completed Feb 25, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant