mirror of https://github.com/python/cpython
bpo-34537: Fix test_gdb:test_strings with LC_ALL=C (GH-9483)
We cannot simply call locale.getpreferredencoding() here, as GDB might have been linked against a different version of Python with a different encoding and coercion policy with respect to PEP 538 and PEP 540. Thanks to Victor Stinner for a hint on how to fix this.
This commit is contained in:
parent
d64ee1a5ba
commit
7279b5125e
|
@ -321,7 +321,20 @@ class PrettyPrintTests(DebuggerTests):
|
||||||
|
|
||||||
def test_strings(self):
|
def test_strings(self):
|
||||||
'Verify the pretty-printing of unicode strings'
|
'Verify the pretty-printing of unicode strings'
|
||||||
encoding = locale.getpreferredencoding()
|
# We cannot simply call locale.getpreferredencoding() here,
|
||||||
|
# as GDB might have been linked against a different version
|
||||||
|
# of Python with a different encoding and coercion policy
|
||||||
|
# with respect to PEP 538 and PEP 540.
|
||||||
|
out, err = run_gdb(
|
||||||
|
'--eval-command',
|
||||||
|
'python import locale; print(locale.getpreferredencoding())')
|
||||||
|
|
||||||
|
encoding = out.rstrip()
|
||||||
|
if err or not encoding:
|
||||||
|
raise RuntimeError(
|
||||||
|
f'unable to determine the preferred encoding '
|
||||||
|
f'of embedded Python in GDB: {err}')
|
||||||
|
|
||||||
def check_repr(text):
|
def check_repr(text):
|
||||||
try:
|
try:
|
||||||
text.encode(encoding)
|
text.encode(encoding)
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Fix ``test_gdb.test_strings()`` when ``LC_ALL=C`` and GDB was compiled with
|
||||||
|
Python 3.6 or earlier.
|
Loading…
Reference in New Issue