Subject: | Locale-dependent test failures |
Under some circumstances t/01-Log-Syslog-Fast.t, t/05-ipv6.t, and t/06-large-strings.t may fail:
* perl version >= 5.22
* a German utf8 locale is in effect (e.g. using LC_ALL=de_DE.UTF-8 --- it does not happen with de_DE.ISO8859-1)
* it's March
The test log output looks like this:
...
# Failed test 'tcp: ->send without time sent whole payload'
# at t/01-Log-Syslog-Fast.pl line 42.
# got: '55'
# expected: '54'
# Failed test 'tcp: ->send without time has correct payload'
# at t/01-Log-Syslog-Fast.pl line 52.
# got: '<38>Mär 22 18:41:06 localhost test[3286]: without time'
# expected: '<38>M<E4>r 22 18:41:06 localhost test[3286]: without time'
# Failed test 'tcp: ->send with time sent whole payload'
# at t/01-Log-Syslog-Fast.pl line 42.
# got: '52'
# expected: '51'
# Failed test 'tcp: ->send with time has correct payload'
# at t/01-Log-Syslog-Fast.pl line 52.
# got: '<38>Mär 22 18:41:06 localhost test[3286]: with time'
# expected: '<38>M<E4>r 22 18:41:06 localhost test[3286]: with time'
...
The problem is that the month abbreviation ("Mär") contains non-ascii characters, and this is confusing the module and/or tests. There were improvements in perl 5.22 so localized strings correctly have now a utf8 flag if necessary.
I guess that the mismatched integers are due to different length (utf8 "ä" consists of two bytes).
Probably the same problem can be reproduced with other locales, with non-latin languages even easier.
I could reproduce the problem on freebsd and linux systems. The corresponding fail reports will appear in a few hours at http://matrix.cpantesters.org/?dist=Log-Syslog-Fast%200.65;reports=1#sl=7,1
Regards,
Slaven