Issue 27372: Test_idle should stop changing locale (original) (raw)
test.test_idle has long resulted in warnings about the locale being changed. In 3.6, this warning causes test_idle to be tagged a failure. Though this does not (yet) turn the overall run of a buildbot from green to red, it is annoying to have success reported as a failure.
The culprit is in iomenu: locale.setlocale(locale.LC_CTYPE, "") Commenting it out removed the warning and tests pass. But I don't know the real effect, if it would work for tests on all systems, and the consequence when running IDLE normally.
The problem cannot be monkey-patched away since the damage is done on import. Instead I added 'testing = False' to idlelib.init, made test_idle change it to True, and replace the locale-encoding code with "encoding = 'utf-8'" when testing is True.
Serhiy, I think this is ready. However, another eagle-eye review would be welcome. Tests also pass with 'ascii'. Would that be better?
Side note: the locale and encoding code could use a review from someone who knows more that me. For instance, suppressing ImportError here:
try:
import locale
locale.setlocale(locale.LC_CTYPE, "")
except (ImportError, locale.Error):
pass
guarantees a NameError a few lines further. There is another chunk labelled deprecated, and more might be obsolete in 3.x. But this is another issue.