Skip to content

Commit de3e2e9

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 581896c commit de3e2e9

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

20072007
string(REGEX REPLACE "[_]" "-" good_name "${name}")
20082008
ROOT_ADD_TEST(pyunittests-${good_name}
2009-
COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
2009+
COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
20102010
ENVIRONMENT PYTHONPATH=${pythonpaths_native})
20112011
endfunction()
20122012

@@ -2066,9 +2066,9 @@ function(ROOT_ADD_PYUNITTEST name file)
20662066
string(REPLACE "-test-" "-" clean_name_with_path ${name_with_path})
20672067

20682068
if(ARG_GENERIC)
2069-
set(test_cmd COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
2069+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
20702070
else()
2071-
set(test_cmd COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
2071+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
20722072
endif()
20732073

20742074
set(test_name pyunittests${clean_name_with_path})
@@ -2977,7 +2977,7 @@ macro(ROOTTEST_SETUP_MACROTEST)
29772977
# Add python script to CTest.
29782978
elseif(ARG_MACRO MATCHES "[.]py")
29792979
get_filename_component(realfp ${ARG_MACRO} REALPATH)
2980-
set(command ${Python3_EXECUTABLE} ${realfp} ${PYROOT_EXTRAFLAGS})
2980+
set(command ${Python3_EXECUTABLE_DEV} ${realfp} ${PYROOT_EXTRAFLAGS})
29812981

29822982
elseif(DEFINED ARG_MACRO)
29832983
set(command ${root_cmd} ${ARG_MACRO})
@@ -3013,7 +3013,7 @@ macro(ROOTTEST_SETUP_EXECTEST)
30133013

30143014
if(MSVC)
30153015
if(${realexec} MATCHES "[.]py" AND NOT ${realexec} MATCHES "[.]exe")
3016-
set(realexec ${Python3_EXECUTABLE} ${realexec})
3016+
set(realexec ${Python3_EXECUTABLE_DEV} ${realexec})
30173017
else()
30183018
set(realexec ${realexec})
30193019
endif()

cmake/modules/SearchInstalledSoftware.cmake

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

612+
# The invocation of the Python 3 executable that should be used for testing:
613+
set(Python3_EXECUTABLE_DEV ${Python3_EXECUTABLE} -X dev -W error)
614+
612615
#---Check for OpenGL installation-------------------------------------------------------
613616
# OpenGL is required by various graf3d features that are enabled with opengl=ON,
614617
# 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)