mirror of
https://github.com/python/cpython.git
synced 2025-12-10 11:00:14 +00:00
bpo-44647: Add a permanent Unicode-valued env var to regrtest (#27187)
This commit is contained in:
parent
29358e93f2
commit
7915c96ffd
3 changed files with 23 additions and 1 deletions
|
|
@ -14,6 +14,9 @@ from test.libregrtest.utils import (setup_unraisable_hook,
|
||||||
setup_threading_excepthook)
|
setup_threading_excepthook)
|
||||||
|
|
||||||
|
|
||||||
|
UNICODE_GUARD_ENV = "PYTHONREGRTEST_UNICODE_GUARD"
|
||||||
|
|
||||||
|
|
||||||
def setup_tests(ns):
|
def setup_tests(ns):
|
||||||
try:
|
try:
|
||||||
stderr_fd = sys.__stderr__.fileno()
|
stderr_fd = sys.__stderr__.fileno()
|
||||||
|
|
@ -98,6 +101,13 @@ def setup_tests(ns):
|
||||||
from test.support.testresult import RegressionTestResult
|
from test.support.testresult import RegressionTestResult
|
||||||
RegressionTestResult.USE_XML = True
|
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():
|
def replace_stdout():
|
||||||
"""Set stdout encoder error handler to backslashreplace (as stderr error
|
"""Set stdout encoder error handler to backslashreplace (as stderr error
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import unittest
|
||||||
from test import libregrtest
|
from test import libregrtest
|
||||||
from test import support
|
from test import support
|
||||||
from test.support import os_helper
|
from test.support import os_helper
|
||||||
from test.libregrtest import utils
|
from test.libregrtest import utils, setup
|
||||||
|
|
||||||
|
|
||||||
Py_DEBUG = hasattr(sys, 'gettotalrefcount')
|
Py_DEBUG = hasattr(sys, 'gettotalrefcount')
|
||||||
|
|
@ -1298,6 +1298,14 @@ class ArgsTestCase(BaseTestCase):
|
||||||
self.assertIn("Warning -- Uncaught thread exception", output)
|
self.assertIn("Warning -- Uncaught thread exception", output)
|
||||||
self.assertIn("Exception: bug in thread", 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):
|
def test_cleanup(self):
|
||||||
dirname = os.path.join(self.tmptestdir, "test_python_123")
|
dirname = os.path.join(self.tmptestdir, "test_python_123")
|
||||||
os.mkdir(dirname)
|
os.mkdir(dirname)
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue