blob: 10d5758e5f4c68c02cf01bf568d29803fedb7f21 [file] [log] [blame]
Radek Krejcicb293a32020-11-13 15:36:29 +01001# yanglint
2
3set(lintsrc
4 main.c
5 main_ni.c
Radek Krejcie9f13b12020-11-09 17:42:04 +01006 cmd.c
7 cmd_add.c
8 cmd_clear.c
9 cmd_data.c
10 cmd_list.c
Michal Vasko538be422021-10-19 14:06:59 +020011 cmd_feature.c
Radek Krejcie9f13b12020-11-09 17:42:04 +010012 cmd_load.c
13 cmd_print.c
14 cmd_searchpath.c
15 common.c
Radek Krejcicb293a32020-11-13 15:36:29 +010016 completion.c
17 configuration.c
18 linenoise/linenoise.c)
19
20set(format_sources
21 ${format_sources}
22 ${CMAKE_CURRENT_SOURCE_DIR}/*.c
23 ${CMAKE_CURRENT_SOURCE_DIR}/*.h
24 PARENT_SCOPE)
Michal Vaskob3b3afc2020-11-25 09:52:26 +010025
Michal Vasko1b0b9a12021-05-06 08:38:34 +020026add_executable(yanglint ${lintsrc} ${compatsrc})
Radek Krejcicb293a32020-11-13 15:36:29 +010027target_link_libraries(yanglint yang)
28install(TARGETS yanglint DESTINATION ${CMAKE_INSTALL_BINDIR})
29install(FILES ${PROJECT_SOURCE_DIR}/tools/lint/yanglint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
30target_include_directories(yanglint BEFORE PRIVATE ${PROJECT_BINARY_DIR})
31
Radek Krejcie868acc2020-11-13 16:42:58 +010032#
33# tests
34#
35function(add_yanglint_test)
36 cmake_parse_arguments(ADDTEST "" "NAME;SCRIPT" "" ${ARGN})
37 set(TEST_NAME yanglint_${ADDTEST_NAME})
38
Michal Vaskob3b3afc2020-11-25 09:52:26 +010039 add_test(NAME ${TEST_NAME} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/tests/${ADDTEST_SCRIPT})
40 set_property(TEST ${TEST_NAME} APPEND PROPERTY ENVIRONMENT "YANGLINT=${PROJECT_BINARY_DIR}/yanglint")
Radek Krejcie868acc2020-11-13 16:42:58 +010041endfunction(add_yanglint_test)
42
Michal Vaskocdffdab2021-06-23 14:00:10 +020043if(ENABLE_TESTS)
Radek Iša2227c662020-11-25 16:13:09 +010044 # tests of non-interactive mode using shunit2
45 find_program(PATH_SHUNIT NAMES shunit2)
46 if(NOT PATH_SHUNIT)
47 message(WARNING "'shunit2' not found! The yanglint(1) non-interactive tests will not be available.")
48 else()
49 add_yanglint_test(NAME ni_list SCRIPT shunit2/list.sh)
50 endif()
Radek Krejcie868acc2020-11-13 16:42:58 +010051
Radek Iša2227c662020-11-25 16:13:09 +010052 # tests of interactive mode using expect
53 find_program(PATH_EXPECT NAMES expect)
54 if(NOT PATH_EXPECT)
55 message(WARNING "'expect' not found! The yanglint(1) interactive tests will not be available.")
56 else()
57# add_yanglint_test(NAME in_list SCRIPT expect/list.exp)
58 endif()
Radek Krejcie868acc2020-11-13 16:42:58 +010059endif()