diff --git a/cmake/dotnet.cmake b/cmake/dotnet.cmake index f42f1590c4..09954d71ed 100644 --- a/cmake/dotnet.cmake +++ b/cmake/dotnet.cmake @@ -179,71 +179,6 @@ elseif(UNIX) set_target_properties(google-ortools-native PROPERTIES INSTALL_RPATH "$ORIGIN") endif() -################# -## .Net Test ## -################# -if(BUILD_TESTING) - # add_dotnet_test() - # CMake function to generate and build dotnet test. - # Parameters: - # the dotnet filename - # e.g.: - # add_dotnet_test(FooTests.cs) - function(add_dotnet_test FILE_NAME) - message(STATUS "Configuring test ${FILE_NAME} ...") - get_filename_component(TEST_NAME ${FILE_NAME} NAME_WE) - get_filename_component(WRAPPER_DIR ${FILE_NAME} DIRECTORY) - get_filename_component(COMPONENT_DIR ${WRAPPER_DIR} DIRECTORY) - get_filename_component(COMPONENT_NAME ${COMPONENT_DIR} NAME) - - set(DOTNET_TEST_DIR ${PROJECT_BINARY_DIR}/dotnet/${COMPONENT_NAME}/${TEST_NAME}) - message(STATUS "build path: ${DOTNET_TEST_DIR}") - - configure_file( - ${PROJECT_SOURCE_DIR}/ortools/dotnet/Test.csproj.in - ${DOTNET_TEST_DIR}/${TEST_NAME}.csproj - @ONLY) - - add_custom_command( - OUTPUT ${DOTNET_TEST_DIR}/${TEST_NAME}.cs - COMMAND ${CMAKE_COMMAND} -E make_directory ${DOTNET_TEST_DIR} - COMMAND ${CMAKE_COMMAND} -E copy - ${FILE_NAME} - ${DOTNET_TEST_DIR}/ - MAIN_DEPENDENCY ${FILE_NAME} - VERBATIM - WORKING_DIRECTORY ${DOTNET_TEST_DIR}) - - add_custom_command( - OUTPUT ${DOTNET_TEST_DIR}/timestamp - COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME - ${DOTNET_EXECUTABLE} build --nologo -c Release ${TEST_NAME}.csproj - COMMAND ${CMAKE_COMMAND} -E touch ${DOTNET_TEST_DIR}/timestamp - DEPENDS - ${DOTNET_TEST_DIR}/${TEST_NAME}.csproj - ${DOTNET_TEST_DIR}/${TEST_NAME}.cs - dotnet_package - BYPRODUCTS - ${DOTNET_TEST_DIR}/bin - ${DOTNET_TEST_DIR}/obj - VERBATIM - COMMENT "Compiling .Net ${COMPONENT_NAME}/${TEST_NAME}.cs (${DOTNET_TEST_DIR}/timestamp)" - WORKING_DIRECTORY ${DOTNET_TEST_DIR}) - - add_custom_target(dotnet_${COMPONENT_NAME}_${TEST_NAME} ALL - DEPENDS - ${DOTNET_TEST_DIR}/timestamp - WORKING_DIRECTORY ${DOTNET_TEST_DIR}) - - add_test( - NAME dotnet_${COMPONENT_NAME}_${TEST_NAME} - COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME - ${DOTNET_EXECUTABLE} test --nologo -c Release ${TEST_NAME}.csproj - WORKING_DIRECTORY ${DOTNET_TEST_DIR}) - message(STATUS "Configuring test ${FILE_NAME} done") - endfunction() -endif() - ####################### ## DOTNET WRAPPERS ## ####################### @@ -415,6 +350,71 @@ if(BUILD_DOTNET_DOC) endif() endif() +################# +## .Net Test ## +################# +if(BUILD_TESTING) + # add_dotnet_test() + # CMake function to generate and build dotnet test. + # Parameters: + # the dotnet filename + # e.g.: + # add_dotnet_test(FooTests.cs) + function(add_dotnet_test FILE_NAME) + message(STATUS "Configuring test ${FILE_NAME} ...") + get_filename_component(TEST_NAME ${FILE_NAME} NAME_WE) + get_filename_component(WRAPPER_DIR ${FILE_NAME} DIRECTORY) + get_filename_component(COMPONENT_DIR ${WRAPPER_DIR} DIRECTORY) + get_filename_component(COMPONENT_NAME ${COMPONENT_DIR} NAME) + + set(DOTNET_TEST_DIR ${PROJECT_BINARY_DIR}/dotnet/${COMPONENT_NAME}/${TEST_NAME}) + message(STATUS "build path: ${DOTNET_TEST_DIR}") + + configure_file( + ${PROJECT_SOURCE_DIR}/ortools/dotnet/Test.csproj.in + ${DOTNET_TEST_DIR}/${TEST_NAME}.csproj + @ONLY) + + add_custom_command( + OUTPUT ${DOTNET_TEST_DIR}/${TEST_NAME}.cs + COMMAND ${CMAKE_COMMAND} -E make_directory ${DOTNET_TEST_DIR} + COMMAND ${CMAKE_COMMAND} -E copy + ${FILE_NAME} + ${DOTNET_TEST_DIR}/ + MAIN_DEPENDENCY ${FILE_NAME} + VERBATIM + WORKING_DIRECTORY ${DOTNET_TEST_DIR}) + + add_custom_command( + OUTPUT ${DOTNET_TEST_DIR}/timestamp + COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME + ${DOTNET_EXECUTABLE} build --nologo -c Release ${TEST_NAME}.csproj + COMMAND ${CMAKE_COMMAND} -E touch ${DOTNET_TEST_DIR}/timestamp + DEPENDS + ${DOTNET_TEST_DIR}/${TEST_NAME}.csproj + ${DOTNET_TEST_DIR}/${TEST_NAME}.cs + dotnet_package + BYPRODUCTS + ${DOTNET_TEST_DIR}/bin + ${DOTNET_TEST_DIR}/obj + VERBATIM + COMMENT "Compiling .Net ${COMPONENT_NAME}/${TEST_NAME}.cs (${DOTNET_TEST_DIR}/timestamp)" + WORKING_DIRECTORY ${DOTNET_TEST_DIR}) + + add_custom_target(dotnet_${COMPONENT_NAME}_${TEST_NAME} ALL + DEPENDS + ${DOTNET_TEST_DIR}/timestamp + WORKING_DIRECTORY ${DOTNET_TEST_DIR}) + + add_test( + NAME dotnet_${COMPONENT_NAME}_${TEST_NAME} + COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME + ${DOTNET_EXECUTABLE} test --nologo -c Release ${TEST_NAME}.csproj + WORKING_DIRECTORY ${DOTNET_TEST_DIR}) + message(STATUS "Configuring test ${FILE_NAME} done") + endfunction() +endif() + ################### ## .Net Sample ## ################### diff --git a/cmake/java.cmake b/cmake/java.cmake index 3995e56c2f..ef686903d0 100644 --- a/cmake/java.cmake +++ b/cmake/java.cmake @@ -156,69 +156,6 @@ set(JAVA_SRC_PATH src/main/java/${JAVA_DOMAIN_EXTENSION}/${JAVA_DOMAIN_NAME}/${J set(JAVA_TEST_PATH src/test/java/${JAVA_DOMAIN_EXTENSION}/${JAVA_DOMAIN_NAME}/${JAVA_ARTIFACT}) set(JAVA_RESSOURCES_PATH src/main/resources) -################# -## Java Test ## -################# -if(BUILD_TESTING) - # add_java_test() - # CMake function to generate and build java test. - # Parameters: - # the java filename - # e.g.: - # add_java_test(FooTests.java) - function(add_java_test FILE_NAME) - message(STATUS "Configuring test ${FILE_NAME}: ...") - get_filename_component(TEST_NAME ${FILE_NAME} NAME_WE) - get_filename_component(WRAPPER_DIR ${FILE_NAME} DIRECTORY) - get_filename_component(COMPONENT_DIR ${WRAPPER_DIR} DIRECTORY) - get_filename_component(COMPONENT_NAME ${COMPONENT_DIR} NAME) - - set(JAVA_TEST_DIR ${PROJECT_BINARY_DIR}/java/${COMPONENT_NAME}/${TEST_NAME}) - message(STATUS "build path: ${JAVA_TEST_DIR}") - - add_custom_command( - OUTPUT ${JAVA_TEST_DIR}/${JAVA_TEST_PATH}/${TEST_NAME}.java - COMMAND ${CMAKE_COMMAND} -E make_directory - ${JAVA_TEST_DIR}/${JAVA_TEST_PATH} - COMMAND ${CMAKE_COMMAND} -E copy - ${FILE_NAME} - ${JAVA_TEST_DIR}/${JAVA_TEST_PATH}/ - MAIN_DEPENDENCY ${FILE_NAME} - VERBATIM - ) - - string(TOLOWER ${TEST_NAME} JAVA_TEST_PROJECT) - configure_file( - ${PROJECT_SOURCE_DIR}/ortools/java/pom-test.xml.in - ${JAVA_TEST_DIR}/pom.xml - @ONLY) - - add_custom_command( - OUTPUT ${JAVA_TEST_DIR}/timestamp - COMMAND ${MAVEN_EXECUTABLE} compile -B - COMMAND ${CMAKE_COMMAND} -E touch ${JAVA_TEST_DIR}/timestamp - DEPENDS - ${JAVA_TEST_DIR}/pom.xml - ${JAVA_TEST_DIR}/${JAVA_TEST_PATH}/${TEST_NAME}.java - java_package - BYPRODUCTS - ${JAVA_TEST_DIR}/target - COMMENT "Compiling Java ${COMPONENT_NAME}/${TEST_NAME}.java (${JAVA_TEST_DIR}/timestamp)" - WORKING_DIRECTORY ${JAVA_TEST_DIR}) - - add_custom_target(java_${COMPONENT_NAME}_${TEST_NAME} ALL - DEPENDS - ${JAVA_TEST_DIR}/timestamp - WORKING_DIRECTORY ${JAVA_TEST_DIR}) - - add_test( - NAME java_${COMPONENT_NAME}_${TEST_NAME} - COMMAND ${MAVEN_EXECUTABLE} test - WORKING_DIRECTORY ${JAVA_TEST_DIR}) - message(STATUS "Configuring test ${FILE_NAME}: ...DONE") - endfunction() -endif() - ##################### ## JAVA WRAPPERS ## ##################### @@ -380,6 +317,69 @@ if(BUILD_JAVA_DOC) endif() endif() +################# +## Java Test ## +################# +if(BUILD_TESTING) + # add_java_test() + # CMake function to generate and build java test. + # Parameters: + # the java filename + # e.g.: + # add_java_test(FooTests.java) + function(add_java_test FILE_NAME) + message(STATUS "Configuring test ${FILE_NAME}: ...") + get_filename_component(TEST_NAME ${FILE_NAME} NAME_WE) + get_filename_component(WRAPPER_DIR ${FILE_NAME} DIRECTORY) + get_filename_component(COMPONENT_DIR ${WRAPPER_DIR} DIRECTORY) + get_filename_component(COMPONENT_NAME ${COMPONENT_DIR} NAME) + + set(JAVA_TEST_DIR ${PROJECT_BINARY_DIR}/java/${COMPONENT_NAME}/${TEST_NAME}) + message(STATUS "build path: ${JAVA_TEST_DIR}") + + add_custom_command( + OUTPUT ${JAVA_TEST_DIR}/${JAVA_TEST_PATH}/${TEST_NAME}.java + COMMAND ${CMAKE_COMMAND} -E make_directory + ${JAVA_TEST_DIR}/${JAVA_TEST_PATH} + COMMAND ${CMAKE_COMMAND} -E copy + ${FILE_NAME} + ${JAVA_TEST_DIR}/${JAVA_TEST_PATH}/ + MAIN_DEPENDENCY ${FILE_NAME} + VERBATIM + ) + + string(TOLOWER ${TEST_NAME} JAVA_TEST_PROJECT) + configure_file( + ${PROJECT_SOURCE_DIR}/ortools/java/pom-test.xml.in + ${JAVA_TEST_DIR}/pom.xml + @ONLY) + + add_custom_command( + OUTPUT ${JAVA_TEST_DIR}/timestamp + COMMAND ${MAVEN_EXECUTABLE} compile -B + COMMAND ${CMAKE_COMMAND} -E touch ${JAVA_TEST_DIR}/timestamp + DEPENDS + ${JAVA_TEST_DIR}/pom.xml + ${JAVA_TEST_DIR}/${JAVA_TEST_PATH}/${TEST_NAME}.java + java_package + BYPRODUCTS + ${JAVA_TEST_DIR}/target + COMMENT "Compiling Java ${COMPONENT_NAME}/${TEST_NAME}.java (${JAVA_TEST_DIR}/timestamp)" + WORKING_DIRECTORY ${JAVA_TEST_DIR}) + + add_custom_target(java_${COMPONENT_NAME}_${TEST_NAME} ALL + DEPENDS + ${JAVA_TEST_DIR}/timestamp + WORKING_DIRECTORY ${JAVA_TEST_DIR}) + + add_test( + NAME java_${COMPONENT_NAME}_${TEST_NAME} + COMMAND ${MAVEN_EXECUTABLE} test + WORKING_DIRECTORY ${JAVA_TEST_DIR}) + message(STATUS "Configuring test ${FILE_NAME}: ...DONE") + endfunction() +endif() + ################### ## Java Sample ## ################### diff --git a/cmake/python.cmake b/cmake/python.cmake index d35407d066..d095be9a40 100644 --- a/cmake/python.cmake +++ b/cmake/python.cmake @@ -176,46 +176,6 @@ add_custom_target(Py${PROJECT_NAME}_proto ${PROTO_PYS} ${PROJECT_NAMESPACE}::ortools) -################### -## Python Test ## -################### -if(BUILD_VENV) - search_python_module(NAME virtualenv PACKAGE virtualenv) - # venv not working on github runners - # search_python_internal_module(NAME venv) - # Testing using a vitual environment - set(VENV_EXECUTABLE ${Python3_EXECUTABLE} -m virtualenv) - #set(VENV_EXECUTABLE ${Python3_EXECUTABLE} -m venv) - set(VENV_DIR ${CMAKE_CURRENT_BINARY_DIR}/python/venv) - if(WIN32) - set(VENV_Python3_EXECUTABLE ${VENV_DIR}/Scripts/python.exe) - else() - set(VENV_Python3_EXECUTABLE ${VENV_DIR}/bin/python) - endif() -endif() - -if(BUILD_TESTING) - # add_python_test() - # CMake function to generate and build python test. - # Parameters: - # the python filename - # e.g.: - # add_python_test(foo.py) - function(add_python_test FILE_NAME) - message(STATUS "Configuring test ${FILE_NAME} ...") - get_filename_component(TEST_NAME ${FILE_NAME} NAME_WE) - get_filename_component(WRAPPER_DIR ${FILE_NAME} DIRECTORY) - get_filename_component(COMPONENT_DIR ${WRAPPER_DIR} DIRECTORY) - get_filename_component(COMPONENT_NAME ${COMPONENT_DIR} NAME) - - add_test( - NAME python_${COMPONENT_NAME}_${TEST_NAME} - COMMAND ${VENV_Python3_EXECUTABLE} -m pytest ${FILE_NAME} - WORKING_DIRECTORY ${VENV_DIR}) - message(STATUS "Configuring test ${FILE_NAME} done") - endfunction() -endif() - ####################### ## PYTHON WRAPPERS ## ####################### @@ -369,6 +329,19 @@ configure_file( install(SCRIPT ${PROJECT_BINARY_DIR}/python/python-install.cmake) if(BUILD_VENV) + search_python_module(NAME virtualenv PACKAGE virtualenv) + # venv not working on github runners + # search_python_internal_module(NAME venv) + # Testing using a vitual environment + set(VENV_EXECUTABLE ${Python3_EXECUTABLE} -m virtualenv) + #set(VENV_EXECUTABLE ${Python3_EXECUTABLE} -m venv) + set(VENV_DIR ${CMAKE_CURRENT_BINARY_DIR}/python/venv) + if(WIN32) + set(VENV_Python3_EXECUTABLE ${VENV_DIR}/Scripts/python.exe) + else() + set(VENV_Python3_EXECUTABLE ${VENV_DIR}/bin/python) + endif() + # make a virtualenv to install our python package in it add_custom_command(TARGET python_package POST_BUILD # Clean previous install otherwise pip install may do nothing @@ -425,6 +398,31 @@ if(BUILD_PYTHON_DOC) endif() endif() +################### +## Python Test ## +################### +if(BUILD_TESTING) + # add_python_test() + # CMake function to generate and build python test. + # Parameters: + # the python filename + # e.g.: + # add_python_test(foo.py) + function(add_python_test FILE_NAME) + message(STATUS "Configuring test ${FILE_NAME} ...") + get_filename_component(TEST_NAME ${FILE_NAME} NAME_WE) + get_filename_component(WRAPPER_DIR ${FILE_NAME} DIRECTORY) + get_filename_component(COMPONENT_DIR ${WRAPPER_DIR} DIRECTORY) + get_filename_component(COMPONENT_NAME ${COMPONENT_DIR} NAME) + + add_test( + NAME python_${COMPONENT_NAME}_${TEST_NAME} + COMMAND ${VENV_Python3_EXECUTABLE} -m pytest ${FILE_NAME} + WORKING_DIRECTORY ${VENV_DIR}) + message(STATUS "Configuring test ${FILE_NAME} done") + endfunction() +endif() + ##################### ## Python Sample ## #####################