From 64580da33122a10aef75c76aa3ff87c0ee11e3d7 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 28 Jun 2019 18:05:05 +0200 Subject: [PATCH] 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 --- Lib/test/pythoninfo.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py index 6eb9e875bd..28a902355e 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 = '' + 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. -- 2.40.0