Skip to content

Commit 2528d80

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 945cb26 commit 2528d80

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

20382038
string(REGEX REPLACE "[_]" "-" good_name "${name}")
20392039
ROOT_ADD_TEST(pyunittests-${good_name}
2040-
COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
2040+
COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
20412041
ENVIRONMENT PYTHONPATH=${pythonpaths_native})
20422042
endfunction()
20432043

@@ -2097,9 +2097,9 @@ function(ROOT_ADD_PYUNITTEST name file)
20972097
string(REPLACE "-test-" "-" clean_name_with_path ${name_with_path})
20982098

20992099
if(ARG_GENERIC)
2100-
set(test_cmd COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
2100+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} ${CMAKE_CURRENT_SOURCE_DIR}/${file_name})
21012101
else()
2102-
set(test_cmd COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
2102+
set(test_cmd COMMAND ${Python3_EXECUTABLE_DEV} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} -p ${file_name} -v)
21032103
endif()
21042104

21052105
set(test_name pyunittests${clean_name_with_path})
@@ -3026,7 +3026,7 @@ macro(ROOTTEST_SETUP_MACROTEST)
30263026
# Add python script to CTest.
30273027
elseif(ARG_MACRO MATCHES "[.]py")
30283028
get_filename_component(realfp ${ARG_MACRO} REALPATH)
3029-
set(command ${Python3_EXECUTABLE} ${realfp} ${PYROOT_EXTRAFLAGS})
3029+
set(command ${Python3_EXECUTABLE_DEV} ${realfp} ${PYROOT_EXTRAFLAGS})
30303030

30313031
elseif(DEFINED ARG_MACRO)
30323032
set(command ${root_cmd} ${ARG_MACRO})
@@ -3062,7 +3062,7 @@ macro(ROOTTEST_SETUP_EXECTEST)
30623062

30633063
if(MSVC)
30643064
if(${realexec} MATCHES "[.]py" AND NOT ${realexec} MATCHES "[.]exe")
3065-
set(realexec ${Python3_EXECUTABLE} ${realexec})
3065+
set(realexec ${Python3_EXECUTABLE_DEV} ${realexec})
30663066
else()
30673067
set(realexec ${realexec})
30683068
endif()

cmake/modules/SearchInstalledSoftware.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,9 @@ if(Python3_Development_FOUND OR Python3_Development.Module_FOUND)
439439
endif()
440440
endif()
441441

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