tests: do not assume that `/usr/bin/expect` exists
On my system, there's no shared `/usr/bin/`. Since the code already
tries to check whether `expect` is in the path, let's use that
information instead of hardcoding the path.
(The `shunit2` tests are OK because they go via `/usr/bin/env`, but that
one doesn't support passing multiple arguments, and that's actually
needed for the `expect -f` shebang. Unless we could depend on a
non-portable argument `--split-string` to GNU coreutils 8.30+ as per
https://stackoverflow.com/a/52979955/2245623).
diff --git a/tools/lint/CMakeLists.txt b/tools/lint/CMakeLists.txt
index 1ce072b..2693ea2 100644
--- a/tools/lint/CMakeLists.txt
+++ b/tools/lint/CMakeLists.txt
@@ -51,10 +51,18 @@
# tests
#
function(add_yanglint_test)
- cmake_parse_arguments(ADDTEST "" "NAME;SCRIPT" "" ${ARGN})
+ cmake_parse_arguments(ADDTEST "" "NAME;VIA;SCRIPT" "" ${ARGN})
set(TEST_NAME yanglint_${ADDTEST_NAME})
- add_test(NAME ${TEST_NAME} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tests/${ADDTEST_SCRIPT})
+ if(${ADDTEST_VIA} STREQUAL "bash")
+ set(WRAPPER /usr/bin/env bash)
+ elseif(${ADDTEST_VIA} STREQUAL "expect")
+ set(WRAPPER ${PATH_EXPECT})
+ else()
+ message(FATAL_ERROR "build: unexpected wrapper '${ADDTEST_VIA}'")
+ endif()
+
+ add_test(NAME ${TEST_NAME} COMMAND ${WRAPPER} ${CMAKE_CURRENT_SOURCE_DIR}/tests/${ADDTEST_SCRIPT})
set_property(TEST ${TEST_NAME} APPEND PROPERTY ENVIRONMENT "YANGLINT=${PROJECT_BINARY_DIR}/yanglint")
set_property(TEST ${TEST_NAME} APPEND PROPERTY ENVIRONMENT "YANG_MODULES_DIR=${PROJECT_SOURCE_DIR}/tests/modules/yang")
endfunction(add_yanglint_test)
@@ -65,8 +73,8 @@
if(NOT PATH_SHUNIT)
message(WARNING "'shunit2' not found! The yanglint(1) non-interactive tests will not be available.")
else()
- add_yanglint_test(NAME ni_list SCRIPT shunit2/list.sh)
- add_yanglint_test(NAME ni_feature SCRIPT shunit2/feature.sh)
+ add_yanglint_test(NAME ni_list VIA bash SCRIPT shunit2/list.sh)
+ add_yanglint_test(NAME ni_feature VIA bash SCRIPT shunit2/feature.sh)
endif()
# tests of interactive mode using expect
@@ -74,7 +82,7 @@
if(NOT PATH_EXPECT)
message(WARNING "'expect' not found! The yanglint(1) interactive tests will not be available.")
elseif(YANGLINT_INTERACTIVE)
- add_yanglint_test(NAME in_list SCRIPT expect/list.exp)
- add_yanglint_test(NAME in_feature SCRIPT expect/feature.exp)
+ add_yanglint_test(NAME in_list VIA expect SCRIPT expect/list.exp)
+ add_yanglint_test(NAME in_feature VIA expect SCRIPT expect/feature.exp)
endif()
endif()