Skip to content

Commit 3a9053e

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 d3fd066 commit 3a9053e

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
@@ -2030,7 +2030,7 @@ function(ROOT_ADD_PYUNITTESTS name)
20302030

20312031
string(REGEX REPLACE "[_]" "-" good_name "${name}")
20322032
ROOT_ADD_TEST(pyunittests-${good_name}
2033-
COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
2033+
COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
20342034
ENVIRONMENT PYTHONPATH=${pythonpaths_native})
20352035
endfunction()
20362036

@@ -2090,9 +2090,9 @@ function(ROOT_ADD_PYUNITTEST name file)
20902090
string(REPLACE "-test-" "-" clean_name_with_path ${name_with_path})
20912091

20922092
if(ARG_GENERIC)
2093-
set(test_cmd COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
2093+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
20942094
else()
2095-
set(test_cmd COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
2095+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
20962096
endif()
20972097

20982098
set(test_name pyunittests${clean_name_with_path})
@@ -3018,7 +3018,7 @@ macro(ROOTTEST_SETUP_MACROTEST)
30183018
# Add python script to CTest.
30193019
elseif(ARG_MACRO MATCHES "[.]py")
30203020
get_filename_component(realfp ${ARG_MACRO} REALPATH)
3021-
set(command ${Python3_EXECUTABLE} ${realfp} ${PYROOT_EXTRAFLAGS})
3021+
set(command ${Python3_EXECUTABLE_DEV} ${realfp} ${PYROOT_EXTRAFLAGS})
30223022

30233023
elseif(DEFINED ARG_MACRO)
30243024
set(command ${root_cmd} ${ARG_MACRO})
@@ -3054,7 +3054,7 @@ macro(ROOTTEST_SETUP_EXECTEST)
30543054

30553055
if(MSVC)
30563056
if(${realexec} MATCHES "[.]py" AND NOT ${realexec} MATCHES "[.]exe")
3057-
set(realexec ${Python3_EXECUTABLE} ${realexec})
3057+
set(realexec ${Python3_EXECUTABLE_DEV} ${realexec})
30583058
else()
30593059
set(realexec ${realexec})
30603060
endif()

cmake/modules/SearchInstalledSoftware.cmake

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

402+
# The invocation of the Python 3 executable that should be used for testing:
403+
set(Python3_EXECUTABLE_DEV ${Python3_EXECUTABLE} -X dev -W error)
404+
402405
#---Check for OpenGL installation-------------------------------------------------------
403406
# OpenGL is required by various graf3d features that are enabled with opengl=ON,
404407
# 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} ${ROOT_BINDIR})
14+
set(PY_TOOLS_PREFIX ${Python3_EXECUTABLE_DEV} ${ROOT_BINDIR})
1515
set(TOOLS_PREFIX ${ROOT_BINDIR})
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
@@ -684,7 +684,7 @@ if(geom)
684684
endif()
685685
# define Python GNN parsing tutorial needed to run before
686686
if (ROOT_SONNET_FOUND AND ROOT_GRAPH_NETS_FOUND)
687-
ROOT_ADD_TEST(tutorial-machine_learning-TMVA_SOFIE_GNN_Parser COMMAND ${Python3_EXECUTABLE}
687+
ROOT_ADD_TEST(tutorial-machine_learning-TMVA_SOFIE_GNN_Parser COMMAND ${Python3_EXECUTABLE_DEV}
688688
${CMAKE_CURRENT_SOURCE_DIR}/machine_learning/TMVA_SOFIE_GNN_Parser.py
689689
PASSRC 0 FAILREGEX "Error in" ": error:" LABELS tutorial ENVIRONMENT ${TUTORIAL_ENV})
690690
set (machine_learning-TMVA_SOFIE_GNN_Application-depends tutorial-machine_learning-TMVA_SOFIE_GNN_Parser)
@@ -1035,7 +1035,7 @@ if(pyroot)
10351035
endif()
10361036

10371037
ROOT_ADD_TEST(${tutorial_name}
1038-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${t}
1038+
COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/${t}
10391039
PASSRC ${rc} FAILREGEX "Error in" ": error:" "segmentation violation"
10401040
LABELS ${labels}
10411041
DEPENDS ${tutorial_dependency}

0 commit comments

Comments
 (0)