diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 653184e..ea0e322 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -158,7 +158,7 @@ jobs: - name: Run tests working-directory: build run: | - ctest -C Release --output-on-failure -E "XsmpSchedulerTest|PythonTest|xsmp_example_project1Test" + ctest -C Release --output-on-failure -E "XsmpSchedulerTest" python: name: '${{matrix.os}} :: Python ${{matrix.python-version}}' runs-on: ${{matrix.os}} @@ -168,7 +168,7 @@ jobs: os: - ubuntu-latest - macos-latest -# - windows-latest + - windows-latest python-version: - '3.7' - '3.8' @@ -189,4 +189,4 @@ jobs: max_attempts: 3 retry_on: error timeout_minutes: 1 - command: python -m pytest python -v \ No newline at end of file + command: python -m pytest python -v diff --git a/cmake/PytestAddTests.cmake b/cmake/PytestAddTests.cmake index 0ca2ac1..34910f5 100644 --- a/cmake/PytestAddTests.cmake +++ b/cmake/PytestAddTests.cmake @@ -15,8 +15,8 @@ function(pytest_discover_tests_impl) # Use platform specific path separator (";" on windows else ":") and convert path to native platform (replace "/" by "\" on Windows) if (CMAKE_HOST_SYSTEM_NAME STREQUAL Windows) - string(REPLACE "][" "\\;" _LIBRARY_PATH "${_LIBRARY_PATH}") - string(REPLACE "][" "\\;" _PYTHON_PATH "${_PYTHON_PATH}") + string(REPLACE "][" "\\\\;" _LIBRARY_PATH "${_LIBRARY_PATH}") + string(REPLACE "][" "\\\\;" _PYTHON_PATH "${_PYTHON_PATH}") string(REPLACE "/" "\\\\" _LIBRARY_PATH "${_LIBRARY_PATH}") string(REPLACE "/" "\\\\" _PYTHON_PATH "${_PYTHON_PATH}") else() @@ -29,7 +29,7 @@ function(pytest_discover_tests_impl) string(APPEND _content "add_test(\"${_TEST_GROUP_NAME}\" ${_PYTHON_EXECUTABLE} -m pytest \"${_WORKING_DIRECTORY}\"\)\n" "set_tests_properties(\"${_TEST_GROUP_NAME}\" PROPERTIES ENVIRONMENT \"${_LIB_ENV_PATH}=${_LIBRARY_PATH}\")\n" - "set_tests_properties(\"${_TEST_GROUP_NAME}\" APPEND PROPERTIES ENVIRONMENT \"PYTHONPATH=${_PYTHON_PATH}\")\n" + "set_tests_properties(\"${_TEST_GROUP_NAME}\" PROPERTIES ENVIRONMENT \"PYTHONPATH=${_PYTHON_PATH}\")\n" ) foreach(env ${_ENVIRONMENT}) @@ -90,7 +90,7 @@ function(pytest_discover_tests_impl) string(APPEND _content "add_test(\"${test_name}\" ${_PYTHON_EXECUTABLE} -m pytest \"${test_case}\")\n" "set_tests_properties(\"${test_name}\" PROPERTIES ENVIRONMENT \"${_LIB_ENV_PATH}=${_LIBRARY_PATH}\")\n" - "set_tests_properties(\"${test_name}\" APPEND PROPERTIES ENVIRONMENT \"PYTHONPATH=${_PYTHON_PATH}\")\n" + "set_tests_properties(\"${test_name}\" PROPERTIES ENVIRONMENT \"PYTHONPATH=${_PYTHON_PATH}\")\n" ) foreach(env ${_ENVIRONMENT}) @@ -105,7 +105,7 @@ function(pytest_discover_tests_impl) string(APPEND _content "add_test(\"${_TEST_GROUP_NAME}\" ${_PYTHON_EXECUTABLE} -m pytest \"${_WORKING_DIRECTORY}\"\)\n" "set_tests_properties(\"${_TEST_GROUP_NAME}\" PROPERTIES ENVIRONMENT \"${_LIB_ENV_PATH}=${_LIBRARY_PATH}\")\n" - "set_tests_properties(\"${_TEST_GROUP_NAME}\" APPEND PROPERTIES ENVIRONMENT \"PYTHONPATH=${_PYTHON_PATH}\")\n" + "set_tests_properties(\"${_TEST_GROUP_NAME}\" PROPERTIES ENVIRONMENT \"PYTHONPATH=${_PYTHON_PATH}\")\n" ) foreach(env ${_ENVIRONMENT}) diff --git a/src/python/ecss_smp.h b/src/python/ecss_smp.h index 5c0535b..26a8cbe 100644 --- a/src/python/ecss_smp.h +++ b/src/python/ecss_smp.h @@ -61,6 +61,15 @@ namespace py = pybind11; namespace PYBIND11_NAMESPACE { + +template +struct polymorphic_type_hook>> { + static const void *get(const itype *src, const std::type_info *&type) { + type = src ? &typeid(*src) : nullptr; + return static_cast(src); + } +}; + struct TypeHierarchy { template @@ -220,6 +229,7 @@ class SmpClass: public detail::generic_type { record.dealloc = dealloc; record.default_holder = true; record.module_local = true; + record.is_final = true; processHierarchy(IObjectHierarchy, obj, record);