summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-07-16 13:55:26 (GMT)
committerGitHub <noreply@github.com>2021-07-16 13:55:26 (GMT)
commit93d36a5bcec8e55026b9a749c8310b1ce490d15e (patch)
tree9985de71d1ecb0f54ab69246918ee54a00831b9c
parent80844d1ebc03e1cf3ffdeb47751522499e90b0bc (diff)
downloadcpython-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.py10
-rw-r--r--Lib/test/test_regrtest.py10
-rw-r--r--Misc/NEWS.d/next/Tests/2021-07-16-14-02-33.bpo-44647.5LzqIy.rst4
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.