Skip to content

Commit 9da9c4c

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 6173e6e commit 9da9c4c

7 files changed

Lines changed: 18 additions & 15 deletions

File tree

cmake/modules/RootMacros.cmake

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

20152015
string(REGEX REPLACE "[_]" "-" good_name "${name}")
20162016
ROOT_ADD_TEST(pyunittests-${good_name}
2017-
COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
2017+
COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
20182018
ENVIRONMENT PYTHONPATH=${pythonpaths_native})
20192019
endfunction()
20202020

@@ -2074,9 +2074,9 @@ function(ROOT_ADD_PYUNITTEST name file)
20742074
string(REPLACE "-test-" "-" clean_name_with_path ${name_with_path})
20752075

20762076
if(ARG_GENERIC)
2077-
set(test_cmd COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
2077+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
20782078
else()
2079-
set(test_cmd COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
2079+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
20802080
endif()
20812081

20822082
set(test_name pyunittests${clean_name_with_path})
@@ -2993,7 +2993,7 @@ macro(ROOTTEST_SETUP_MACROTEST)
29932993
# Add python script to CTest.
29942994
elseif(ARG_MACRO MATCHES "[.]py")
29952995
get_filename_component(realfp ${ARG_MACRO} REALPATH)
2996-
set(command ${Python3_EXECUTABLE} ${realfp} ${PYROOT_EXTRAFLAGS})
2996+
set(command ${Python3_EXECUTABLE_DEV} ${realfp} ${PYROOT_EXTRAFLAGS})
29972997

29982998
elseif(DEFINED ARG_MACRO)
29992999
set(command ${root_cmd} ${ARG_MACRO})
@@ -3029,7 +3029,7 @@ macro(ROOTTEST_SETUP_EXECTEST)
30293029

30303030
if(MSVC)
30313031
if(${realexec} MATCHES "[.]py" AND NOT ${realexec} MATCHES "[.]exe")
3032-
set(realexec ${Python3_EXECUTABLE} ${realexec})
3032+
set(realexec ${Python3_EXECUTABLE_DEV} ${realexec})
30333033
else()
30343034
set(realexec ${realexec})
30353035
endif()

cmake/modules/SearchInstalledSoftware.cmake

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

629+
# The invocation of the Python 3 executable that should be used for testing:
630+
set(Python3_EXECUTABLE_DEV ${Python3_EXECUTABLE} -X dev -W error)
631+
629632
#---Check for OpenGL installation-------------------------------------------------------
630633
# OpenGL is required by various graf3d features that are enabled with opengl=ON,
631634
# 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
@@ -11,7 +11,7 @@ configure_file(RootcpReplaceEntireFileCheck.C . COPYONLY)
1111
# We should explicitly use the Python executable from the Python version that
1212
# was used to build ROOT. Otherwise, we risk picking up a different Python
1313
# version at test time.
14-
set(PY_TOOLS_PREFIX ${Python3_EXECUTABLE} ${ROOTSYS}/bin)
14+
set(PY_TOOLS_PREFIX ${Python3_EXECUTABLE_DEV} ${ROOTSYS}/bin)
1515
set(TOOLS_PREFIX ${ROOTSYS}/bin)
1616

1717
if(MSVC)
@@ -519,7 +519,7 @@ if(pyroot)
519519
set(test_env PYTHONWARNINGS=ignore)
520520
521521
############################## PATTERN TESTS ############################
522-
set (TESTPATTERN_EXE ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/testPatternToFileNameAndPathSplitList.py)
522+
set (TESTPATTERN_EXE ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/testPatternToFileNameAndPathSplitList.py)
523523
ROOTTEST_ADD_TEST(SimplePattern1
524524
COMMAND ${TESTPATTERN_EXE} test.root
525525
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/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
@@ -687,7 +687,7 @@ if(geom)
687687
endif()
688688
# define Python GNN parsing tutorial needed to run before
689689
if (ROOT_SONNET_FOUND AND ROOT_GRAPH_NETS_FOUND)
690-
ROOT_ADD_TEST(tutorial-machine_learning-TMVA_SOFIE_GNN_Parser COMMAND ${Python3_EXECUTABLE}
690+
ROOT_ADD_TEST(tutorial-machine_learning-TMVA_SOFIE_GNN_Parser COMMAND ${Python3_EXECUTABLE_DEV}
691691
${CMAKE_CURRENT_SOURCE_DIR}/machine_learning/TMVA_SOFIE_GNN_Parser.py
692692
PASSRC 0 FAILREGEX "Error in" ": error:" LABELS tutorial ENVIRONMENT ${TUTORIAL_ENV})
693693
set (machine_learning-TMVA_SOFIE_GNN_Application-depends tutorial-machine_learning-TMVA_SOFIE_GNN_Parser)
@@ -1043,7 +1043,7 @@ if(pyroot)
10431043
endif()
10441044

10451045
ROOT_ADD_TEST(${tutorial_name}
1046-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${t}
1046+
COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/${t}
10471047
PASSRC ${rc} FAILREGEX "Error in" ": error:" "segmentation violation"
10481048
LABELS ${labels}
10491049
DEPENDS ${tutorial_dependency}

0 commit comments

Comments
 (0)