From e0c44377935de3491b2cbe1e5f87f8b336fdc922 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 6 Oct 2023 02:37:28 +0200 Subject: [PATCH] Add support.MS_WINDOWS constant (#110446) --- Lib/test/_test_embed_set_config.py | 2 +- Lib/test/libregrtest/logger.py | 3 ++- Lib/test/libregrtest/main.py | 4 ++-- Lib/test/libregrtest/run_workers.py | 4 ++-- Lib/test/libregrtest/utils.py | 2 -- Lib/test/pythoninfo.py | 1 + Lib/test/support/__init__.py | 4 +++- Lib/test/test_asyncio/test_subprocess.py | 5 ++--- Lib/test/test_cppext/__init__.py | 3 +-- Lib/test/test_cppext/setup.py | 6 ++---- Lib/test/test_embed.py | 7 ++----- Lib/test/test_faulthandler.py | 4 +--- Lib/test/test_gdb/__init__.py | 3 +-- Lib/test/test_regrtest.py | 4 +--- Lib/test/test_utf8_mode.py | 3 +-- 15 files changed, 22 insertions(+), 33 deletions(-) diff --git a/Lib/test/_test_embed_set_config.py b/Lib/test/_test_embed_set_config.py index 0c016b5d75d..a2ddd133cf4 100644 --- a/Lib/test/_test_embed_set_config.py +++ b/Lib/test/_test_embed_set_config.py @@ -9,9 +9,9 @@ import _testinternalcapi import os import sys import unittest +from test.support import MS_WINDOWS -MS_WINDOWS = (os.name == 'nt') MAX_HASH_SEED = 4294967295 class SetConfigTests(unittest.TestCase): diff --git a/Lib/test/libregrtest/logger.py b/Lib/test/libregrtest/logger.py index 2f0c4bf1c84..a1257069273 100644 --- a/Lib/test/libregrtest/logger.py +++ b/Lib/test/libregrtest/logger.py @@ -1,9 +1,10 @@ import os import time +from test.support import MS_WINDOWS from .results import TestResults from .runtests import RunTests -from .utils import print_warning, MS_WINDOWS +from .utils import print_warning if MS_WINDOWS: from .win_utils import WindowsLoadTracker diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py index 60179ec7708..cb60d5af732 100644 --- a/Lib/test/libregrtest/main.py +++ b/Lib/test/libregrtest/main.py @@ -7,7 +7,7 @@ import sysconfig import time from test import support -from test.support import os_helper +from test.support import os_helper, MS_WINDOWS from .cmdline import _parse_args, Namespace from .findtests import findtests, split_test_packages, list_cases @@ -24,7 +24,7 @@ from .utils import ( printlist, get_temp_dir, get_work_dir, exit_timeout, display_header, cleanup_temp_dir, print_warning, is_cross_compiled, get_host_runner, - MS_WINDOWS, EXIT_TIMEOUT) + EXIT_TIMEOUT) class Regrtest: diff --git a/Lib/test/libregrtest/run_workers.py b/Lib/test/libregrtest/run_workers.py index 106f9730832..16f8331abd3 100644 --- a/Lib/test/libregrtest/run_workers.py +++ b/Lib/test/libregrtest/run_workers.py @@ -13,7 +13,7 @@ import traceback from typing import Literal, TextIO from test import support -from test.support import os_helper +from test.support import os_helper, MS_WINDOWS from .logger import Logger from .result import TestResult, State @@ -21,7 +21,7 @@ from .results import TestResults from .runtests import RunTests, JsonFile, JsonFileType from .single import PROGRESS_MIN_TIME from .utils import ( - StrPath, TestName, MS_WINDOWS, + StrPath, TestName, format_duration, print_warning, count, plural, get_signal_name) from .worker import create_worker_process, USE_PROCESS_GROUP diff --git a/Lib/test/libregrtest/utils.py b/Lib/test/libregrtest/utils.py index ea2086cd71b..aac8395da87 100644 --- a/Lib/test/libregrtest/utils.py +++ b/Lib/test/libregrtest/utils.py @@ -19,8 +19,6 @@ from test.support import os_helper from test.support import threading_helper -MS_WINDOWS = (sys.platform == 'win32') - # All temporary files and temporary directories created by libregrtest should # use TMP_PREFIX so cleanup_temp_dir() can remove them all. TMP_PREFIX = 'test_python_' diff --git a/Lib/test/pythoninfo.py b/Lib/test/pythoninfo.py index 58d906ffc62..4f3ebb12ed9 100644 --- a/Lib/test/pythoninfo.py +++ b/Lib/test/pythoninfo.py @@ -730,6 +730,7 @@ def collect_support(info_add): return attributes = ( + 'MS_WINDOWS', 'has_fork_support', 'has_socket_support', 'has_strftime_extensions', diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index f3270d66bd0..982d0df3b86 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -46,7 +46,7 @@ __all__ = [ "check_disallow_instantiation", "check_sanitizer", "skip_if_sanitizer", "requires_limited_api", "requires_specialization", # sys - "is_jython", "is_android", "is_emscripten", "is_wasi", + "MS_WINDOWS", "is_jython", "is_android", "is_emscripten", "is_wasi", "check_impl_detail", "unix_shell", "setswitchinterval", # os "get_pagesize", @@ -509,6 +509,8 @@ def has_no_debug_ranges(): def requires_debug_ranges(reason='requires co_positions / debug_ranges'): return unittest.skipIf(has_no_debug_ranges(), reason) +MS_WINDOWS = (sys.platform == 'win32') + # Is not actually used in tests, but is kept for compatibility. is_jython = sys.platform.startswith('java') diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index dc5a48d500e..179c8cb8cc1 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -14,8 +14,7 @@ from test import support from test.support import os_helper -MS_WINDOWS = (sys.platform == 'win32') -if MS_WINDOWS: +if support.MS_WINDOWS: import msvcrt else: from asyncio import unix_events @@ -283,7 +282,7 @@ class SubprocessMixin: rfd, wfd = os.pipe() self.addCleanup(os.close, rfd) self.addCleanup(os.close, wfd) - if MS_WINDOWS: + if support.MS_WINDOWS: handle = msvcrt.get_osfhandle(rfd) os.set_handle_inheritable(handle, True) code = textwrap.dedent(f''' diff --git a/Lib/test/test_cppext/__init__.py b/Lib/test/test_cppext/__init__.py index 25b6fc64a03..4d9ee3cb222 100644 --- a/Lib/test/test_cppext/__init__.py +++ b/Lib/test/test_cppext/__init__.py @@ -9,7 +9,6 @@ import sysconfig from test import support -MS_WINDOWS = (sys.platform == 'win32') SOURCE = os.path.join(os.path.dirname(__file__), 'extension.cpp') SETUP = os.path.join(os.path.dirname(__file__), 'setup.py') @@ -30,7 +29,7 @@ class TestCPPExt(unittest.TestCase): # With MSVC, the linker fails with: cannot open file 'python311.lib' # https://github.com/python/cpython/pull/32175#issuecomment-1111175897 - @unittest.skipIf(MS_WINDOWS, 'test fails on Windows') + @unittest.skipIf(support.MS_WINDOWS, 'test fails on Windows') # Building and running an extension in clang sanitizing mode is not # straightforward @unittest.skipIf( diff --git a/Lib/test/test_cppext/setup.py b/Lib/test/test_cppext/setup.py index 976633bc338..c7ba1efb4dd 100644 --- a/Lib/test/test_cppext/setup.py +++ b/Lib/test/test_cppext/setup.py @@ -4,15 +4,13 @@ import os import shlex import sys import sysconfig +from test import support from setuptools import setup, Extension -MS_WINDOWS = (sys.platform == 'win32') - - SOURCE = 'extension.cpp' -if not MS_WINDOWS: +if not support.MS_WINDOWS: # C++ compiler flags for GCC and clang CPPFLAGS = [ # gh-91321: The purpose of _testcppext extension is to check that building diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index 46c9b03c417..06f2d8b9a36 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -1,8 +1,6 @@ # Run the tests in Programs/_testembed.c (tests for the CPython embedding APIs) from test import support -from test.support import import_helper -from test.support import os_helper -from test.support import requires_specialization +from test.support import import_helper, os_helper, MS_WINDOWS import unittest from collections import namedtuple @@ -21,7 +19,6 @@ import textwrap if not support.has_subprocess_support: raise unittest.SkipTest("test module requires subprocess") -MS_WINDOWS = (os.name == 'nt') MACOS = (sys.platform == 'darwin') PYMEM_ALLOCATOR_NOT_SET = 0 PYMEM_ALLOCATOR_DEBUG = 2 @@ -348,7 +345,7 @@ class EmbeddingTests(EmbeddingTestsMixin, unittest.TestCase): out, err = self.run_embedded_interpreter("test_repeated_simple_init") self.assertEqual(out, 'Finalized\n' * INIT_LOOPS) - @requires_specialization + @support.requires_specialization def test_specialized_static_code_gets_unspecialized_at_Py_FINALIZE(self): # https://github.com/python/cpython/issues/92031 diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py index 0b8299a32b0..d0473500a17 100644 --- a/Lib/test/test_faulthandler.py +++ b/Lib/test/test_faulthandler.py @@ -7,8 +7,7 @@ import signal import subprocess import sys from test import support -from test.support import os_helper -from test.support import script_helper, is_android +from test.support import os_helper, script_helper, is_android, MS_WINDOWS import tempfile import unittest from textwrap import dedent @@ -22,7 +21,6 @@ if not support.has_subprocess_support: raise unittest.SkipTest("test module requires subprocess") TIMEOUT = 0.5 -MS_WINDOWS = (os.name == 'nt') def expected_traceback(lineno1, lineno2, header, min_count=1): diff --git a/Lib/test/test_gdb/__init__.py b/Lib/test/test_gdb/__init__.py index d74075e4567..99557739af6 100644 --- a/Lib/test/test_gdb/__init__.py +++ b/Lib/test/test_gdb/__init__.py @@ -9,8 +9,7 @@ import unittest from test import support -MS_WINDOWS = (os.name == 'nt') -if MS_WINDOWS: +if support.MS_WINDOWS: # On Windows, Python is usually built by MSVC. Passing /p:DebugSymbols=true # option to MSBuild produces PDB debug symbols, but gdb doesn't support PDB # debug symbol files. diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py index de2c4317e71..cfe8b579703 100644 --- a/Lib/test/test_regrtest.py +++ b/Lib/test/test_regrtest.py @@ -42,8 +42,6 @@ EXITCODE_NO_TESTS_RAN = 4 EXITCODE_RERUN_FAIL = 5 EXITCODE_INTERRUPTED = 130 -MS_WINDOWS = (sys.platform == 'win32') - TEST_INTERRUPTED = textwrap.dedent(""" from signal import SIGINT, raise_signal try: @@ -2072,7 +2070,7 @@ class ArgsTestCase(BaseTestCase): self.check_executed_tests(output, testname, failed=[testname], stats=0, parallel=True) - if not MS_WINDOWS: + if not support.MS_WINDOWS: exitcode = -int(signal.SIGSEGV) self.assertIn(f"Exit code {exitcode} (SIGSEGV)", output) self.check_line(output, "just before crash!", full=True, regex=False) diff --git a/Lib/test/test_utf8_mode.py b/Lib/test/test_utf8_mode.py index ec29ba6d51b..f66881044e1 100644 --- a/Lib/test/test_utf8_mode.py +++ b/Lib/test/test_utf8_mode.py @@ -9,10 +9,9 @@ import textwrap import unittest from test import support from test.support.script_helper import assert_python_ok, assert_python_failure -from test.support import os_helper +from test.support import os_helper, MS_WINDOWS -MS_WINDOWS = (sys.platform == 'win32') POSIX_LOCALES = ('C', 'POSIX') VXWORKS = (sys.platform == "vxworks")