Skip to content

Commit eb13c60

Browse files
committed
[test] Use Python development module with warnings as errors for testing
From the docs [1]: > The Python Development Mode introduces additional runtime checks that are too expensive to be enabled by default. It should not be more verbose than the default if the code is correct; new warnings are only emitted when an issue is detected. Also use the `-W error` flag to treat warnings as errors. This should help us to find bugs and problems with the tests. [1] https://docs.python.org/3/library/devmode.html
1 parent cad6ea6 commit eb13c60

8 files changed

Lines changed: 19 additions & 16 deletions

File tree

cmake/modules/RootMacros.cmake

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1972,7 +1972,7 @@ function(ROOT_ADD_PYUNITTESTS name)
19721972

19731973
string(REGEX REPLACE "[_]" "-" good_name "${name}")
19741974
ROOT_ADD_TEST(pyunittests-${good_name}
1975-
COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
1975+
COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
19761976
ENVIRONMENT PYTHONPATH=${pythonpaths_native})
19771977
endfunction()
19781978

@@ -2032,9 +2032,9 @@ function(ROOT_ADD_PYUNITTEST name file)
20322032
string(REPLACE "-test-" "-" clean_name_with_path ${name_with_path})
20332033

20342034
if(ARG_GENERIC)
2035-
set(test_cmd COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
2035+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
20362036
else()
2037-
set(test_cmd COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
2037+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
20382038
endif()
20392039

20402040
set(test_name pyunittests${clean_name_with_path})
@@ -2951,7 +2951,7 @@ macro(ROOTTEST_SETUP_MACROTEST)
29512951
# Add python script to CTest.
29522952
elseif(ARG_MACRO MATCHES "[.]py")
29532953
get_filename_component(realfp ${ARG_MACRO} REALPATH)
2954-
set(command ${Python3_EXECUTABLE} ${realfp} ${PYROOT_EXTRAFLAGS})
2954+
set(command ${Python3_EXECUTABLE_DEV} ${realfp} ${PYROOT_EXTRAFLAGS})
29552955

29562956
elseif(DEFINED ARG_MACRO)
29572957
set(command ${root_cmd} ${ARG_MACRO})
@@ -2987,7 +2987,7 @@ macro(ROOTTEST_SETUP_EXECTEST)
29872987

29882988
if(MSVC)
29892989
if(${realexec} MATCHES "[.]py" AND NOT ${realexec} MATCHES "[.]exe")
2990-
set(realexec ${Python3_EXECUTABLE} ${realexec})
2990+
set(realexec ${Python3_EXECUTABLE_DEV} ${realexec})
29912991
else()
29922992
set(realexec ${realexec})
29932993
endif()

cmake/modules/SearchInstalledSoftware.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,9 @@ if(tmva-pymva OR tmva-sofie)
710710
endif()
711711
find_package(Python3 3.10 COMPONENTS ${python_components})
712712

713+
# The invocation of the Python 3 executable that should be used for testing:
714+
set(Python3_EXECUTABLE_DEV ${Python3_EXECUTABLE} -X dev -W error)
715+
713716
#---Check for OpenGL installation-------------------------------------------------------
714717
# OpenGL is required by various graf3d features that are enabled with opengl=ON,
715718
# or by the Cocoa-related code that always requires it.

roottest/main/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ configure_file(RNTuple.root . COPYONLY)
99
# We should explicitly use the Python executable from the Python version that
1010
# was used to build ROOT. Otherwise, we risk picking up a different Python
1111
# version at test time.
12-
set(PY_TOOLS_PREFIX ${Python3_EXECUTABLE} ${ROOTSYS}/bin)
12+
set(PY_TOOLS_PREFIX ${Python3_EXECUTABLE_DEV} ${ROOTSYS}/bin)
1313
set(TOOLS_PREFIX ${ROOTSYS}/bin)
1414

1515
if(MSVC)
@@ -125,7 +125,7 @@ ROOTTEST_ADD_TEST(ROOT_8197
125125
set(test_env PYTHONWARNINGS=ignore)
126126

127127
############################## PATTERN TESTS ############################
128-
set (TESTPATTERN_EXE ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/testPatternToFileNameAndPathSplitList.py)
128+
set (TESTPATTERN_EXE ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/testPatternToFileNameAndPathSplitList.py)
129129
ROOTTEST_ADD_TEST(SimplePattern1
130130
COMMAND ${TESTPATTERN_EXE} test.root
131131
OUTREF SimplePattern.ref

roottest/python/JupyROOT/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ foreach(pyfile ${pyfiles})
2323
get_filename_component(SHORTPYFILE ${pyfile} NAME_WE)
2424
if (NOT ${SHORTPYFILE} STREQUAL "__init__")
2525
ROOTTEST_ADD_TEST(${SHORTPYFILE}_doctest
26-
COMMAND ${Python3_EXECUTABLE} ${DOCTEST_LAUNCHER} ${pyfile}
26+
COMMAND ${Python3_EXECUTABLE_DEV} ${DOCTEST_LAUNCHER} ${pyfile}
2727
PYTHON_DEPS IPython)
2828
endif()
2929
endforeach()
@@ -33,7 +33,7 @@ foreach(NOTEBOOK ${NOTEBOOKS})
3333
get_filename_component(NOTEBOOKBASE ${NOTEBOOK} NAME_WE)
3434
ROOTTEST_ADD_TEST(${NOTEBOOKBASE}_notebook
3535
COPY_TO_BUILDDIR ${NOTEBOOK}
36-
COMMAND ${Python3_EXECUTABLE} ${NBDIFFUTIL} ${NOTEBOOK}
36+
COMMAND ${Python3_EXECUTABLE_DEV} ${NBDIFFUTIL} ${NOTEBOOK}
3737
RUN_SERIAL
3838
PYTHON_DEPS jupyter)
3939
endforeach()
@@ -44,7 +44,7 @@ if(imt)
4444
get_filename_component(NOTEBOOKBASE ${IMT_NB} NAME_WE)
4545
ROOTTEST_ADD_TEST(${NOTEBOOKBASE}_notebook
4646
COPY_TO_BUILDDIR ${IMT_NB}
47-
COMMAND ${Python3_EXECUTABLE} ${NBDIFFUTIL} ${IMT_NB} "OFF"
47+
COMMAND ${Python3_EXECUTABLE_DEV} ${NBDIFFUTIL} ${IMT_NB} "OFF"
4848
RUN_SERIAL
4949
PYTHON_DEPS jupyter)
5050
endif()

roottest/python/distrdf/backends/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ endif()
1010
if(test_distrdf_pyspark)
1111

1212
# Define environment variables needed in all pyspark tests
13-
set(PYSPARK_ENV_VARS PYSPARK_PYTHON=${Python3_EXECUTABLE})
13+
set(PYSPARK_ENV_VARS PYSPARK_PYTHON=${Python3_EXECUTABLE_DEV})
1414

1515
if(MACOSX_VERSION VERSION_GREATER_EQUAL 10.13)
1616
# MacOS has changed rules about forking processes after 10.13

roottest/root/meta/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ ROOTTEST_ADD_TEST(ROOT5268
2626
PASSREGEX "error: unknown type name 'Tbrowser'")
2727

2828
ROOTTEST_ADD_TEST(rlibmap
29-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/rlibmapLauncher.py
29+
COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/rlibmapLauncher.py
3030
PASSRC 1
3131
OUTREF rlibmap.ref)
3232

roottest/root/rint/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64.*|x86.*|amd64.*|AMD64.*|i686.*|i386.*")
22
# All platforms except of ARM/AARCH64
33
ROOTTEST_ADD_TEST(TabCom
4-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/driveTabCom.py
4+
COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/driveTabCom.py
55
INPUT TabCom_input.txt
66
OUTCNV filterOpt.sh
77
OUTREF TabCom.oref
88
ERRREF TabCom.eref
99
COPY_TO_BUILDDIR MyClass.h)
1010

1111
ROOTTEST_ADD_TEST(BackslashNewline
12-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/driveTabCom.py
12+
COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/driveTabCom.py
1313
INPUT BackslashNewline_input.txt)
1414
endif()
1515

tutorials/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ if(geom)
689689
endif()
690690
# define Python GNN parsing tutorial needed to run before
691691
if (ROOT_SONNET_FOUND AND ROOT_GRAPH_NETS_FOUND)
692-
ROOT_ADD_TEST(tutorial-machine_learning-TMVA_SOFIE_GNN_Parser COMMAND ${Python3_EXECUTABLE}
692+
ROOT_ADD_TEST(tutorial-machine_learning-TMVA_SOFIE_GNN_Parser COMMAND ${Python3_EXECUTABLE_DEV}
693693
${CMAKE_CURRENT_SOURCE_DIR}/machine_learning/TMVA_SOFIE_GNN_Parser.py
694694
PASSRC 0 FAILREGEX "Error in" ": error:" LABELS tutorial ENVIRONMENT ${TUTORIAL_ENV})
695695
set (machine_learning-TMVA_SOFIE_GNN_Application-depends tutorial-machine_learning-TMVA_SOFIE_GNN_Parser)
@@ -1051,7 +1051,7 @@ if(pyroot)
10511051
endif()
10521052

10531053
ROOT_ADD_TEST(${tutorial_name}
1054-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${t}
1054+
COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/${t}
10551055
PASSRC ${rc} FAILREGEX "Error in" ": error:" "segmentation violation"
10561056
LABELS ${labels}
10571057
DEPENDS ${tutorial_dependency}

0 commit comments

Comments
 (0)