diff options
author | Victor Stinner <vstinner@python.org> | 2024-06-28 12:41:37 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-28 12:41:37 (GMT) |
commit | 43709d5d5424725ec061de2c12c3761affde69ef (patch) | |
tree | d37b95065bd4fc00e8b55dfaacbf3d3d18181588 | |
parent | ef3c400434eab53e358ebfa5da0411fab722cafb (diff) | |
download | cpython-43709d5d5424725ec061de2c12c3761affde69ef.zip cpython-43709d5d5424725ec061de2c12c3761affde69ef.tar.gz cpython-43709d5d5424725ec061de2c12c3761affde69ef.tar.bz2 |
Check for compiler warnings in test_cext on Windows (#121088)
On Windows, test_cext and test_cppext now pass /WX flag to the MSC
compiler to treat all compiler warnings as errors. In verbose mode,
these tests now log the compiler commands to help debugging.
Change Py_BUILD_ASSERT_EXPR implementation on Windows to avoid a
compiler warning about an unnamed structure.
-rw-r--r-- | Include/pymacro.h | 3 | ||||
-rw-r--r-- | Lib/test/test_cext/__init__.py | 2 | ||||
-rw-r--r-- | Lib/test/test_cext/setup.py | 8 | ||||
-rw-r--r-- | Lib/test/test_cppext/__init__.py | 2 | ||||
-rw-r--r-- | Lib/test/test_cppext/setup.py | 8 |
5 files changed, 18 insertions, 5 deletions
diff --git a/Include/pymacro.h b/Include/pymacro.h index b388c2a..a7945ef 100644 --- a/Include/pymacro.h +++ b/Include/pymacro.h @@ -46,7 +46,8 @@ /* Argument must be a char or an int in [-128, 127] or [0, 255]. */ #define Py_CHARMASK(c) ((unsigned char)((c) & 0xff)) -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ + && !defined(_MSC_VER)) # define Py_BUILD_ASSERT_EXPR(cond) \ ((void)sizeof(struct { int dummy; _Static_assert(cond, #cond); }), \ 0) diff --git a/Lib/test/test_cext/__init__.py b/Lib/test/test_cext/__init__.py index ec44b0c..54859f9 100644 --- a/Lib/test/test_cext/__init__.py +++ b/Lib/test/test_cext/__init__.py @@ -86,6 +86,8 @@ class TestExt(unittest.TestCase): cmd = [python_exe, '-X', 'dev', '-m', 'pip', 'install', '--no-build-isolation', os.path.abspath(pkg_dir)] + if support.verbose: + cmd.append('-v') run_cmd('Install', cmd) # Do a reference run. Until we test that running python diff --git a/Lib/test/test_cext/setup.py b/Lib/test/test_cext/setup.py index 383d256..19edc5e 100644 --- a/Lib/test/test_cext/setup.py +++ b/Lib/test/test_cext/setup.py @@ -11,6 +11,7 @@ from setuptools import setup, Extension SOURCE = 'extension.c' + if not support.MS_WINDOWS: # C compiler flags for GCC and clang CFLAGS = [ @@ -28,8 +29,11 @@ if not support.MS_WINDOWS: '-Werror=declaration-after-statement', ) else: - # Don't pass any compiler flag to MSVC - CFLAGS = [] + # MSVC compiler flags + CFLAGS = [ + # Treat all compiler warnings as compiler errors + '/WX', + ] def main(): diff --git a/Lib/test/test_cppext/__init__.py b/Lib/test/test_cppext/__init__.py index 00a2840..efd7944 100644 --- a/Lib/test/test_cppext/__init__.py +++ b/Lib/test/test_cppext/__init__.py @@ -76,6 +76,8 @@ class TestCPPExt(unittest.TestCase): cmd = [python_exe, '-X', 'dev', '-m', 'pip', 'install', '--no-build-isolation', os.path.abspath(pkg_dir)] + if support.verbose: + cmd.append('-v') run_cmd('Install', cmd) # Do a reference run. Until we test that running python diff --git a/Lib/test/test_cppext/setup.py b/Lib/test/test_cppext/setup.py index 80b3e0d..f1848f2 100644 --- a/Lib/test/test_cppext/setup.py +++ b/Lib/test/test_cppext/setup.py @@ -10,6 +10,7 @@ from setuptools import setup, Extension SOURCE = 'extension.cpp' + if not support.MS_WINDOWS: # C++ compiler flags for GCC and clang CPPFLAGS = [ @@ -19,8 +20,11 @@ if not support.MS_WINDOWS: '-Werror', ] else: - # Don't pass any compiler flag to MSVC - CPPFLAGS = [] + # MSVC compiler flags + CPPFLAGS = [ + # Treat all compiler warnings as compiler errors + '/WX', + ] def main(): |