tests: Switch from PYTHON_EXECUTABLE to PYTHON_DEFAULT_EXECUTABLE

The DetectPython cmake script now outputs a default python executable.
Updated other cmake scripts to use this concept.  Used default where
python2/3 will work, use explicit PYTHON2/3_EXECUTABLE where an
explicit version is needed.  Also, fail if python is required and NO
version of python was found.

Signed-off-by: Noel Eck <noel.eck@intel.com>
This commit is contained in:
Noel Eck 2016-10-05 17:08:42 -07:00
parent edd8df4c50
commit c6610bdf46
3 changed files with 59 additions and 37 deletions

View File

@ -54,11 +54,23 @@ if (BUILDSWIGPYTHON OR BUILDSWIGNODE OR BUILDSWIGJAVA)
include (${SWIG_USE_FILE}) include (${SWIG_USE_FILE})
endif () endif ()
# Python is required for swig generated python and for UPM tests # Python is required for swig generated python and for UPM tests.
# UPM build can generated modules for both python2 AND python3 # The UPM build can generated modules for both python2 AND python3
# with the corresponding PYTHONLIBS. Currently, BUILDTESTS has a
# hard dependency on the PYTHON2INTERP.
# OpenCV python detect will attempt to find python2/3 # OpenCV python detect will attempt to find python2/3
if (BUILDSWIGPYTHON OR BUILDTESTS) if (BUILDSWIGPYTHON OR BUILDTESTS)
include (cmake/modules/OpenCVDetectPython.cmake) include (cmake/modules/OpenCVDetectPython.cmake)
# Fail if building tests but no python interpreter was found
if (BUILDTESTS AND NOT PYTHON2INTERP_FOUND)
message(FATAL_ERROR "BUILDTESTS=ON requires the python2 interpreter")
endif (BUILDTESTS AND NOT PYTHON2INTERP_FOUND)
# Fail if no LIBS were found
if (NOT PYTHON2LIBS_FOUND AND NOT PYTHON3LIBS_FOUND)
message(FATAL_ERROR "At least one python lib is required")
endif (NOT PYTHON2LIBS_FOUND AND NOT PYTHON3LIBS_FOUND)
endif (BUILDSWIGPYTHON OR BUILDTESTS) endif (BUILDSWIGPYTHON OR BUILDTESTS)
# Which versions of python were found? # Which versions of python were found?

View File

