[BUGFIX] Get current locale without changing environment 16/48416/2
authorChristian Kuhn <lolli@schwarzbu.ch>
Tue, 31 May 2016 10:19:22 +0000 (12:19 +0200)
committerMorton Jonuschat <m.jonuschat@mojocode.de>
Tue, 31 May 2016 15:24:52 +0000 (17:24 +0200)
commit84e1fc329b152af8c5a2e0ffda1b19f49edcba50
treef2a57f7b5c5f72bd34b7e7422e392a5849f4da14
parent6f7b033bb170255b5833208a53ed003e1e3cd493
[BUGFIX] Get current locale without changing environment

Two tests in ext:form change the environment when they try to
back up the current locale:
setlocale(LC_NUMERIC, null): "the locale names will be set from
the values of environment variables", should be
setlocale(LC_NUMERIC, 0): "the locale setting is not affected,
only the current setting is returned"
In my case my default LC_NUMERIC is "C" and after call with 'null'
it is set to and returns 'de_DE.utf8', so it changes the internal
state to something else than before and the reset from backup does
not work properly. This leads to hard to debug problems if other
locale depending tests are executed later.
As a fun fact, phpunit suffers from the same issue and its
api method "setlocale()" that should take care of proper reset
messes this up, too. A pull request is pending to fix that.

The patch fixes the affected unit tests and cleans them up
along the way. Another patch to improve the overall situation
regarding locale handling in unit tests will follow later.

Change-Id: I2295b46cc6934a48e4d71ef5170deb83fb9264b6
Resolves: #76389
Releases: master
Reviewed-on: https://review.typo3.org/48416
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
typo3/sysext/form/Tests/Unit/Validator/FloatValidatorTest.php
typo3/sysext/form/Tests/Unit/Validator/IntegerValidatorTest.php