diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-07-16 13:55:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-16 13:55:26 (GMT) |
commit | 93d36a5bcec8e55026b9a749c8310b1ce490d15e (patch) | |
tree | 9985de71d1ecb0f54ab69246918ee54a00831b9c | |
parent | 80844d1ebc03e1cf3ffdeb47751522499e90b0bc (diff) | |
download | cpython-93d36a5bcec8e55026b9a749c8310b1ce490d15e.zip cpython-93d36a5bcec8e55026b9a749c8310b1ce490d15e.tar.gz cpython-93d36a5bcec8e55026b9a749c8310b1ce490d15e.tar.bz2 |
bpo-44647: Add a permanent Unicode-valued env var to regrtest (GH-27187) (#27191)
(cherry picked from commit 7915c96ffd7ddc5cb6d54015ee4c31255a416892)
Co-authored-by: Ćukasz Langa <lukasz@langa.pl>
-rw-r--r-- | Lib/test/libregrtest/setup.py | 10 | ||||
-rw-r--r-- | Lib/test/test_regrtest.py | 10 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Tests/2021-07-16-14-02-33.bpo-44647.5LzqIy.rst | 4 |
3 files changed, 23 insertions, 1 deletions
diff --git a/Lib/test/libregrtest/setup.py b/Lib/test/libregrtest/setup.py index 83ce2f7..472c6eb 100644 --- a/Lib/test/libregrtest/setup.py +++ b/Lib/test/libregrtest/setup.py @@ -14,6 +14,9 @@ from test.libregrtest.utils import (setup_unraisable_hook, setup_threading_excepthook) +UNICODE_GUARD_ENV = "PYTHONREGRTEST_UNICODE_GUARD" + + def setup_tests(ns): try: stderr_fd = sys.__stderr__.fileno() @@ -99,6 +102,13 @@ def setup_tests(ns): from test.support.testresult import RegressionTestResult RegressionTestResult.USE_XML = True + # Ensure there's a non-ASCII character in env vars at all times to force + # tests consider this case. See BPO-44647 for details. + os.environ.setdefault( + UNICODE_GUARD_ENV, + "\N{SMILING FACE WITH SUNGLASSES}", + ) + def replace_stdout(): """Set stdout encoder error handler to backslashreplace (as stderr error diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py index 054776c..75fa6f2 100644 --- a/Lib/test/test_regrtest.py +++ b/Lib/test/test_regrtest.py @@ -19,7 +19,7 @@ import unittest from test import libregrtest from test import support from test.support import os_helper -from test.libregrtest import utils +from test.libregrtest import utils, setup Py_DEBUG = hasattr(sys, 'gettotalrefcount') @@ -1298,6 +1298,14 @@ class ArgsTestCase(BaseTestCase): self.assertIn("Warning -- Uncaught thread exception", output) self.assertIn("Exception: bug in thread", output) + def test_unicode_guard_env(self): + guard = os.environ.get(setup.UNICODE_GUARD_ENV) + self.assertIsNotNone(guard, f"{setup.UNICODE_GUARD_ENV} not set") + if guard != "\N{SMILING FACE WITH SUNGLASSES}": + # Skip to signify that the env var value was changed by the user; + # possibly to something ASCII to work around Unicode issues. + self.skipTest("Modified guard") + def test_cleanup(self): dirname = os.path.join(self.tmptestdir, "test_python_123") os.mkdir(dirname) diff --git a/Misc/NEWS.d/next/Tests/2021-07-16-14-02-33.bpo-44647.5LzqIy.rst b/Misc/NEWS.d/next/Tests/2021-07-16-14-02-33.bpo-44647.5LzqIy.rst new file mode 100644 index 0000000..e4b2be2 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2021-07-16-14-02-33.bpo-44647.5LzqIy.rst @@ -0,0 +1,4 @@ +Added a permanent Unicode-valued environment variable to regression tests to +ensure they handle this use case in the future. If your test environment +breaks because of that, report a bug to us, and temporarily set +PYTHONREGRTEST_UNICODE_GUARD=0 in your test environment. |