diff options
author | Victor Stinner <vstinner@python.org> | 2023-11-09 15:23:58 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-09 15:23:58 (GMT) |
commit | e983ca859de279682631dbb13b959f14a7d89a7b (patch) | |
tree | 1a3fd9aa2469d5366ad896e50dcad57d02fcf46d | |
parent | e0d827d479ae9970a3e80258d11667fe42f85039 (diff) | |
download | cpython-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__.py | 2 | ||||
-rw-r--r-- | Lib/test/support/os_helper.py | 19 |
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') |