From 1881befb905553618f1e7ad2cef8f6ff07e1b8ef Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 7 Jul 2017 16:06:58 +0200 Subject: [PATCH] bpo-29854: test_readline logs versions (#2619) * test_readline logs the versions of libreadline when run in verbose mode * Add also readline._READLINE_LIBRARY_VERSION --- Lib/test/test_readline.py | 20 ++++++++++++++++++-- Modules/readline.c | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_readline.py b/Lib/test/test_readline.py index cc3001a3796..5c372861494 100644 --- a/Lib/test/test_readline.py +++ b/Lib/test/test_readline.py @@ -9,13 +9,29 @@ import subprocess import sys import tempfile import unittest -from test.support import import_module, unlink, temp_dir, TESTFN +from test.support import import_module, unlink, temp_dir, TESTFN, verbose from test.support.script_helper import assert_python_ok # Skip tests if there is no readline module readline = import_module('readline') -is_editline = readline.__doc__ and "libedit" in readline.__doc__ +if hasattr(readline, "_READLINE_LIBRARY_VERSION"): + is_editline = ("EditLine wrapper" in readline._READLINE_LIBRARY_VERSION) +else: + is_editline = (readline.__doc__ and "libedit" in readline.__doc__) + + +def setUpModule(): + if verbose: + # Python implementations other than CPython may not have + # these private attributes + if hasattr(readline, "_READLINE_VERSION"): + print(f"readline version: {readline._READLINE_VERSION:#x}") + print(f"readline runtime version: {readline._READLINE_RUNTIME_VERSION:#x}") + if hasattr(readline, "_READLINE_LIBRARY_VERSION"): + print(f"readline library version: {readline._READLINE_LIBRARY_VERSION!r}") + print(f"use libedit emulation? {is_editline}") + @unittest.skipUnless(hasattr(readline, "clear_history"), "The history update test cannot be run because the " diff --git a/Modules/readline.c b/Modules/readline.c index 6ba124742a3..7d32c21f42d 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -1427,6 +1427,7 @@ PyInit_readline(void) PyModule_AddIntConstant(m, "_READLINE_VERSION", RL_READLINE_VERSION); PyModule_AddIntConstant(m, "_READLINE_RUNTIME_VERSION", rl_readline_version); + PyModule_AddStringConstant(m, "_READLINE_LIBRARY_VERSION", rl_library_version); return m; }