summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-11-09 15:23:58 (GMT)
committerGitHub <noreply@github.com>2023-11-09 15:23:58 (GMT)
commite983ca859de279682631dbb13b959f14a7d89a7b (patch)
tree1a3fd9aa2469d5366ad896e50dcad57d02fcf46d
parente0d827d479ae9970a3e80258d11667fe42f85039 (diff)
downloadcpython-e983ca859de279682631dbb13b959f14a7d89a7b.zip
cpython-e983ca859de279682631dbb13b959f14a7d89a7b.tar.gz
cpython-e983ca859de279682631dbb13b959f14a7d89a7b.tar.bz2
[3.12] gh-111881: Use lazy import in test.support (#111885) (#111890)
gh-111881: Use lazy import in test.support (#111885) * Import lazily getpass in test.support * Only import ctypes on Windows in test.support.os_helper. (cherry picked from commit 0372e3b02a7e3dc1c564dba94dcd817c5472b04f)
-rw-r--r--Lib/test/support/__init__.py2
-rw-r--r--Lib/test/support/os_helper.py19
2 files changed, 13 insertions, 8 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index 650d4aa..fd9265c 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -6,7 +6,6 @@ if __name__ != 'test.support':
import contextlib
import dataclasses
import functools
-import getpass
import opcode
import os
import re
@@ -382,6 +381,7 @@ def requires_mac_ver(*min_version):
def skip_if_buildbot(reason=None):
"""Decorator raising SkipTest if running on a buildbot."""
+ import getpass
if not reason:
reason = 'not suitable for buildbots'
try:
diff --git a/Lib/test/support/os_helper.py b/Lib/test/support/os_helper.py
index 821a4b1..46ae53a 100644
--- a/Lib/test/support/os_helper.py
+++ b/Lib/test/support/os_helper.py
@@ -10,6 +10,8 @@ import time
import unittest
import warnings
+from test import support
+
# Filename used for testing
TESTFN_ASCII = '@test'
@@ -720,13 +722,16 @@ class EnvironmentVarGuard(collections.abc.MutableMapping):
try:
- import ctypes
- kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
-
- ERROR_FILE_NOT_FOUND = 2
- DDD_REMOVE_DEFINITION = 2
- DDD_EXACT_MATCH_ON_REMOVE = 4
- DDD_NO_BROADCAST_SYSTEM = 8
+ if support.MS_WINDOWS:
+ import ctypes
+ kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
+
+ ERROR_FILE_NOT_FOUND = 2
+ DDD_REMOVE_DEFINITION = 2
+ DDD_EXACT_MATCH_ON_REMOVE = 4
+ DDD_NO_BROADCAST_SYSTEM = 8
+ else:
+ raise AttributeError
except (ImportError, AttributeError):
def subst_drive(path):
raise unittest.SkipTest('ctypes or kernel32 is not available')