Skip to content

Commit 810c4f8

Browse files
committed
[CMake] Don't set the PATH variable in any test environment
If things are set up correctly with CMake targets and using `gROOT->GetBinDir()` at runtime to find the ROOT executables corresponding to the current ROOT build, setting `PATH` should never be needed. This stress tests a bit more ROOTs capability of being independend of environment variables, and also makes the CMake code more consistent between platforms.
1 parent 2c7ffbd commit 810c4f8

2 files changed

Lines changed: 24 additions & 66 deletions

File tree

cmake/modules/RootMacros.cmake

Lines changed: 22 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1966,18 +1966,14 @@ endfunction()
19661966
# ROOT_ADD_PYUNITTESTS( <name> )
19671967
#----------------------------------------------------------------------------
19681968
function(ROOT_ADD_PYUNITTESTS name)
1969-
if(MSVC)
1970-
set(ROOT_ENV
1971-
PYTHONPATH=${ROOTSYS}/bin;$ENV{PYTHONPATH})
1972-
else()
1973-
set(ROOT_ENV
1974-
PATH=${ROOTSYS}/bin:$ENV{PATH}
1975-
PYTHONPATH=${ROOTSYS}/lib:$ENV{PYTHONPATH})
1976-
endif()
1969+
1970+
set(pythonpaths ${localruntimedir} $ENV{PYTHONPATH})
1971+
cmake_path(CONVERT "${pythonpaths}" TO_NATIVE_PATH_LIST pythonpaths_native)
1972+
19771973
string(REGEX REPLACE "[_]" "-" good_name "${name}")
19781974
ROOT_ADD_TEST(pyunittests-${good_name}
19791975
COMMAND ${Python3_EXECUTABLE} -B -m unittest discover -s ${CMAKE_CURRENT_SOURCE_DIR} -p "*.py" -v
1980-
ENVIRONMENT ${ROOT_ENV})
1976+
ENVIRONMENT PYTHONPATH=${pythonpaths_native})
19811977
endfunction()
19821978

