From 73eede891f9caa8c21247bbf69a7f62c657dfbbb Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Fri, 7 Jul 2017 13:47:44 +0300 Subject: [PATCH 1/3] Print readline version information when running test suite --- Lib/test/libregrtest/main.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py index bc8155bbff2b47..99e08c890c9c87 100644 --- a/Lib/test/libregrtest/main.py +++ b/Lib/test/libregrtest/main.py @@ -432,6 +432,14 @@ def display_header(self): print("== encodings: locale=%s, FS=%s" % (locale.getpreferredencoding(False), sys.getfilesystemencoding())) + try: + import readline + except ImportError: + readline = None + if readline is not None: + print(f"== readline version: {readline._READLINE_VERSION:#06x}") + is_editline = readline.__doc__ and "libedit" in readline.__doc__ + print("== readline implementation:", "editline" if is_editline else "GNU readline") print("Testing with flags:", sys.flags) def run_tests(self): From dfbc97844939bca25776dd01eea32552266b414c Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Fri, 7 Jul 2017 17:00:40 +0300 Subject: [PATCH 2/3] Use subprocess to avoid side-effects --- Lib/test/libregrtest/main.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py index 99e08c890c9c87..f57eae3ab511d6 100644 --- a/Lib/test/libregrtest/main.py +++ b/Lib/test/libregrtest/main.py @@ -5,6 +5,7 @@ import platform import random import re +import subprocess import sys import sysconfig import tempfile @@ -432,14 +433,26 @@ def display_header(self): print("== encodings: locale=%s, FS=%s" % (locale.getpreferredencoding(False), sys.getfilesystemencoding())) + rl_version_cmd = """if 1: try: import readline except ImportError: readline = None if readline is not None: - print(f"== readline version: {readline._READLINE_VERSION:#06x}") + print(f"{readline._READLINE_VERSION:#06x}") is_editline = readline.__doc__ and "libedit" in readline.__doc__ - print("== readline implementation:", "editline" if is_editline else "GNU readline") + print("editline" if is_editline else "GNU readline") + """ + rl_output = subprocess.run([sys.executable, "-c", textwrap.dedent(rl_version_cmd)], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if rl_output.returncode == 0: + try: + rl_version, rl_implementation = rl_output.stdout.decode().splitlines() + except ValueError: + pass + else: + print(f"== readline version: {rl_version}") + print(f"== readline implementation: {rl_implementation}") print("Testing with flags:", sys.flags) def run_tests(self): From 4f750a5cbeb6366b94c1f387ee13f31aeef9714c Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Fri, 7 Jul 2017 17:57:47 +0300 Subject: [PATCH 3/3] Address review comments --- Lib/test/libregrtest/main.py | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py index f57eae3ab511d6..39230c94017f18 100644 --- a/Lib/test/libregrtest/main.py +++ b/Lib/test/libregrtest/main.py @@ -433,26 +433,23 @@ def display_header(self): print("== encodings: locale=%s, FS=%s" % (locale.getpreferredencoding(False), sys.getfilesystemencoding())) - rl_version_cmd = """if 1: - try: - import readline - except ImportError: - readline = None - if readline is not None: - print(f"{readline._READLINE_VERSION:#06x}") - is_editline = readline.__doc__ and "libedit" in readline.__doc__ - print("editline" if is_editline else "GNU readline") - """ - rl_output = subprocess.run([sys.executable, "-c", textwrap.dedent(rl_version_cmd)], - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - if rl_output.returncode == 0: + rl_version_cmd = textwrap.dedent(""" + import sys try: - rl_version, rl_implementation = rl_output.stdout.decode().splitlines() - except ValueError: - pass + import readline + except ImportError: + sys.exit(1) else: - print(f"== readline version: {rl_version}") - print(f"== readline implementation: {rl_implementation}") + def get_rl_info(): + is_editline = readline.__doc__ and "libedit" in readline.__doc__ + return f"{readline._READLINE_VERSION:#06x}", "editline" if is_editline else "GNU readline" + rl_version, rl_implementation = get_rl_info() + print(f"== readline: version {rl_version} ({rl_implementation})", end="") + """) + rl_output = subprocess.run([sys.executable, "-c", rl_version_cmd], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if rl_output.returncode == 0: + print(rl_output.stdout.decode()) print("Testing with flags:", sys.flags) def run_tests(self):