From d9643bfdf623294dde96b8fe1a02d77f95124845 Mon Sep 17 00:00:00 2001 From: Sergey Bronnikov <sergeyb@tarantool.org> Date: Tue, 30 Aug 2022 11:34:19 +0300 Subject: [PATCH] test/fuzz: add a function for generating fuzz test targets Commit 2be74a650947 ("test/cmake: add a function for generating unit test targets") added a function for generating unit test targets in CMake. This function makes code simpler and less error-prone. Proposed patch adds a similar function for generating fuzzing test targets in CMake. NO_CHANGELOG=build infrastructure updated NO_DOC=build infrastructure updated NO_TEST=build infrastructure updated --- test/fuzz/CMakeLists.txt | 75 ++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/test/fuzz/CMakeLists.txt b/test/fuzz/CMakeLists.txt index 90eccf8965..c3ff4b41b3 100644 --- a/test/fuzz/CMakeLists.txt +++ b/test/fuzz/CMakeLists.txt @@ -28,40 +28,63 @@ target_link_libraries( > ) -# Use PUBLIC to force 'fuzzer_config' for all dependent targets. -add_executable(csv_fuzzer csv_fuzzer.c) -target_link_libraries(csv_fuzzer PUBLIC csv fuzzer_config) +set(FUZZ_TEST_TARGETS "") -add_executable(uri_fuzzer uri_fuzzer.c) -target_link_libraries(uri_fuzzer PUBLIC uri fuzzer_config) +function(create_fuzz_test) + cmake_parse_arguments( + FUZZ + "" + "PREFIX" + "SOURCES;LIBRARIES" + ${ARGN} + ) + message(STATUS "Creating fuzz test ${FUZZ_PREFIX}_fuzzer") + add_executable(${FUZZ_PREFIX}_fuzzer ${FUZZ_SOURCES}) + # Use PUBLIC to force 'fuzzer_config' for all dependent targets. + target_link_libraries(${FUZZ_PREFIX}_fuzzer PUBLIC ${FUZZ_LIBRARIES}) + set(FUZZ_TEST_TARGETS ${FUZZ_TEST_TARGETS} ${FUZZ_PREFIX}_fuzzer PARENT_SCOPE) +endfunction() -add_executable(http_parser_fuzzer http_parser_fuzzer.c) -target_link_libraries(http_parser_fuzzer PUBLIC http_parser fuzzer_config) +create_fuzz_test(PREFIX csv + SOURCES csv_fuzzer.c + LIBRARIES csv fuzzer_config +) -add_executable(swim_proto_member_fuzzer swim_proto_member_fuzzer.c) -target_link_libraries(swim_proto_member_fuzzer PUBLIC swim fuzzer_config) +create_fuzz_test(PREFIX uri + SOURCES uri_fuzzer.c + LIBRARIES uri fuzzer_config +) -add_executable(swim_proto_meta_fuzzer swim_proto_meta_fuzzer.c) -target_link_libraries(swim_proto_meta_fuzzer PUBLIC swim fuzzer_config) +create_fuzz_test(PREFIX http_parser + SOURCES http_parser_fuzzer.c + LIBRARIES http_parser fuzzer_config +) -add_executable(datetime_parse_full_fuzzer datetime_parse_full_fuzzer.c) -target_link_libraries(datetime_parse_full_fuzzer PUBLIC core fuzzer_config) +create_fuzz_test(PREFIX swim_proto_member + SOURCES swim_proto_member_fuzzer.c + LIBRARIES swim fuzzer_config +) -add_executable(datetime_strptime_fuzzer datetime_strptime_fuzzer.c) -target_link_libraries(datetime_strptime_fuzzer PUBLIC core fuzzer_config) +create_fuzz_test(PREFIX swim_proto_meta + SOURCES swim_proto_meta_fuzzer.c + LIBRARIES swim fuzzer_config +) -add_executable(mp_datetime_fuzzer mp_datetime_fuzzer.c) -target_link_libraries(mp_datetime_fuzzer PUBLIC core fuzzer_config) +create_fuzz_test(PREFIX datetime_parse_full + SOURCES datetime_parse_full_fuzzer.c + LIBRARIES core fuzzer_config +) + +create_fuzz_test(PREFIX datetime_strptime + SOURCES datetime_strptime_fuzzer.c + LIBRARIES core fuzzer_config +) -set(fuzzing_binaries csv_fuzzer - datetime_parse_full_fuzzer - datetime_strptime_fuzzer - http_parser_fuzzer - mp_datetime_fuzzer - swim_proto_member_fuzzer - swim_proto_meta_fuzzer - uri_fuzzer) +create_fuzz_test(PREFIX mp_datetime + SOURCES mp_datetime_fuzzer.c + LIBRARIES core fuzzer_config +) add_custom_target(fuzzers - DEPENDS ${fuzzing_binaries} + DEPENDS ${FUZZ_TEST_TARGETS} COMMENT "Build fuzzers") -- GitLab