summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-11-23 10:43:50 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-11-23 10:43:50 (GMT)
commit039c463b89e1351ab97f2f200b8abfc05eb17898 (patch)
tree96c9e22a0019835102cf3f88d40ceca3ecb25e4c /test
parent919c06887c8396d4fb63d8a3e5e506e50a808cad (diff)
parentaa540c457872b1cdd6a28df8d84e767684a9c5aa (diff)
downloaduscxml-039c463b89e1351ab97f2f200b8abfc05eb17898.zip
uscxml-039c463b89e1351ab97f2f200b8abfc05eb17898.tar.gz
uscxml-039c463b89e1351ab97f2f200b8abfc05eb17898.tar.bz2
Fixed CMakeLists.txt for tests
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt240
-rw-r--r--test/ctest/scripts/run_generated_test.cmake2
-rwxr-xr-xtest/vhdl_manual/manual_test_ghdl.sh19
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