@ -442,7 +442,7 @@ endmacro(upm_module_init)
if (BUILDDOC AND BUILDSWIGPYTHON) if (BUILDDOC AND BUILDSWIGPYTHON)
# doxy2swig the doxygen output # doxy2swig the doxygen output
add_custom_target (pyupm_doxy2swig ALL add_custom_target (pyupm_doxy2swig ALL
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py COMMAND ${PYTHON2_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doxy2swig.py
${CMAKE_BINARY_DIR}/xml/index.xml ${CMAKE_BINARY_DIR}/xml/index.xml
${CMAKE_CURRENT_BINARY_DIR}/pyupm_doxy2swig.i ${CMAKE_CURRENT_BINARY_DIR}/pyupm_doxy2swig.i
DEPENDS doc) DEPENDS doc)

View File

@ -1,55 +1,65 @@
add_test (NAME check_consistency COMMAND ${PYTHON_EXECUTABLE} # Add some general tests (which use python2)...
if (PYTHON_DEFAULT_AVAILABLE)
# Consistency check
add_test (NAME check_consistency COMMAND ${PYTHON_DEFAULT_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_consistency.py ${CMAKE_CURRENT_SOURCE_DIR}/check_consistency.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
# Check file encodings in src tree # Check file encodings in src tree
if (PYTHON2INTERP_FOUND) add_test (NAME check_file_encoding COMMAND ${PYTHON_DEFAULT_EXECUTABLE}
add_test (NAME check_file_encoding COMMAND ${PYTHON_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_file_encoding.py ${CMAKE_CURRENT_SOURCE_DIR}/check_file_encoding.py
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src)
endif (PYTHON2INTERP_FOUND) endif (PYTHON_DEFAULT_AVAILABLE)
if (BUILDSWIGJAVA) # Add some java tests
add_test (NAME check_autoloadlibrary COMMAND ${PYTHON_EXECUTABLE} if (BUILDSWIGJAVA AND PYTHON_DEFAULT_AVAILABLE)
add_test (NAME check_autoloadlibrary COMMAND ${PYTHON_DEFAULT_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_autoloadlibrary.py ${CMAKE_CURRENT_SOURCE_DIR}/check_autoloadlibrary.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_test (NAME check_examplenames_java COMMAND ${PYTHON_EXECUTABLE} add_test (NAME check_examplenames_java COMMAND ${PYTHON_DEFAULT_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_examplenames.py java ${CMAKE_CURRENT_SOURCE_DIR}/check_examplenames.py java
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_test (NAME check_clean COMMAND ${PYTHON_EXECUTABLE} add_test (NAME check_clean COMMAND ${PYTHON_DEFAULT_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_clean.py ${CMAKE_CURRENT_SOURCE_DIR}/check_clean.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif () endif (BUILDSWIGJAVA AND PYTHON_DEFAULT_AVAILABLE)
if (BUILDSWIGNODE) # Add a node test
add_test (NAME check_examplenames_js COMMAND ${PYTHON_EXECUTABLE} if (BUILDSWIGNODE AND PYTHON_DEFAULT_AVAILABLE)
add_test (NAME check_examplenames_js COMMAND ${PYTHON_DEFAULT_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_examplenames.py js ${CMAKE_CURRENT_SOURCE_DIR}/check_examplenames.py js
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif (BUILDSWIGNODE) endif (BUILDSWIGNODE AND PYTHON_DEFAULT_AVAILABLE)
if (BUILDSWIGPYTHON) # Add a python test
add_test (NAME check_examplenames_python COMMAND ${PYTHON_EXECUTABLE} if (BUILDSWIGPYTHON AND PYTHON_DEFAULT_AVAILABLE)
# Check python examples against cxx examples
add_test (NAME check_examplenames_python COMMAND ${PYTHON_DEFAULT_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_examplenames.py python ${CMAKE_CURRENT_SOURCE_DIR}/check_examplenames.py python
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif (BUILDSWIGPYTHON AND PYTHON_DEFAULT_AVAILABLE)
if (PYTHON2INTERP_FOUND) # Add some python2 tests
if (BUILDSWIGPYTHON AND PYTHON2INTERP_FOUND)
# Test load python2 modules
add_test (NAME check_load_modules_python2 COMMAND ${PYTHON2_EXECUTABLE} add_test (NAME check_load_modules_python2 COMMAND ${PYTHON2_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_pythonload.py ${CMAKE_CURRENT_SOURCE_DIR}/check_pythonload.py
${CMAKE_BINARY_DIR}/src/*/python${PYTHON2_VERSION_MAJOR}.${PYTHON2_VERSION_MINOR}/*.py ${CMAKE_BINARY_DIR}/src/*/python${PYTHON2_VERSION_MAJOR}.${PYTHON2_VERSION_MINOR}/*.py
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src/) WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src/)
# Test load examples w/python2
add_test (NAME check_load_examples_python2 COMMAND ${PYTHON2_EXECUTABLE} add_test (NAME check_load_examples_python2 COMMAND ${PYTHON2_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_pythonload.py ${CMAKE_CURRENT_SOURCE_DIR}/check_pythonload.py
${CMAKE_SOURCE_DIR}/examples/python/*.py ${CMAKE_SOURCE_DIR}/examples/python/*.py
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src/) WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src/)
endif (PYTHON2INTERP_FOUND) endif (BUILDSWIGPYTHON AND PYTHON2INTERP_FOUND)
if (PYTHON3INTERP_FOUND) # Add a python3 test
if (BUILDSWIGPYTHON AND PYTHON3INTERP_FOUND)
add_test (NAME check_load_modules_python3 COMMAND ${PYTHON3_EXECUTABLE} add_test (NAME check_load_modules_python3 COMMAND ${PYTHON3_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/check_pythonload.py ${CMAKE_CURRENT_SOURCE_DIR}/check_pythonload.py
${CMAKE_BINARY_DIR}/src/*/python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR}/*.py ${CMAKE_BINARY_DIR}/src/*/python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR}/*.py
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src/) WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src/)
endif (PYTHON3INTERP_FOUND) endif (BUILDSWIGPYTHON AND PYTHON3INTERP_FOUND)
endif (BUILDSWIGPYTHON)