Skip to content

Commit

Permalink
bpo-34537: Fix test_gdb:test_strings with LC_ALL=C (pythonGH-9483)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
elprans authored and vstinner committed Sep 22, 2018
1 parent d64ee1a commit 7279b51
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
15 changes: 14 additions & 1 deletion Lib/test/test_gdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,20 @@ def test_bytes(self):

def test_strings(self):
'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):
try:
text.encode(encoding)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fix ``test_gdb.test_strings()`` when ``LC_ALL=C`` and GDB was compiled with
Python 3.6 or earlier.

0 comments on commit 7279b51

Please sign in to comment.