diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-06-28 16:05:05 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-28 16:05:05 (GMT) |
commit | 64580da33122a10aef75c76aa3ff87c0ee11e3d7 (patch) | |
tree | 2e76dabdcfefaa2375defd42131ebbe40d08ce23 | |
parent | ec3e20a2d1edddb0558f9d32e2b367904ccdde88 (diff) | |
download | cpython-64580da33122a10aef75c76aa3ff87c0ee11e3d7.zip cpython-64580da33122a10aef75c76aa3ff87c0ee11e3d7.tar.gz cpython-64580da33122a10aef75c76aa3ff87c0ee11e3d7.tar.bz2 |
bpo-37412: pythoninfo: add Windows long paths (GH-14434)
On Windows, test.pythoninfo now checks if support for long paths is
enabled using ntdll.RtlAreLongPathsEnabled() function.
Co-Authored-By: Eryk Sun <eryksun@gmail.com>
-rw-r--r-- | Lib/test/pythoninfo.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py index 6eb9e87..28a9023 100644 --- a/Lib/test/pythoninfo.py +++ b/Lib/test/pythoninfo.py @@ -651,6 +651,29 @@ def collect_subprocess(info_add): copy_attributes(info_add, subprocess, 'subprocess.%s', ('_USE_POSIX_SPAWN',)) +def collect_windows(info_add): + try: + import ctypes + except ImportError: + return + + if not hasattr(ctypes, 'WinDLL'): + return + + ntdll = ctypes.WinDLL('ntdll') + BOOLEAN = ctypes.c_ubyte + + try: + RtlAreLongPathsEnabled = ntdll.RtlAreLongPathsEnabled + except AttributeError: + res = '<function not available>' + else: + RtlAreLongPathsEnabled.restype = BOOLEAN + RtlAreLongPathsEnabled.argtypes = () + res = bool(RtlAreLongPathsEnabled()) + info_add('windows.RtlAreLongPathsEnabled', res) + + def collect_info(info): error = False info_add = info.add @@ -684,6 +707,7 @@ def collect_info(info): collect_testcapi, collect_time, collect_tkinter, + collect_windows, collect_zlib, # Collecting from tests should be last as they have side effects. |