examples: run Python examples 07 and 08 as CTest smoke tests
Neither Python example was registered as a test, so `ctest -L examples` in CI skipped them entirely -- which is how 08's missing Python node went unnoticed. Add a kpn_python_example() helper (gated on KPN_BUILD_PYTHON) that runs each script with PYTHONPATH pointed at the freshly-built module, so it does not depend on cwd or a hard-coded build/python path, and register 07 and 08. Also del the network in 07 for deterministic teardown.
This commit is contained in:
parent
2b0873b61b
commit
298c9e770b
@ -30,3 +30,8 @@ net.build()
|
|||||||
net.start()
|
net.start()
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
net.stop()
|
net.stop()
|
||||||
|
|
||||||
|
# Drop the network deterministically: it holds the Python callable, which forms
|
||||||
|
# a reference cycle via globals(). Deleting the global breaks it so the network
|
||||||
|
# is reclaimed now rather than lingering to interpreter shutdown.
|
||||||
|
del net
|
||||||
|
|||||||
@ -13,6 +13,25 @@ function(kpn_example name)
|
|||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# Register a Python example script as a CTest smoke test. Runs the script with
|
||||||
|
# PYTHONPATH pointing at the freshly-built kpn_python module, so it does not
|
||||||
|
# depend on the caller's working directory or a hard-coded "build/python" path.
|
||||||
|
function(kpn_python_example name)
|
||||||
|
if(NOT KPN_BUILD_PYTHON)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
add_test(
|
||||||
|
NAME example_${name}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E env
|
||||||
|
"PYTHONPATH=$<TARGET_FILE_DIR:kpn_python>"
|
||||||
|
${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${name}/example.py
|
||||||
|
)
|
||||||
|
set_tests_properties(example_${name} PROPERTIES
|
||||||
|
TIMEOUT 15
|
||||||
|
LABELS examples
|
||||||
|
)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
kpn_example(01_hello_pipeline)
|
kpn_example(01_hello_pipeline)
|
||||||
kpn_example(02_named_ports)
|
kpn_example(02_named_ports)
|
||||||
kpn_example(03_multi_output)
|
kpn_example(03_multi_output)
|
||||||
@ -31,7 +50,9 @@ if(KPN_WEB_DEBUG)
|
|||||||
target_link_libraries(14_debug_hub PRIVATE kpn)
|
target_link_libraries(14_debug_hub PRIVATE kpn)
|
||||||
kpn_target_enable_web_debug(14_debug_hub)
|
kpn_target_enable_web_debug(14_debug_hub)
|
||||||
endif()
|
endif()
|
||||||
# 07 and 08 are Python scripts — no compiled target needed.
|
# 07 and 08 are Python scripts — no compiled target, but run as smoke tests.
|
||||||
|
kpn_python_example(07_python_network)
|
||||||
|
kpn_python_example(08_python_subport)
|
||||||
|
|
||||||
# 09 requires OpenCV — only build if found
|
# 09 requires OpenCV — only build if found
|
||||||
find_package(OpenCV QUIET COMPONENTS core imgproc highgui videoio)
|
find_package(OpenCV QUIET COMPONENTS core imgproc highgui videoio)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user