[Python-checkins] bpo-37412: pythoninfo: add Windows long paths (GH-14434)

Victor Stinner webhook-mailer at python.org
Fri Jun 28 12:05:09 EDT 2019


https://github.com/python/cpython/commit/64580da33122a10aef75c76aa3ff87c0ee11e3d7
commit: 64580da33122a10aef75c76aa3ff87c0ee11e3d7
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2019-06-28T18:05:05+02:00
summary:

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 at gmail.com>

files:
M Lib/test/pythoninfo.py

diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py
index 6eb9e875bd67..28a902355e8a 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.



More information about the Python-checkins mailing list