19831979
#----------------------------------------------------------------------------
@@ -1997,14 +1993,10 @@ function(ROOT_ADD_PYUNITTEST name file)
19971993
"COPY_TO_BUILDDIR;ENVIRONMENT;PYTHON_DEPS;FIXTURES_SETUP;FIXTURES_CLEANUP;FIXTURES_REQUIRED;PRECMD;POSTCMD"
19981994
${ARGN}
19991995
)
2000-
if(MSVC)
2001-
set(ROOT_ENV
2002-
PYTHONPATH=${ROOTSYS}/bin;$ENV{PYTHONPATH})
2003-
else()
2004-
set(ROOT_ENV
2005-
PATH=${ROOTSYS}/bin:$ENV{PATH}
2006-
PYTHONPATH=${ROOTSYS}/lib:$ENV{PYTHONPATH})
2007-
endif()
1996+
1997+
set(pythonpaths ${localruntimedir} $ENV{PYTHONPATH})
1998+
cmake_path(CONVERT "${pythonpaths}" TO_NATIVE_PATH_LIST pythonpaths_native)
1999+
20082000
string(REGEX REPLACE "[_]" "-" good_name "${name}")
20092001
get_filename_component(file_name ${file} NAME)
20102002
get_filename_component(file_dir ${file} DIRECTORY)
@@ -2048,7 +2040,7 @@ function(ROOT_ADD_PYUNITTEST name file)
20482040
set(test_name pyunittests${clean_name_with_path})
20492041
ROOT_ADD_TEST(${test_name}
20502042
${test_cmd}
2051-
ENVIRONMENT ${ROOT_ENV} ${ARG_ENVIRONMENT}
2043+
ENVIRONMENT PYTHONPATH=${pythonpaths_native} ${ARG_ENVIRONMENT}
20522044
LABELS ${labels}
20532045
${copy_to_builddir}
20542046
${will_fail}
@@ -3237,22 +3229,13 @@ function(ROOTTEST_ADD_TEST testname)
32373229
set(run_serial RUN_SERIAL ${ARG_RUN_SERIAL})
32383230
endif()
32393231

3240-
if(MSVC)
3241-
set(environment ENVIRONMENT
3242-
${ROOTTEST_ENV_EXTRA}
3243-
${ARG_ENVIRONMENT}
3244-
PYTHONPATH=${ROOTTEST_ENV_PYTHONPATH})
3245-
else()
3246-
string(REPLACE ";" ":" _path "${ROOTTEST_ENV_PATH}")
3247-
string(REPLACE ";" ":" _pythonpath "${ROOTTEST_ENV_PYTHONPATH}")
3232+
set(pythonpaths ${localruntimedir} $ENV{PYTHONPATH})
3233+
cmake_path(CONVERT "${pythonpaths}" TO_NATIVE_PATH_LIST pythonpaths_native)
32483234

3249-
3250-
set(environment ENVIRONMENT
3251-
${ROOTTEST_ENV_EXTRA}
3252-
${ARG_ENVIRONMENT}
3253-
PATH=${_path}:$ENV{PATH}
3254-
PYTHONPATH=${_pythonpath}:$ENV{PYTHONPATH})
3255-
endif()
3235+
set(environment ENVIRONMENT
3236+
${ROOTTEST_ENV_EXTRA}
3237+
${ARG_ENVIRONMENT}
3238+
PYTHONPATH=${pythonpaths_native})
32563239

32573240
if(ARG_WORKING_DIR)
32583241
get_filename_component(test_working_dir ${ARG_WORKING_DIR} ABSOLUTE)
@@ -3490,20 +3473,13 @@ function(ROOTTEST_ADD_UNITTEST_DIR)
34903473
endforeach()
34913474
endif(ARG_DEPENDS)
34923475

3493-
if(MSVC)
3494-
set(environment ENVIRONMENT
3495-
PYTHONPATH=${ROOTTEST_ENV_PYTHONPATH})
3496-
else()
3497-
string(REPLACE ";" ":" _path "${ROOTTEST_ENV_PATH}")
3498-
string(REPLACE ";" ":" _pythonpath "${ROOTTEST_ENV_PYTHONPATH}")
3476+
set(pythonpaths ${localruntimedir} $ENV{PYTHONPATH})
3477+
cmake_path(CONVERT "${pythonpaths}" TO_NATIVE_PATH_LIST pythonpaths_native)
34993478

3500-
3501-
set(environment ENVIRONMENT
3502-
${ROOTTEST_ENV_EXTRA}
3503-
${ARG_ENVIRONMENT}
3504-
PATH=${_path}:$ENV{PATH}
3505-
PYTHONPATH=${_pythonpath}:$ENV{PYTHONPATH})
3506-
endif()
3479+
set(environment ENVIRONMENT
3480+
${ROOTTEST_ENV_EXTRA}
3481+
${ARG_ENVIRONMENT}
3482+
PYTHONPATH=${pythonpaths_native})
35073483

35083484
ROOT_ADD_TEST(${fulltestname} COMMAND ${binary}
35093485
${environment}

roottest/CMakeLists.txt

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -89,26 +89,8 @@ else()
8989
endif()
9090

9191
# Setup environment.
92-
set(ROOTTEST_ENV_PATH ${ROOT_BINDIR})
93-
if(MSVC)
94-
set(ROOTTEST_ENV_PYTHONPATH ${ROOT_BINDIR})
95-
else()
96-
set(ROOTTEST_ENV_PYTHONPATH ${ROOT_LIBRARY_DIR})
97-
endif()
98-
set(ROOTTEST_ENV_EXTRA)
99-
100-
if(MSVC)
101-
set(ROOTTEST_ENVIRONMENT
102-
PYTHONPATH=${ROOTTEST_ENV_PYTHONPATH})
103-
else()
104-
# `PYTHONPATH=...:` (trailing `:`) kills roottest/python/stl/PyROOT_stltests.py.
105-
string(REGEX REPLACE ":$" "" TESTPYTHONPATH "${ROOTTEST_ENV_PYTHONPATH}:$ENV{PYTHONPATH}")
106-
set(ROOTTEST_ENVIRONMENT
107-
PATH=${ROOTTEST_ENV_PATH}:$ENV{PATH}
108-
PYTHONPATH=${TESTPYTHONPATH})
109-
if (gnuinstall)
110-
set(ROOTTEST_ENVIRONMENT ${ROOTTEST_ENVIRONMENT} ROOTIGNOREPREFIX=1)
111-
endif()
92+
if (gnuinstall)
93+
set(ROOTTEST_ENVIRONMENT ROOTIGNOREPREFIX=1)
11294
endif()
11395

11496
# Set some variables that customizes the behaviour of the ROOT macros

0 commit comments

Comments
 (0)