diff options
Diffstat (limited to 'test/CMakeLists.txt')
-rw-r--r-- | test/CMakeLists.txt | 155 |
1 files changed, 79 insertions, 76 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f07df8d..850aa21 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,23 +1,23 @@ set(TEST_TIMEOUT 30) set(TEST_BENCHMARK_ITERATIONS 1000) -find_program(SPIN spin) -find_program(CC gcc) -find_program(CXX g++) -find_program(ANT_EXECUTABLE ant) -find_program(PERL perl) -find_program(GHDL ghdl) +find_program(SPIN_BIN spin) +find_program(CC_BIN gcc) +find_program(CXX_BIN g++) +find_program(ANT_BIN ant) +find_program(PERL_BIN perl) +find_program(GHDL_BIN ghdl) set(GHDL_VERSION "0") -if (GHDL) - execute_process(COMMAND ${GHDL} -v OUTPUT_VARIABLE GHDL_VERSION_OUT) +if (GHDL_BIN) + execute_process(COMMAND ${GHDL_BIN} -v OUTPUT_VARIABLE GHDL_VERSION_OUT) string(REGEX REPLACE "^GHDL " "" GHDL_VERSION_OUT ${GHDL_VERSION_OUT}) string(REGEX MATCH "^([0-9]+\\.[0-9]+)" GHDL_VERSION ${GHDL_VERSION_OUT}) if (${GHDL_VERSION} VERSION_LESS "0.32") message(WARNING "GHDL version 0.32 required - ${GHDL_VERSION} found, not building VHDL tests") message(WARNING "Try https://github.com/tgingold/ghdl/releases/tag/v0.33") - unset(GHDL) + unset(GHDL_BIN) endif () endif () @@ -110,8 +110,8 @@ foreach (USCXML_HEADER ${USCXML_PUBLIC_HEADERS}) add_test(NAME "header/${USCXML_REL_HEADER}" COMMAND ${CMAKE_COMMAND} -DTESTFILE:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/headers/${USCXML_REL_HEADER}.cpp - -DCC_BIN:FILEPATH=${CC} - -DCXX_BIN:FILEPATH=${CXX} + -DCC_BIN:FILEPATH=${CC_BIN} + -DCXX_BIN:FILEPATH=${CXX_BIN} -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} -DUSCXML_PLATFORM_ID=${USCXML_PLATFORM_ID} -DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR} @@ -123,9 +123,9 @@ foreach (USCXML_HEADER ${USCXML_PUBLIC_HEADERS}) endforeach () # debugger REST API -if (PERL) +if (PERL_BIN) add_test(NAME "general/test-debug-api" - COMMAND ${PERL} + COMMAND ${PERL_BIN} "${PROJECT_SOURCE_DIR}/test/src/test-http-debugger.pl" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-browser" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test/src @@ -247,81 +247,84 @@ if (NOT BUILD_MINIMAL) # more properties for standard tests - else () - - if (TEST_TYPE MATCHES "^gen.*") - get_filename_component(TEST_TARGET ${TEST_TYPE} NAME) - if (TEST_TYPE MATCHES "^gen/${TEST_TARGET}") - - if (TEST_TARGET MATCHES "vhdl" AND "${GHDL_VERSION}" VERSION_LESS "0.32") - # do nothing - else () - - # generate native interpreters - add_test(NAME "${TEST_NAME}" - COMMAND ${CMAKE_COMMAND} - -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/${TEST_CLASS} - -DTESTFILE:FILEPATH=${W3C_TEST} - -DTARGETLANG=${TEST_TARGET} - -DJSC_LIBRARY:FILEPATH=${JSC_LIBRARY} - -DUSCXML_TRANSFORM_BIN:FILEPATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-transform - -DCC_BIN:FILEPATH=${CC} - -DCXX_BIN:FILEPATH=${CXX} - -DGHDL_BIN:FILEPATH=${GHDL} - -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} - -DUSCXML_PLATFORM_ID=${USCXML_PLATFORM_ID} - -DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR} - -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} - -DXercesC_INCLUDE_DIRS=${XercesC_INCLUDE_DIRS} - -DURIPARSER_INCLUDE_DIR=${URIPARSER_INCLUDE_DIR} - -DLIBEVENT_INCLUDE_DIR=${LIBEVENT_INCLUDE_DIR} - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - -DSCAFFOLDING_FOR_GENERATED_C:FILEPATH=${CMAKE_CURRENT_SOURCE_DIR}/src/test-gen-c.cpp - -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/run_generated_test.cmake) - set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS uscxml-transform) - set(TEST_ADDED ON) - endif() - endif () - - elseif (TEST_TYPE MATCHES "^binding.*") - get_filename_component(TEST_LANG ${TEST_TYPE} NAME) - - if (TARGET jar AND TEST_LANG STREQUAL "java") - add_test(NAME "${TEST_NAME}" - COMMAND - ${ANT_EXECUTABLE} - -Dtest.file=${W3C_TEST} - -Duscxml.jar=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxml.jar - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bindings/java - ) - set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS jar) - set(TEST_ADDED ON) - endif () - - elseif (TEST_TYPE MATCHES "^spin.*") - - if (NOT ${TEST_DATAMODEL} STREQUAL "promela") + elseif (TEST_TYPE MATCHES "^gen.*") + # tests for generated languages via ctest/scripts/test_generated_${TEST_TARGET}.cmake + get_filename_component(TEST_TARGET ${TEST_TYPE} NAME) + if (TEST_TYPE MATCHES "^gen/${TEST_TARGET}") + + # a few necessary preconditions per target language + if (TEST_TARGET MATCHES "vhdl" AND "${GHDL_VERSION}" VERSION_LESS "0.32") + break() + endif() + + if (TEST_TARGET MATCHES "java" AND NOT ANT_BIN) break() - endif () + endif() + # call test script add_test(NAME "${TEST_NAME}" COMMAND ${CMAKE_COMMAND} - -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/promela + -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/${TEST_CLASS} -DTESTFILE:FILEPATH=${W3C_TEST} + -DTARGETLANG=${TEST_TARGET} + -DJSC_LIBRARY:FILEPATH=${JSC_LIBRARY} -DUSCXML_TRANSFORM_BIN:FILEPATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-transform - -DSPIN_BIN:FILEPATH=${SPIN} - -DCC_BIN:FILEPATH=${CC} - -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/run_promela_test.cmake) - set_tests_properties("${TEST_NAME}" PROPERTIES PASS_REGULAR_EXPRESSION "depth reached [0-9]+, errors: 0") - set_tests_properties("${TEST_NAME}" PROPERTIES FAIL_REGULAR_EXPRESSION "depth reached [0-9]+, errors: [1-9]+") + -DANT_BIN:FILEPATH=${ANT_BIN} + -DCC_BIN:FILEPATH=${CC_BIN} + -DCXX_BIN:FILEPATH=${CXX_BIN} + -DGHDL_BIN:FILEPATH=${GHDL_BIN} + -DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} + -DUSCXML_PLATFORM_ID=${USCXML_PLATFORM_ID} + -DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR} + -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} + -DXercesC_INCLUDE_DIRS=${XercesC_INCLUDE_DIRS} + -DURIPARSER_INCLUDE_DIR=${URIPARSER_INCLUDE_DIR} + -DLIBEVENT_INCLUDE_DIR=${LIBEVENT_INCLUDE_DIR} + -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + -DSCAFFOLDING_FOR_GENERATED_C:FILEPATH=${CMAKE_CURRENT_SOURCE_DIR}/src/test-gen-c.cpp + -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/test_generated_${TEST_TARGET}.cmake) + set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS uscxml-transform) set(TEST_ADDED ON) + endif() - elseif (TEST_TYPE MATCHES "^fsm.*") + elseif (TEST_TYPE MATCHES "^binding.*") + get_filename_component(TEST_LANG ${TEST_TYPE} NAME) - add_test("${TEST_NAME}" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-state-pass -f ${W3C_TEST}) + if (TARGET jar AND TEST_LANG STREQUAL "java") + add_test(NAME "${TEST_NAME}" + COMMAND + ${ANT_BIN} + -Dtest.file=${W3C_TEST} + -Duscxml.jar=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxml.jar + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bindings/java + ) + set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS jar) set(TEST_ADDED ON) + endif () + + elseif (TEST_TYPE MATCHES "^spin.*") + if (NOT ${TEST_DATAMODEL} STREQUAL "promela") + break() endif () + + add_test(NAME "${TEST_NAME}" + COMMAND ${CMAKE_COMMAND} + -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/promela + -DTESTFILE:FILEPATH=${W3C_TEST} + -DUSCXML_TRANSFORM_BIN:FILEPATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-transform + -DSPIN_BIN:FILEPATH=${SPIN_BIN} + -DCC_BIN:FILEPATH=${CC_BIN} + -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/run_promela_test.cmake) + set_tests_properties("${TEST_NAME}" PROPERTIES PASS_REGULAR_EXPRESSION "depth reached [0-9]+, errors: 0") + set_tests_properties("${TEST_NAME}" PROPERTIES FAIL_REGULAR_EXPRESSION "depth reached [0-9]+, errors: [1-9]+") + set(TEST_ADDED ON) + + elseif (TEST_TYPE MATCHES "^fsm.*") + + add_test("${TEST_NAME}" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-state-pass -f ${W3C_TEST}) + set(TEST_ADDED ON) + endif () if (TEST_ADDED) |