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()