浏览代码

UseSWIG: Rework tests

Marc Chevrier 7 年之前
父节点
当前提交
438429d6fe

+ 4 - 0
Tests/CMakeLists.txt

@@ -1431,6 +1431,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
     add_subdirectory(FindPython)
     add_subdirectory(FindPython)
   endif()
   endif()
 
 
+  if(CMake_TEST_UseSWIG)
+    add_subdirectory(UseSWIG)
+  endif()
+
   add_subdirectory(FindThreads)
   add_subdirectory(FindThreads)
 
 
   # Matlab module
   # Matlab module

+ 0 - 5
Tests/RunCMake/CMakeLists.txt

@@ -362,11 +362,6 @@ if(CMake_TEST_FindMatlab)
   add_RunCMake_test(FindMatlab)
   add_RunCMake_test(FindMatlab)
 endif()
 endif()
 
 
-# UseSWIG related tests
-if(CMake_TEST_UseSWIG)
-  add_RunCMake_test(UseSWIG)
-endif()
-
 add_executable(pseudo_emulator pseudo_emulator.c)
 add_executable(pseudo_emulator pseudo_emulator.c)
 add_executable(pseudo_emulator_custom_command pseudo_emulator_custom_command.c)
 add_executable(pseudo_emulator_custom_command pseudo_emulator_custom_command.c)
 add_RunCMake_test(CrosscompilingEmulator
 add_RunCMake_test(CrosscompilingEmulator

+ 0 - 9
Tests/RunCMake/UseSWIG/BasicPython.cmake

@@ -1,9 +0,0 @@
-
-set(language "python")
-
-include (BasicConfiguration.cmake)
-
-add_custom_target (RunTest
-  COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:example>"
-  "${Python_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/runme.py"
-  DEPENDS example)

+ 0 - 3
Tests/RunCMake/UseSWIG/CMakeLists.txt

@@ -1,3 +0,0 @@
-cmake_minimum_required(VERSION 3.1)
-project(${RunCMake_TEST} CXX)
-include(${RunCMake_TEST}.cmake)

+ 0 - 9
Tests/RunCMake/UseSWIG/LegacyPython.cmake

@@ -1,9 +0,0 @@
-
-set(language "python")
-
-include (LegacyConfiguration.cmake)
-
-add_custom_target (RunTest
-  COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:${SWIG_MODULE_example_REAL_NAME}>"
-  "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/runme.py"
-  DEPENDS ${SWIG_MODULE_example_REAL_NAME})

+ 0 - 30
Tests/RunCMake/UseSWIG/MultipleModules.cmake

@@ -1,30 +0,0 @@
-
-find_package(SWIG REQUIRED)
-include(${SWIG_USE_FILE})
-
-find_package(PythonLibs REQUIRED)
-find_package(PerlLibs REQUIRED)
-
-unset(CMAKE_SWIG_FLAGS)
-
-set (CMAKE_INCLUDE_CURRENT_DIR ON)
-
-set_property(SOURCE example.i PROPERTY CPLUSPLUS ON)
-set_property(SOURCE example.i PROPERTY COMPILE_OPTIONS -includeall)
-
-set_property(SOURCE example.i PROPERTY GENERATED_INCLUDE_DIRECTORIES ${PYTHON_INCLUDE_PATH})
-
-swig_add_library(example1
-                 LANGUAGE python
-                 SOURCES example.i example.cxx)
-target_link_libraries(example1 PRIVATE ${PYTHON_LIBRARIES})
-
-# re-use sample interface file for another plugin
-set_property(SOURCE example.i PROPERTY GENERATED_INCLUDE_DIRECTORIES ${PERL_INCLUDE_PATH})
-separate_arguments(c_flags UNIX_COMMAND "${PERL_EXTRA_C_FLAGS}")
-set_property(SOURCE example.i PROPERTY GENERATED_COMPILE_OPTIONS ${c_flags})
-
-swig_add_library(example2
-                 LANGUAGE perl
-                 SOURCES example.i example.cxx)
-target_link_libraries(example2 PRIVATE ${PERL_LIBRARY})

+ 0 - 27
Tests/RunCMake/UseSWIG/RunCMakeTest.cmake

@@ -1,27 +0,0 @@
-include(RunCMake)
-
-function(run_SWIG test)
-  cmake_parse_arguments(_SWIG_TEST "" "TARGET" "" ${ARGN})
-  if (_SWIG_TEST_TARGET)
-    list (INSERT _SWIG_TEST_TARGET 0 --target)
-  endif()
-
-  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
-  set(RunCMake_TEST_NO_CLEAN 1)
-  file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
-  file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
-  if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
-    set (RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Release)
-  endif()
-  run_cmake(${test})
-  run_cmake_command(${test}-test ${CMAKE_COMMAND} --build ${RunCMake_TEST_BINARY_DIR} --config Release ${_SWIG_TEST_TARGET})
-endfunction()
-
-run_SWIG(LegacyPython TARGET RunTest)
-run_SWIG(LegacyPerl TARGET RunTest)
-
-run_SWIG(BasicPython TARGET RunTest)
-run_SWIG(BasicPerl TARGET RunTest)
-
-run_SWIG(MultipleModules)
-run_SWIG(MultiplePython)

+ 11 - 6
Tests/RunCMake/UseSWIG/BasicConfiguration.cmake → Tests/UseSWIG/BasicConfiguration.cmake

@@ -52,16 +52,21 @@ unset(CMAKE_SWIG_FLAGS)
 
 
 set (CMAKE_INCLUDE_CURRENT_DIR ON)
 set (CMAKE_INCLUDE_CURRENT_DIR ON)
 
 
-set_property(SOURCE example.i PROPERTY CPLUSPLUS ON)
-set_property(SOURCE example.i PROPERTY COMPILE_OPTIONS -includeall)
+set_property(SOURCE "${CMAKE_CURRENT_LIST_DIR}/example.i" PROPERTY CPLUSPLUS ON)
+set_property(SOURCE "${CMAKE_CURRENT_LIST_DIR}/example.i" PROPERTY COMPILE_OPTIONS -includeall)
 
 
-set_property(SOURCE example.i PROPERTY GENERATED_INCLUDE_DIRECTORIES ${SWIG_LANG_INCLUDE_DIRECTORIES})
-set_property(SOURCE example.i PROPERTY GENERATED_COMPILE_DEFINITIONS ${SWIG_LANG_DEFINITIONS})
-set_property(SOURCE example.i PROPERTY GENERATED_COMPILE_OPTIONS ${SWIG_LANG_OPTIONS})
+set_property(SOURCE "${CMAKE_CURRENT_LIST_DIR}/example.i"
+  PROPERTY GENERATED_INCLUDE_DIRECTORIES ${SWIG_LANG_INCLUDE_DIRECTORIES}
+                                         "${CMAKE_CURRENT_LIST_DIR}")
+set_property(SOURCE "${CMAKE_CURRENT_LIST_DIR}/example.i"
+  PROPERTY GENERATED_COMPILE_DEFINITIONS ${SWIG_LANG_DEFINITIONS})
+set_property(SOURCE "${CMAKE_CURRENT_LIST_DIR}/example.i"
+  PROPERTY GENERATED_COMPILE_OPTIONS ${SWIG_LANG_OPTIONS})
 
 
 
 
 SWIG_ADD_LIBRARY(example
 SWIG_ADD_LIBRARY(example
                  LANGUAGE "${language}"
                  LANGUAGE "${language}"
                  ${SWIG_LANG_TYPE}
                  ${SWIG_LANG_TYPE}
-                 SOURCES example.i example.cxx)
+                 SOURCES "${CMAKE_CURRENT_LIST_DIR}/example.i"
+                         "${CMAKE_CURRENT_LIST_DIR}/example.cxx")
 TARGET_LINK_LIBRARIES(example PRIVATE ${SWIG_LANG_LIBRARIES})
 TARGET_LINK_LIBRARIES(example PRIVATE ${SWIG_LANG_LIBRARIES})

+ 8 - 4
Tests/RunCMake/UseSWIG/BasicPerl.cmake → Tests/UseSWIG/BasicPerl/CMakeLists.txt

@@ -1,7 +1,12 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(TestBasicPerl CXX)
+
+include(CTest)
 
 
 set(language "perl")
 set(language "perl")
 
 
-include (BasicConfiguration.cmake)
+include (../BasicConfiguration.cmake)
 
 
 if (WIN32)
 if (WIN32)
   file (TO_CMAKE_PATH "$ENV{PATH}" perl_path)
   file (TO_CMAKE_PATH "$ENV{PATH}" perl_path)
@@ -11,8 +16,7 @@ else()
   set (perl_env "LD_LIBRARY_PATH=$<TARGET_FILE_DIR:example>")
   set (perl_env "LD_LIBRARY_PATH=$<TARGET_FILE_DIR:example>")
 endif()
 endif()
 
 
-add_custom_target (RunTest
+add_test (NAME BasicPerl
   COMMAND "${CMAKE_COMMAND}" -E env "${perl_env}"
   COMMAND "${CMAKE_COMMAND}" -E env "${perl_env}"
   "${PERL_EXECUTABLE}" "-I$<TARGET_FILE_DIR:example>"
   "${PERL_EXECUTABLE}" "-I$<TARGET_FILE_DIR:example>"
-  "${CMAKE_CURRENT_SOURCE_DIR}/runme.pl"
-  DEPENDS example)
+  "${CMAKE_CURRENT_SOURCE_DIR}/../runme.pl")

+ 13 - 0
Tests/UseSWIG/BasicPython/CMakeLists.txt

@@ -0,0 +1,13 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(TestBasicPython CXX)
+
+include(CTest)
+
+set(language "python")
+
+include (../BasicConfiguration.cmake)
+
+add_test (NAME BasicPython
+  COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:example>"
+  "${Python_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/../runme.py")

+ 62 - 0
Tests/UseSWIG/CMakeLists.txt

@@ -0,0 +1,62 @@
+add_test(NAME UseSWIG.LegacyPython COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/UseSWIG/LegacyPython"
+  "${CMake_BINARY_DIR}/Tests/UseSWIG/LegacyPython"
+  ${build_generator_args}
+  --build-project TestLegacyPython
+  --build-options ${build_options}
+  --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+  )
+add_test(NAME UseSWIG.LegacyPerl COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/UseSWIG/LegacyPerl"
+  "${CMake_BINARY_DIR}/Tests/UseSWIG/LegacyPerl"
+  ${build_generator_args}
+  --build-project TestLegacyPerl
+  --build-options ${build_options}
+  --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+  )
+
+
+add_test(NAME UseSWIG.BasicPython COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/UseSWIG/BasicPython"
+  "${CMake_BINARY_DIR}/Tests/UseSWIG/BasicPython"
+  ${build_generator_args}
+  --build-project TestBasicPython
+  --build-options ${build_options}
+  --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+  )
+add_test(NAME UseSWIG.BasicPerl COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/UseSWIG/BasicPerl"
+  "${CMake_BINARY_DIR}/Tests/UseSWIG/BasicPerl"
+  ${build_generator_args}
+  --build-project TestBasicPerl
+  --build-options ${build_options}
+  --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+  )
+
+
+add_test(NAME UseSWIG.MultipleModules COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/UseSWIG/MultipleModules"
+  "${CMake_BINARY_DIR}/Tests/UseSWIG/MultipleModules"
+  ${build_generator_args}
+  --build-project TestMultipleModules
+  --build-options ${build_options}
+  )
+add_test(NAME UseSWIG.MultiplePython COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/UseSWIG/MultiplePython"
+  "${CMake_BINARY_DIR}/Tests/UseSWIG/MultiplePython"
+  ${build_generator_args}
+  --build-project TestMultiplePython
+  --build-options ${build_options}
+  )

+ 4 - 3
Tests/RunCMake/UseSWIG/LegacyConfiguration.cmake → Tests/UseSWIG/LegacyConfiguration.cmake

@@ -51,10 +51,11 @@ unset(CMAKE_SWIG_FLAGS)
 
 
 include_directories(${CMAKE_CURRENT_LIST_DIR})
 include_directories(${CMAKE_CURRENT_LIST_DIR})
 
 
-set_source_files_properties(example.i PROPERTIES CPLUSPLUS ON)
-set_source_files_properties(example.i PROPERTIES SWIG_FLAGS "-includeall")
+set_source_files_properties("${CMAKE_CURRENT_LIST_DIR}/example.i" PROPERTIES CPLUSPLUS ON)
+set_source_files_properties("${CMAKE_CURRENT_LIST_DIR}/example.i" PROPERTIES SWIG_FLAGS "-includeall")
 SWIG_ADD_LIBRARY(example
 SWIG_ADD_LIBRARY(example
                  LANGUAGE "${language}"
                  LANGUAGE "${language}"
                  ${SWIG_LANG_TYPE}
                  ${SWIG_LANG_TYPE}
-                 SOURCES example.i example.cxx)
+                 SOURCES "${CMAKE_CURRENT_LIST_DIR}/example.i"
+                         "${CMAKE_CURRENT_LIST_DIR}/example.cxx")
 SWIG_LINK_LIBRARIES(example ${SWIG_LANG_LIBRARIES})
 SWIG_LINK_LIBRARIES(example ${SWIG_LANG_LIBRARIES})

+ 8 - 4
Tests/RunCMake/UseSWIG/LegacyPerl.cmake → Tests/UseSWIG/LegacyPerl/CMakeLists.txt

@@ -1,7 +1,12 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(TestLegacyPerl CXX)
+
+include(CTest)
 
 
 set(language "perl")
 set(language "perl")
 
 
-include (LegacyConfiguration.cmake)
+include (../LegacyConfiguration.cmake)
 
 
 if (WIN32)
 if (WIN32)
   file (TO_CMAKE_PATH "$ENV{PATH}" perl_path)
   file (TO_CMAKE_PATH "$ENV{PATH}" perl_path)
@@ -11,8 +16,7 @@ else()
   set (perl_env "LD_LIBRARY_PATH=$<TARGET_FILE_DIR:${SWIG_MODULE_example_REAL_NAME}>")
   set (perl_env "LD_LIBRARY_PATH=$<TARGET_FILE_DIR:${SWIG_MODULE_example_REAL_NAME}>")
 endif()
 endif()
 
 
-add_custom_target (RunTest
+add_test (NAME LegacyPerl
   COMMAND "${CMAKE_COMMAND}" -E env "${perl_env}"
   COMMAND "${CMAKE_COMMAND}" -E env "${perl_env}"
   "${PERL_EXECUTABLE}" "-I$<TARGET_FILE_DIR:${SWIG_MODULE_example_REAL_NAME}>"
   "${PERL_EXECUTABLE}" "-I$<TARGET_FILE_DIR:${SWIG_MODULE_example_REAL_NAME}>"
-  "${CMAKE_CURRENT_SOURCE_DIR}/runme.pl"
-  DEPENDS ${SWIG_MODULE_example_REAL_NAME})
+  "${CMAKE_CURRENT_SOURCE_DIR}/../runme.pl")

+ 13 - 0
Tests/UseSWIG/LegacyPython/CMakeLists.txt

@@ -0,0 +1,13 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(TestLegacyPython CXX)
+
+include(CTest)
+
+set(language "python")
+
+include (../LegacyConfiguration.cmake)
+
+add_test (NAME LegacyPython
+  COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:${SWIG_MODULE_example_REAL_NAME}>"
+  "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/../runme.py")

+ 38 - 0
Tests/UseSWIG/MultipleModules/CMakeLists.txt

@@ -0,0 +1,38 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(TestMultipleModules CXX)
+
+include(CTest)
+
+find_package(SWIG REQUIRED)
+include(${SWIG_USE_FILE})
+
+find_package(Python REQUIRED COMPONENTS Development)
+
+find_package(PerlLibs REQUIRED)
+
+unset(CMAKE_SWIG_FLAGS)
+
+set_property(SOURCE "../example.i" PROPERTY CPLUSPLUS ON)
+set_property(SOURCE "../example.i" PROPERTY COMPILE_OPTIONS -includeall)
+
+set_property(SOURCE "../example.i"
+  PROPERTY GENERATED_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/..")
+
+swig_add_library(example1
+                 LANGUAGE python
+                 OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/Python"
+                 SOURCES ../example.i ../example.cxx)
+target_link_libraries(example1 PRIVATE Python::Python)
+
+# re-use sample interface file for another plugin
+set_property(SOURCE "../example.i" APPEND PROPERTY
+  GENERATED_INCLUDE_DIRECTORIES ${PERL_INCLUDE_PATH})
+separate_arguments(c_flags UNIX_COMMAND "${PERL_EXTRA_C_FLAGS}")
+set_property(SOURCE "../example.i" PROPERTY GENERATED_COMPILE_OPTIONS ${c_flags})
+
+swig_add_library(example2
+                 LANGUAGE perl
+                 OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/Perl"
+                 SOURCES ../example.i ../example.cxx)
+target_link_libraries(example2 PRIVATE ${PERL_LIBRARY})

+ 11 - 5
Tests/RunCMake/UseSWIG/MultiplePython.cmake → Tests/UseSWIG/MultiplePython/CMakeLists.txt

@@ -1,3 +1,8 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(TestMultiplePython CXX)
+
+include(CTest)
 
 
 find_package(SWIG REQUIRED)
 find_package(SWIG REQUIRED)
 include(${SWIG_USE_FILE})
 include(${SWIG_USE_FILE})
@@ -7,20 +12,21 @@ find_package(Python3 REQUIRED COMPONENTS Development)
 
 
 unset(CMAKE_SWIG_FLAGS)
 unset(CMAKE_SWIG_FLAGS)
 
 
-set (CMAKE_INCLUDE_CURRENT_DIR ON)
+set_property(SOURCE "../example.i" PROPERTY CPLUSPLUS ON)
+set_property(SOURCE "../example.i" PROPERTY COMPILE_OPTIONS -includeall)
 
 
-set_property(SOURCE example.i PROPERTY CPLUSPLUS ON)
-set_property(SOURCE example.i PROPERTY COMPILE_OPTIONS -includeall)
+set_property(SOURCE "../example.i"
+  PROPERTY GENERATED_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/..")
 
 
 swig_add_library(example1
 swig_add_library(example1
                  LANGUAGE python
                  LANGUAGE python
                  OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/Python2"
                  OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/Python2"
-                 SOURCES example.i example.cxx)
+                 SOURCES ../example.i ../example.cxx)
 target_link_libraries(example1 PRIVATE Python2::Python)
 target_link_libraries(example1 PRIVATE Python2::Python)
 
 
 # re-use sample interface file for another plugin
 # re-use sample interface file for another plugin
 swig_add_library(example2
 swig_add_library(example2
                  LANGUAGE python
                  LANGUAGE python
                  OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/Python3"
                  OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/Python3"
-                 SOURCES example.i example.cxx)
+                 SOURCES ../example.i ../example.cxx)
 target_link_libraries(example2 PRIVATE Python3::Python)
 target_link_libraries(example2 PRIVATE Python3::Python)

+ 0 - 0
Tests/RunCMake/UseSWIG/example.cxx → Tests/UseSWIG/example.cxx


+ 0 - 0
Tests/RunCMake/UseSWIG/example.h → Tests/UseSWIG/example.h


+ 0 - 0
Tests/RunCMake/UseSWIG/example.i → Tests/UseSWIG/example.i


+ 0 - 0
Tests/RunCMake/UseSWIG/runme.php4 → Tests/UseSWIG/runme.php4


+ 0 - 0
Tests/RunCMake/UseSWIG/runme.pike → Tests/UseSWIG/runme.pike


+ 0 - 0
Tests/RunCMake/UseSWIG/runme.pl → Tests/UseSWIG/runme.pl


+ 0 - 0
Tests/RunCMake/UseSWIG/runme.py → Tests/UseSWIG/runme.py


+ 0 - 0
Tests/RunCMake/UseSWIG/runme.rb → Tests/UseSWIG/runme.rb


+ 0 - 0
Tests/RunCMake/UseSWIG/runme.tcl → Tests/UseSWIG/runme.tcl


+ 0 - 0
Tests/RunCMake/UseSWIG/runme2.tcl → Tests/UseSWIG/runme2.tcl