diff options
author | xantares <xantares09@hotmail.com> | 2014-04-19 09:04:57 +0200 |
---|---|---|
committer | xantares <xantares09@hotmail.com> | 2014-04-19 09:04:57 +0200 |
commit | a552139f403029eb8d1ad5eb2806c6f111180620 (patch) | |
tree | 77182bd18b52d069fe942e3c8bad01062148af8b | |
parent | fb8a8b10b2cfe68405be8e81edafa513e7c991f9 (diff) | |
download | swig-a552139f403029eb8d1ad5eb2806c6f111180620.tar.gz |
Enhanced test macros.
-rw-r--r-- | Examples/test-suite/CMakeLists.txt | 163 | ||||
-rw-r--r-- | Examples/test-suite/python/CMakeLists.txt | 46 | ||||
-rw-r--r-- | Examples/test-suite/ruby/CMakeLists.txt | 16 |
3 files changed, 116 insertions, 109 deletions
diff --git a/Examples/test-suite/CMakeLists.txt b/Examples/test-suite/CMakeLists.txt index aa43f5382..f5faf5e86 100644 --- a/Examples/test-suite/CMakeLists.txt +++ b/Examples/test-suite/CMakeLists.txt @@ -395,134 +395,99 @@ set ( CPP_TEST_CASES wallkw wrapmacro) +# TODO: remove me, for test! +# set (CPP_TEST_CASES array_member bools varargs_overload virtual_destructor) set ( LANGUAGES ) -macro(add_test_language language extension interpreter) +macro(test_language language extension interpreter) list ( APPEND LANGUAGES ${language} ${interpreter} ) set (${language}_ext ${extension}) set (${language}_interpreter ${interpreter}) - add_subdirectory ( ${language} ) + add_tests(${language}) endmacro() include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} ) -macro ( swig_and_compile testname language ) - set (SWIG_CXX_FLAG) - set ( SWIG_CXX_EXTENSION ".c") - if (1) - set (SWIG_CXX_FLAG "-c++") - set(SWIG_CXX_EXTENSION ".cxx") - endif () - set (SWIG_OUTPUT ${testname}${language}_wrap${SWIG_CXX_EXTENSION} ) - add_custom_command(OUTPUT ${SWIG_OUTPUT} - COMMAND ${SWIG_EXECUTABLE} -${language} ${SWIG_CXX_FLAG} - -I${CMAKE_SOURCE_DIR}/Lib/${language} -I${CMAKE_BINARY_DIR} -I${CMAKE_SOURCE_DIR}/Lib - -o ${SWIG_OUTPUT} - ${CMAKE_CURRENT_SOURCE_DIR}/../${testname}.i - ) - set(name ${testname}_${language}) - - set(SWIG_MODULE_${name}_REAL_NAME ${testname}_${language}) - - add_library(${SWIG_MODULE_${name}_REAL_NAME} MODULE EXCLUDE_FROM_ALL ${SWIG_OUTPUT} ) - - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES LIBRARY_OUTPUT_NAME ${testname}) - if (${language} STREQUAL python) - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES LIBRARY_OUTPUT_NAME _${testname}) - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") - if(WIN32 AND NOT CYGWIN) - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".pyd") - endif() - elseif(${language} STREQUAL ruby) - set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") - endif () +add_custom_target ( check-test-suite ) - add_dependencies(check-${language}-test-suite ${SWIG_MODULE_${name}_REAL_NAME}) - - set ( testfile ${CMAKE_CURRENT_SOURCE_DIR}/${testname}_runme${${language}_ext} ) - if ( EXISTS ${testfile} ) - add_test(${name} "${${language}_interpreter}" ${testfile}) - if ( DEFINED ${language}_test_environment ) - set_tests_properties ( ${name} PROPERTIES ENVIRONMENT "${${language}_test_environment}" ) +macro(add_tests language) + set (TEST_TARGETS) + set (TEST_SRCS) + foreach( testname ${CPP_TEST_CASES} ) + set (SWIG_CXX_FLAG) + set ( SWIG_CXX_EXTENSION ".c") + if (1) + set (SWIG_CXX_FLAG "-c++") + set(SWIG_CXX_EXTENSION ".cxx") endif () - endif () -endmacro() + set (SWIG_OUTPUT ${testname}${language}_wrap${SWIG_CXX_EXTENSION} ) + add_custom_command(OUTPUT ${SWIG_OUTPUT} + COMMAND ${SWIG_EXECUTABLE} -${language} ${SWIG_CXX_FLAG} + -I${CMAKE_SOURCE_DIR}/Lib/${language} -I${CMAKE_BINARY_DIR} -I${CMAKE_SOURCE_DIR}/Lib + -o ${SWIG_OUTPUT} + ${CMAKE_CURRENT_SOURCE_DIR}/../${testname}.i + DEPENDS swig + ) + set(name ${testname}-${language}) + + set(SWIG_MODULE_${name}_REAL_NAME ${testname}_${language}) -add_custom_target ( check-test-suite ) -# foreach( language ${LANGUAGES} ) -# file ( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${language} ) -# add_custom_target ( check-${language}-test-suite ) -# foreach( CPP_TEST_CASE ${CPP_TEST_CASES} ) -# swig_and_compile ( ${CPP_TEST_CASE} ${language} ) -# endforeach() -# add_dependencies(check-test-suite check-${language}-test-suite) -# endforeach() + add_library(${SWIG_MODULE_${name}_REAL_NAME} MODULE EXCLUDE_FROM_ALL ${SWIG_OUTPUT} ) + list (APPEND TEST_TARGETS ${SWIG_MODULE_${name}_REAL_NAME}) + + set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES LIBRARY_OUTPUT_NAME ${testname}) + if (${language} STREQUAL python) + set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES LIBRARY_OUTPUT_NAME _${testname}) + set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") + if(WIN32 AND NOT CYGWIN) + set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES SUFFIX ".pyd") + endif() + elseif(${language} STREQUAL ruby) + set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES PREFIX "") + endif () - -macro(add_tests language) - add_custom_target ( check-${language}-test-suite ) - foreach( CPP_TEST_CASE ${CPP_TEST_CASES} ) - swig_and_compile ( ${CPP_TEST_CASE} ${language} ) + set ( testfile ${CMAKE_CURRENT_SOURCE_DIR}/${testname}_runme${${language}_ext} ) + if ( EXISTS ${testfile} ) + add_test(${name} "${${language}_interpreter}" ${testfile}) + list (APPEND TEST_SRCS ${testfile} ) + if ( DEFINED ${language}_test_environment ) + set_tests_properties ( ${name} PROPERTIES ENVIRONMENT "${${language}_test_environment}" ) + endif () + endif () endforeach() + + add_custom_target ( check-${language}-test-suite + COMMAND ${CMAKE_CTEST_COMMAND} -R "-${language}" -j2 + DEPENDS ${TEST_TARGETS} ${TEST_SRCS} + ) add_dependencies(check-test-suite check-${language}-test-suite) endmacro() option ( USE_PYTHON "python" ON ) if ( USE_PYTHON ) - find_package ( PythonInterp ) - find_package ( PythonLibs ) -endif () -if ( PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND ) - add_test_language ( python ".py" ${PYTHON_EXECUTABLE} ) + add_subdirectory ( python ) endif () option ( USE_JAVA "java" OFF ) -if(USE_JAVA) - find_package(JNI) -endif () -if (JNI_FOUND) - list( APPEND LANGUAGES java ) - set ( java_ext ".java" ) - include_directories ( ${JNI_INCLUDE_DIRS} ) +if ( USE_JAVA ) + add_subdirectory ( java ) endif () option ( USE_RUBY "ruby" ON ) -if(USE_RUBY) - find_package(Ruby) -endif () -if (RUBY_FOUND) - add_test_language ( ruby ".rb" ${RUBY_EXECUTABLE} ) +if ( USE_RUBY ) + add_subdirectory ( ruby ) endif () -option (USE_OCTAVE "octave" OFF) -if(USE_OCTAVE) - find_program(OCTAVE_EXECUTABLE NAMES octave) - if (OCTAVE_EXECUTABLE) - execute_process ( COMMAND ${OCTAVE_EXECUTABLE} --silent --eval "printf('%s', octave_config_info ('version'))" - OUTPUT_VARIABLE OCTAVE_VERSION_STRING - RESULT_VARIABLE error_code - OUTPUT_STRIP_TRAILING_WHITESPACE ) - endif () - find_path(OCTAVE_INCLUDE_DIR - NAMES octave/oct.h - PATH_SUFFIXES octave-${OCTAVE_VERSION_STRING} - ) - if (OCTAVE_EXECUTABLE AND OCTAVE_INCLUDE_DIR) - set (OCTAVE_INCLUDE_DIRS ${OCTAVE_INCLUDE_DIR}) - set (OCTAVE_FOUND TRUE) - endif () -endif () -if (OCTAVE_FOUND) - list( APPEND LANGUAGES octave ) +option ( USE_OCTAVE "octave" OFF ) +if ( USE_OCTAVE ) + add_subdirectory ( octave ) +endif() + +option ( USE_CSHARP "csharp" OFF ) +if ( USE_CSHARP ) + add_subdirectory ( csharp ) endif () -option (USE_CSHARP "csharp" OFF) -if(USE_CSHARP) - find_program(MCS_EXECUTABLE NAMES mcs) -endif () -if (MCS_EXECUTABLE) - list( APPEND LANGUAGES csharp ) -endif () diff --git a/Examples/test-suite/python/CMakeLists.txt b/Examples/test-suite/python/CMakeLists.txt index b86847560..b9cf8250c 100644 --- a/Examples/test-suite/python/CMakeLists.txt +++ b/Examples/test-suite/python/CMakeLists.txt @@ -1,6 +1,42 @@ -set ( python_test_environment - "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}" - ) -include_directories ( ${PYTHON_INCLUDE_DIR} ) -add_tests(python)
\ No newline at end of file + + +find_package ( PythonInterp ) +find_package ( PythonLibs ) + +if ( PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND ) + + set ( python_ext ".py" ) + + set ( python_test_environment + "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}" + ) + include_directories ( ${PYTHON_INCLUDE_DIR} ) + + if ( ${PYTHON_VERSION_MAJOR} VERSION_EQUAL 3 ) + find_program(PY2TO3_EXECUTABLE NAMES 2to3) + if ( NOT PY2TO3_EXECUTABLE ) + message ( SEND_ERROR "Python 2to3 executable not found" ) + endif () + file(GLOB python_files "${CMAKE_CURRENT_SOURCE_DIR}/*_runme.py") +# add_custom_target(generate-py3) + foreach(python_file ${python_files}) + get_filename_component(BASENAME ${python_file} NAME_WE) + add_custom_command( OUTPUT ${python_file}3 + COMMAND ${PY2TO3_EXECUTABLE} --write --nobackups --no-diffs --add-suffix=3 ${python_file} + DEPENDS ${python_file} + ) + add_custom_target ( generate-${BASENAME}-py3 DEPENDS ${python_file}3 ) +# add_dependencies ( generate-py3 generate-${BASENAME}-py3 ) + endforeach() + + set ( python_ext ".py3" ) + endif () + + test_language ( python ${python_ext} ${PYTHON_EXECUTABLE} ) + +# if ( PY2TO3_EXECUTABLE ) +# add_dependencies(check-python-test-suite generate-py3) +# endif () + +endif ()
\ No newline at end of file diff --git a/Examples/test-suite/ruby/CMakeLists.txt b/Examples/test-suite/ruby/CMakeLists.txt index 607272ff1..4ca5ddeda 100644 --- a/Examples/test-suite/ruby/CMakeLists.txt +++ b/Examples/test-suite/ruby/CMakeLists.txt @@ -1,7 +1,13 @@ -set ( ruby_test_environment - "RUBYLIB=${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_SOURCE_DIR}" - ) -include_directories ( ${RUBY_INCLUDE_DIRS} ) +find_package(Ruby) +if ( RUBY_FOUND ) + + set ( ruby_test_environment + "RUBYLIB=${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_SOURCE_DIR}" + ) + + include_directories ( ${RUBY_INCLUDE_DIRS} ) + + test_language ( ruby ".rb" ${RUBY_EXECUTABLE} ) +endif () -add_tests(ruby)
\ No newline at end of file |