diff options
author | Stefan Radomski <github@mintwerk.de> | 2016-11-23 10:43:50 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2016-11-23 10:43:50 (GMT) |
commit | 039c463b89e1351ab97f2f200b8abfc05eb17898 (patch) | |
tree | 96c9e22a0019835102cf3f88d40ceca3ecb25e4c /test | |
parent | 919c06887c8396d4fb63d8a3e5e506e50a808cad (diff) | |
parent | aa540c457872b1cdd6a28df8d84e767684a9c5aa (diff) | |
download | uscxml-039c463b89e1351ab97f2f200b8abfc05eb17898.zip uscxml-039c463b89e1351ab97f2f200b8abfc05eb17898.tar.gz uscxml-039c463b89e1351ab97f2f200b8abfc05eb17898.tar.bz2 |
Fixed CMakeLists.txt for tests
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 240 | ||||
-rw-r--r-- | test/ctest/scripts/run_generated_test.cmake | 2 | ||||
-rwxr-xr-x | test/vhdl_manual/manual_test_ghdl.sh | 19 |
3 files changed, 136 insertions, 125 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index bf0fbdf..0f263d2 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -12,13 +12,14 @@ set(GHDL_VERSION "0") if (GHDL) execute_process(COMMAND ${GHDL} -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}) + 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) - endif() -endif() + endif () +endif () function(USCXML_TEST_COMPILE) set(options BUILD_ONLY) @@ -33,7 +34,7 @@ function(USCXML_TEST_COMPILE) if (NOT ${USCXML_TEST_BUILD_ONLY}) add_test(${USCXML_TEST_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${USCXML_TEST_NAME} ${USCXML_TEST_ARGS}) set_property(TEST ${USCXML_TEST_NAME} PROPERTY LABELS ${USCXML_TEST_LABEL}) - endif() + endif () set_target_properties(${USCXML_TEST_NAME} PROPERTIES FOLDER "Tests") endfunction() @@ -48,16 +49,16 @@ USCXML_TEST_COMPILE(NAME test-snippets LABEL general/test-snippets FILES src/tes USCXML_TEST_COMPILE(BUILD_ONLY NAME test-stress LABEL general/test-stress FILES src/test-stress.cpp) file(GLOB_RECURSE USCXML_WRAPPERS - ${PROJECT_SOURCE_DIR}/src/bindings/swig/wrapped/*.cpp - ${PROJECT_SOURCE_DIR}/src/bindings/swig/wrapped/*.h -) + ${PROJECT_SOURCE_DIR}/src/bindings/swig/wrapped/*.cpp + ${PROJECT_SOURCE_DIR}/src/bindings/swig/wrapped/*.h + ) USCXML_TEST_COMPILE(NAME test-bindings LABEL general/test-bindings FILES ${USCXML_WRAPPERS} src/test-bindings.cpp) if (NOT MSVC) # MSVC does not like to redefine 'protected' USCXML_TEST_COMPILE(NAME test-promela-parser LABEL general/test-promela-parser FILES src/test-promela-parser.cpp) target_link_libraries(test-promela-parser uscxml_transform) -endif() +endif () # the one binary to test for pass / fail final states add_executable(test-state-pass src/test-state-pass.cpp ${GETOPT_FILES}) @@ -70,32 +71,32 @@ set_target_properties(test-gen-c PROPERTIES FOLDER "Tests") # issues file(GLOB_RECURSE USCXML_ISSUES - issues/*.cpp - issues/*.scxml -) -foreach(USCXML_ISSUE ${USCXML_ISSUES} ) + issues/*.cpp + issues/*.scxml + ) +foreach (USCXML_ISSUE ${USCXML_ISSUES}) get_filename_component(ISSUE_NAME ${USCXML_ISSUE} NAME_WE) get_filename_component(ISSUE_TYPE ${USCXML_ISSUE} EXT) if (ISSUE_TYPE STREQUAL ".scxml") add_test(issue/${ISSUE_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-state-pass ${USCXML_ISSUE}) set_property(TEST issue/${ISSUE_NAME} PROPERTY LABELS issue/${ISSUE_NAME}) - else() + else () USCXML_TEST_COMPILE(NAME ${ISSUE_NAME} LABEL issues/${ISSUE_NAME} FILES ${USCXML_ISSUE}) - endif() -endforeach() + endif () +endforeach () # make sure all headers are self-reliant -set (USCXML_PUBLIC_HEADERS - "${PROJECT_SOURCE_DIR}/src/uscxml/uscxml.h" - "${PROJECT_SOURCE_DIR}/src/uscxml/Interpreter.h" -) +set(USCXML_PUBLIC_HEADERS + "${PROJECT_SOURCE_DIR}/src/uscxml/uscxml.h" + "${PROJECT_SOURCE_DIR}/src/uscxml/Interpreter.h" + ) file(GLOB_RECURSE USCXML_HEADERS - ../src/*.h - ../src/*.hpp -) + ../src/*.h + ../src/*.hpp + ) -foreach(USCXML_HEADER ${USCXML_PUBLIC_HEADERS} ) +foreach (USCXML_HEADER ${USCXML_PUBLIC_HEADERS}) # message (STATUS "USCXML_HEADER: ${USCXML_HEADER}") # message (STATUS "USCXML_REL_HEADER: ${USCXML_REL_HEADER}") # message (STATUS "CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}") @@ -107,7 +108,7 @@ foreach(USCXML_HEADER ${USCXML_PUBLIC_HEADERS} ) FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/headers/${USCXML_REL_HEADER}.cpp ${HEADER_TEST}) add_test(NAME "header/${USCXML_REL_HEADER}" - COMMAND ${CMAKE_COMMAND} + COMMAND ${CMAKE_COMMAND} -DTESTFILE:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/headers/${USCXML_REL_HEADER}.cpp -DCC_BIN:FILEPATH=${CC} -DCXX_BIN:FILEPATH=${CXX} @@ -116,109 +117,110 @@ foreach(USCXML_HEADER ${USCXML_PUBLIC_HEADERS} ) -DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR} -DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR} -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/run_header_compiles.cmake) + -P ${CMAKE_CURRENT_SOURCE_DIR}/ctest/scripts/run_header_compiles.cmake) set_property(TEST "header/${USCXML_REL_HEADER}" PROPERTY LABELS "header/${USCXML_REL_HEADER}") - -endforeach() + +endforeach () # debugger REST API if (PERL) add_test(NAME "general/test-debug-api" - COMMAND ${PERL} + COMMAND ${PERL} "${PROJECT_SOURCE_DIR}/test/src/test-http-debugger.pl" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-browser" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/test/src - ) + ) set_property(TEST "general/test-debug-api" PROPERTY LABELS "general/test-debug-api") set_tests_properties("general/test-debug-api" PROPERTIES DEPENDS uscxml-browser) - -endif() + +endif () # declare W3C tests -if (NOT BUILD_MINIMAL) +if (NOT BUILD_MINIMAL) # copy resources file(GLOB_RECURSE W3C_RESOURCES - w3c/*.txt - w3c/*sub*.scxml - ) - - set(TEST_CLASSES - # standard tests generated per datamodel - "namespace" - "ecma" - # "xpath" - "null" - "lua" - "c89" - "promela" - - # generated c source - "gen/c/ecma" - # "gen/c/xpath" - "gen/c/lua" - # "gen/c/promela" - "gen/vhdl/ecma" - - # bindings - "binding/java/jexl" - - # state-machine interpreters - # "fsm/ecma" - # "fsm/xpath" - # "fsm/lua" - # "fsm/promela" - - # formal verification - "spin/promela" - - # performance tests - # "perf/gen/c/ecma" - # "perf/ecma" - ) - + w3c/*.txt + w3c/*sub*.scxml + ) + + set(TEST_CLASSES + # standard tests generated per datamodel + "namespace" + "ecma" + # "xpath" + "null" + "lua" + "c89" + "promela" + + # generated c source + "gen/c/ecma" + # "gen/c/xpath" + "gen/c/lua" + # "gen/c/promela" + "gen/vhdl/ecma" + "gen/vhdl/null" + + # bindings + "binding/java/jexl" + + # state-machine interpreters + # "fsm/ecma" + # "fsm/xpath" + # "fsm/lua" + # "fsm/promela" + + # formal verification + "spin/promela" + + # performance tests + # "perf/gen/c/ecma" + # "perf/ecma" + ) + # prepare directories for test classes and copy resources over - foreach(W3C_RESOURCE ${W3C_RESOURCES} ) + foreach (W3C_RESOURCE ${W3C_RESOURCES}) get_filename_component(TEST_DATAMODEL ${W3C_RESOURCE} PATH) get_filename_component(TEST_DATAMODEL ${TEST_DATAMODEL} NAME) - + # message(STATUS "W3C_RESOURCE: ${W3C_RESOURCE}") # message(STATUS "TEST_DATAMODEL: ${TEST_DATAMODEL}") - - foreach(TEST_CLASS ${TEST_CLASSES}) + + foreach (TEST_CLASS ${TEST_CLASSES}) # datamodel has to be the suffix of the test class if (TEST_CLASS MATCHES ".*/${TEST_DATAMODEL}$") file(COPY ${W3C_RESOURCE} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${TEST_CLASS}) - endif() - endforeach() - endforeach() + endif () + endforeach () + endforeach () # establish actual tests - foreach(TEST_CLASS ${TEST_CLASSES}) + foreach (TEST_CLASS ${TEST_CLASSES}) get_filename_component(TEST_DATAMODEL ${TEST_CLASS} NAME) get_filename_component(TEST_TYPE ${TEST_CLASS} PATH) # get all respective scxml files into W3C_TESTS file(GLOB_RECURSE W3C_TESTS w3c/${TEST_DATAMODEL}/*.scxml) - + SET(IS_PERFORMANCE_TEST OFF) if (TEST_CLASS MATCHES "^perf/.*") SET(IS_PERFORMANCE_TEST ON) - endif() - + endif () + if (IS_PERFORMANCE_TEST) string(REGEX REPLACE "^perf/?" "" TEST_TYPE ${TEST_TYPE}) - endif() - + endif () + SET(IS_STANDARD_TEST OFF) if ("${TEST_TYPE}" STREQUAL "") if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/w3c/${TEST_DATAMODEL}") SET(IS_STANDARD_TEST ON) - endif() - endif() - + endif () + endif () + # normal IRP tests - get all scxml files within - foreach(W3C_TEST ${W3C_TESTS} ) + foreach (W3C_TEST ${W3C_TESTS}) set(TEST_ADDED OFF) get_filename_component(TEST_FILE ${W3C_TEST} NAME) set(TEST_NAME "w3c/${TEST_CLASS}/${TEST_FILE}") @@ -232,19 +234,19 @@ if (NOT BUILD_MINIMAL) else () if (IS_STANDARD_TEST) - + add_test(${TEST_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-state-pass ${W3C_TEST}) set(TEST_ADDED ON) - + if (TEST_NAME MATCHES ".*/test250.scxml") set_tests_properties(${TEST_NAME} PROPERTIES FAIL_REGULAR_EXPRESSION "entering final state, invocation was not cancelled") elseif (TEST_NAME MATCHES ".*/test307.scxml") set_tests_properties(${TEST_NAME} PROPERTIES FAIL_REGULAR_EXPRESSION "error in state") - endif() - + endif () + # more properties for standard tests - - else() + + else () if (TEST_TYPE MATCHES "^gen.*") get_filename_component(TEST_TARGET ${TEST_TYPE} NAME) @@ -252,11 +254,11 @@ if (NOT BUILD_MINIMAL) if (TEST_TARGET MATCHES "vhdl" AND "${GHDL_VERSION}" VERSION_LESS "0.32") # do nothing - else() - + else () + # generate native interpreters add_test(NAME "${TEST_NAME}" - COMMAND ${CMAKE_COMMAND} + COMMAND ${CMAKE_COMMAND} -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/${TEST_CLASS} -DTESTFILE:FILEPATH=${W3C_TEST} -DTARGETLANG=${TEST_TARGET} @@ -278,31 +280,31 @@ if (NOT BUILD_MINIMAL) set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS uscxml-transform) set(TEST_ADDED ON) endif() - 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} + COMMAND + ${ANT_EXECUTABLE} -Dtest.file=${W3C_TEST} -Duscxml.jar=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxml.jar - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bindings/java - ) + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bindings/java + ) set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS jar) set(TEST_ADDED ON) - endif() + endif () elseif (TEST_TYPE MATCHES "^spin.*") if (NOT ${TEST_DATAMODEL} STREQUAL "promela") break() - endif() + endif () add_test(NAME "${TEST_NAME}" - COMMAND ${CMAKE_COMMAND} + COMMAND ${CMAKE_COMMAND} -DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/promela -DTESTFILE:FILEPATH=${W3C_TEST} -DUSCXML_TRANSFORM_BIN:FILEPATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-transform @@ -312,25 +314,25 @@ if (NOT BUILD_MINIMAL) 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() - endif() - - if(TEST_ADDED) + + endif () + endif () + + if (TEST_ADDED) set_property(TEST ${TEST_NAME} PROPERTY LABELS ${TEST_NAME}) set_tests_properties(${TEST_NAME} PROPERTIES TIMEOUT ${TEST_TIMEOUT}) if (IS_PERFORMANCE_TEST) set_tests_properties("${TEST_NAME}" PROPERTIES ENVIRONMENT USCXML_BENCHMARK_ITERATIONS=${TEST_BENCHMARK_ITERATIONS}) - endif() - endif() - - endif() - endforeach() - endforeach() - -endif()
\ No newline at end of file + endif () + endif () + + endif () + endforeach () + endforeach () + +endif ()
\ No newline at end of file diff --git a/test/ctest/scripts/run_generated_test.cmake b/test/ctest/scripts/run_generated_test.cmake index 08689ab..7057bd0 100644 --- a/test/ctest/scripts/run_generated_test.cmake +++ b/test/ctest/scripts/run_generated_test.cmake @@ -37,7 +37,7 @@ if (${TARGETLANG} STREQUAL "vhdl") message(STATUS "${GHDL_BIN} -e --std=08 ${VHDL_TESTBENCH_NAME}") execute_process( - COMMAND time -p ${GHDL_BIN} -e --std=08 ${OUTDIR}/${TEST_FILE_NAME}.machine.vhdl + COMMAND time -p ${GHDL_BIN} -e --std=08 ${VHDL_TESTBENCH_NAME} WORKING_DIRECTORY ${OUTDIR} RESULT_VARIABLE CMD_RESULT) if (CMD_RESULT) message(FATAL_ERROR "Error running ghdl ${GHDL_BIN}: ${CMD_RESULT}") diff --git a/test/vhdl_manual/manual_test_ghdl.sh b/test/vhdl_manual/manual_test_ghdl.sh index 68038c4..90ba90b 100755 --- a/test/vhdl_manual/manual_test_ghdl.sh +++ b/test/vhdl_manual/manual_test_ghdl.sh @@ -3,6 +3,12 @@ # https://sourceforge.net/p/umhdl/wiki/Installation%20-%20Linux/ # https://linux.die.net/man/1/ghdl # +# needs a up-to-date verson of ghdl (at least 0.32) +# https://github.com/tgingold/ghdl +# ./configure --with-llvm-config=/usr/bin/llvm-config --prefix=/opt/ghdl +# sudo mkdir /opt/ghdl +# make +# sudo make install ME=`basename $0` DIR="$( cd "$( dirname "$0" )" && pwd )/" @@ -16,7 +22,7 @@ VHDL_OUT=${SIM_DIR}vhd/ SIM_LIB_DIR=${SIM_DIR}scxml/ VHDL_TB_NAME=tb -SIMULATION_CMD="${INSTALL_DIR}vsim work.tb -do debug.do" +GHDL=/opt/ghdl/bin/ghdl # get arguments TEST_NUMBER="test144.scxml" @@ -43,8 +49,9 @@ fi # compile stuff cd ${SIM_DIR} -ghdl --clean -ghdl -a -Wa,--32 ${VHDL_OUT}dut.vhd +${GHDL} --clean +${GHDL} -a --std=08 ${VHDL_OUT}dut.vhd +#${GHDL} -a -Wa,--32 ${VHDL_OUT}dut.vhd if [ $? -eq 0 ] ; then echo "syntax check ok." @@ -53,7 +60,8 @@ else exit -1 fi -ghdl -e -Wa,--32 -Wl,-m32 ${VHDL_TB_NAME} +${GHDL} -e --std=08 ${VHDL_TB_NAME} +#${GHDL} -e -Wa,--32 -Wl,-m32 ${VHDL_TB_NAME} if [ $? -eq 0 ] ; then echo "compilation done." @@ -63,4 +71,5 @@ else fi # start simulator -ghdl -r tb --stop-time=10ms --vcd=tb.vcd +${GHDL} -r tb --vcd=tb.vcd +#${GHDL} -r tb --stop-time=10ms --vcd=tb.vcd |