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:
Elvis Pranskevichus 2018-09-21 21:13:16 -04:00 committed by Victor Stinner
parent d64ee1a5ba
commit 7279b5125e
2 changed files with 16 additions and 1 deletions

View File

@ -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)

View File

@ -0,0 +1,2 @@
Fix ``test_gdb.test_strings()`` when ``LC_ALL=C`` and GDB was compiled with
Python 3.6 or earlier.