summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-06-28 16:05:05 (GMT)
committerGitHub <noreply@github.com>2019-06-28 16:05:05 (GMT)
commit64580da33122a10aef75c76aa3ff87c0ee11e3d7 (patch)
tree2e76dabdcfefaa2375defd42131ebbe40d08ce23
parentec3e20a2d1edddb0558f9d32e2b367904ccdde88 (diff)
downloadcpython-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.py24
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.