https://github.com/python/cpython/commit/be6cbfb7670c852ef8abf52b63989442b69... commit: be6cbfb7670c852ef8abf52b63989442b6942dbb branch: 2.7 author: Victor Stinner <vstinner@redhat.com> committer: GitHub <noreply@github.com> date: 2019-04-29T15:20:38+02:00 summary: bpo-35952: Sync test.pythoninfo from master (GH-13010) files: M Lib/test/pythoninfo.py diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py index ae1c07b43ac3..a6983ba021c6 100644 --- a/Lib/test/pythoninfo.py +++ b/Lib/test/pythoninfo.py @@ -6,6 +6,7 @@ import re import sys import traceback +import warnings def normalize_text(text): @@ -142,7 +143,11 @@ def collect_platform(info_add): info_add('platform.python_implementation', platform.python_implementation()) info_add('platform.platform', - platform.platform(aliased=True, terse=True)) + platform.platform(aliased=True)) + + libc_ver = ('%s %s' % platform.libc_ver()).strip() + if libc_ver: + info_add('platform.libc_ver', libc_ver) def collect_locale(info_add): @@ -376,9 +381,17 @@ def collect_time(info_add): copy_attributes(info_add, time, 'time.%s', attributes) if hasattr(time, 'get_clock_info'): - for clock in ('time', 'perf_counter'): - tinfo = time.get_clock_info(clock) - info_add('time.get_clock_info(%s)' % clock, tinfo) + for clock in ('clock', 'monotonic', 'perf_counter', + 'process_time', 'thread_time', 'time'): + try: + # prevent DeprecatingWarning on get_clock_info('clock') + with warnings.catch_warnings(record=True): + clock_info = time.get_clock_info(clock) + except ValueError: + # missing clock like time.thread_time() + pass + else: + info_add('time.get_clock_info(%s)' % clock, clock_info) def collect_datetime(info_add): @@ -407,7 +420,10 @@ def collect_sysconfig(info_add): 'OPT', 'PY_CFLAGS', 'PY_CFLAGS_NODIST', + 'PY_CORE_LDFLAGS', 'PY_LDFLAGS', + 'PY_LDFLAGS_NODIST', + 'PY_STDMODULE_CFLAGS', 'Py_DEBUG', 'Py_ENABLE_SHARED', 'SHELL', @@ -513,6 +529,8 @@ def collect_resource(info_add): value = resource.getrlimit(key) info_add('resource.%s' % name, value) + call_func(info_add, 'resource.pagesize', resource, 'getpagesize') + def collect_test_socket(info_add): try: @@ -553,10 +571,17 @@ def collect_cc(info_add): except ImportError: args = CC.split() args.append('--version') - proc = subprocess.Popen(args, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - universal_newlines=True) + try: + proc = subprocess.Popen(args, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + universal_newlines=True) + except OSError: + # Cannot run the compiler, for example when Python has been + # cross-compiled and installed on the target platform where the + # compiler is missing. + return + stdout = proc.communicate()[0] if proc.returncode: # CC --version failed: ignore error @@ -567,6 +592,35 @@ def collect_cc(info_add): info_add('CC.version', text) +def collect_gdbm(info_add): + try: + from _gdbm import _GDBM_VERSION + except ImportError: + return + + info_add('gdbm.GDBM_VERSION', '.'.join(map(str, _GDBM_VERSION))) + + +def collect_get_config(info_add): + # Dump global configuration variables, _PyCoreConfig + # and _PyMainInterpreterConfig + try: + from _testinternalcapi import get_configs + except ImportError: + return + + all_configs = get_configs() + for config_type in sorted(all_configs): + config = all_configs[config_type] + for key in sorted(config): + info_add('%s[%s]' % (config_type, key), repr(config[key])) + + +def collect_subprocess(info_add): + import subprocess + copy_attributes(info_add, subprocess, 'subprocess.%s', ('_USE_POSIX_SPAWN',)) + + def collect_info(info): error = False info_add = info.add @@ -594,6 +648,9 @@ def collect_info(info): collect_testcapi, collect_resource, collect_cc, + collect_gdbm, + collect_get_config, + collect_subprocess, # Collecting from tests should be last as they have side effects. collect_test_socket,