From 1ab8b9a0dcaa131b8cccc735a1794ce39b351715 Mon Sep 17 00:00:00 2001 From: Stefan Radomski Date: Sat, 24 Dec 2016 21:10:50 +0100 Subject: Added w3c tests for python bindings --- contrib/python/bindings/test-state-pass.py | 30 ++++++++++++++++++++++++++++++ test/CMakeLists.txt | 17 +++++++++++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 contrib/python/bindings/test-state-pass.py diff --git a/contrib/python/bindings/test-state-pass.py b/contrib/python/bindings/test-state-pass.py new file mode 100644 index 0000000..56aba97 --- /dev/null +++ b/contrib/python/bindings/test-state-pass.py @@ -0,0 +1,30 @@ +import sys +import os.path + + +def main(argv): + if not os.path.isfile(argv[1]): + sys.exit(os.EX_NOINPUT) + + # where to find uscxmlNativePython.py? + if os.path.exists('../../../build/cli/lib'): + sys.path.append('../../../build/cli/lib') + if os.environ.get('USCXML_PYTHON_PATH') and os.path.exists(os.environ['USCXML_PYTHON_PATH']): + sys.path.append(os.environ['USCXML_PYTHON_PATH']) + + import uscxmlNativePython as uscxml + + print "Processing" + argv[1] + + interpreter = uscxml.Interpreter.fromURL(argv[1]); + state = interpreter.step() + while state != uscxml.USCXML_FINISHED: + state = interpreter.step() + + if interpreter.isInState("pass"): + sys.exit(os.EX_OK) + + sys.exit(os.EX_OSERR) + +if __name__ == "__main__": + main(sys.argv) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f5eba88..874ed16 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -9,6 +9,7 @@ if (NOT ANT_BIN) message(STATUS "No ant binary found, not generating Java tests / bindings") endif() find_program(PERL_BIN perl) +find_program(PYTHON_BIN python) find_program(GHDL_BIN ghdl) set(GHDL_VERSION "0") @@ -170,6 +171,7 @@ if (NOT BUILD_MINIMAL) # bindings "binding/java/jexl" + "binding/python/ecma" # state-machine interpreters # "fsm/ecma" @@ -301,12 +303,23 @@ if (NOT BUILD_MINIMAL) ${ANT_BIN} -Dtest.file=${W3C_TEST} -Duscxml.jar=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/uscxml.jar - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/contrib/java/bindings - ) + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/contrib/java/bindings) set_tests_properties("${TEST_NAME}" PROPERTIES DEPENDS jar) set(TEST_ADDED ON) endif () + if (PYTHON_BIN AND TEST_LANG STREQUAL "python") + add_test(NAME "${TEST_NAME}" + COMMAND + ${PYTHON_BIN} + ${PROJECT_SOURCE_DIR}/contrib/python/bindings/test-state-pass.py + ${W3C_TEST} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/contrib/python/bindings) + + set_tests_properties("${TEST_NAME}" PROPERTIES ENVIRONMENT "USCXML_PYTHON_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") + set(TEST_ADDED ON) + endif () + elseif (TEST_TYPE MATCHES "^spin.*") if (NOT ${TEST_DATAMODEL} STREQUAL "promela") -- cgit v0.12