summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2024-06-28 12:41:37 (GMT)
committerGitHub <noreply@github.com>2024-06-28 12:41:37 (GMT)
commit43709d5d5424725ec061de2c12c3761affde69ef (patch)
treed37b95065bd4fc00e8b55dfaacbf3d3d18181588
parentef3c400434eab53e358ebfa5da0411fab722cafb (diff)
downloadcpython-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.h3
-rw-r--r--Lib/test/test_cext/__init__.py2
-rw-r--r--Lib/test/test_cext/setup.py8
-rw-r--r--Lib/test/test_cppext/__init__.py2
-rw-r--r--Lib/test/test_cppext/setup.py8
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():