This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Test_idle should stop changing locale
Type: behavior Stage: resolved
Components: IDLE Versions: Python 3.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: python-dev, serhiy.storchaka, terry.reedy
Priority: normal Keywords: patch

Created on 2016-06-22 21:04 by terry.reedy, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
locale-change.diff terry.reedy, 2016-06-22 21:04 review
locale-change2.diff terry.reedy, 2016-06-26 21:43 review
Pull Requests
URL Status Linked Edit
PR 1397 merged vstinner, 2017-05-02 20:38
Messages (3)
msg269087 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2016-06-22 21:04
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.
msg269318 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2016-06-26 21:47
Added a couple of blank lines and expanded a comment.
msg269319 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-06-26 21:48
New changeset 3ffdb9277054 by Terry Jan Reedy in branch 'default':
Issue 27372: Stop test_idle from changing locale, so test passes.
https://hg.python.org/cpython/rev/3ffdb9277054
History
Date User Action Args
2022-04-11 14:58:32adminsetgithub: 71559
2019-03-21 04:53:55terry.reedysetcomponents: + IDLE
2017-05-02 20:38:18vstinnersetpull_requests: + pull_request1505
2016-06-26 21:49:20terry.reedysetstatus: open -> closed
resolution: fixed
stage: patch review -> resolved
2016-06-26 21:48:18python-devsetnosy: + python-dev
messages: + msg269319
2016-06-26 21:47:37terry.reedysetmessages: + msg269318
2016-06-26 21:43:05terry.reedysetfiles: + locale-change2.diff
2016-06-22 21:04:29terry.reedycreate