-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
65 lines (59 loc) · 1.82 KB
/
CMakeLists.txt
File metadata and controls
65 lines (59 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
include(BuildLuzer)
include(MakeLuaPath)
if(NOT LUA_EXECUTABLE)
message(FATAL_ERROR "${LUA_EXECUTABLE} is not found.")
endif()
lapi_tests_make_lua_path(LUA_CPATH
PATHS
${LUZER_LUA_CPATH}
)
lapi_tests_make_lua_path(LUA_PATH
PATHS
${LUZER_LUA_PATH}
${CMAKE_CURRENT_SOURCE_DIR}/?.lua
)
function(create_test)
cmake_parse_arguments(
FUZZ
""
"FILENAME"
""
${ARGN}
)
get_filename_component(test_name ${FUZZ_FILENAME} NAME_WE)
string(REPLACE "_test" "" test_prefix ${test_name})
set(dict_path ${PROJECT_SOURCE_DIR}/corpus/${test_prefix}.dict)
set(corpus_path ${PROJECT_SOURCE_DIR}/corpus/${test_prefix})
set(dict_path ${CORPUS_BASE_PATH}/${test_name}.dict)
set(corpus_path ${CORPUS_BASE_PATH}/${test_prefix})
if(IS_LUAJIT)
set(corpus_path ${CORPUS_BASE_PATH}/${test_name})
endif()
if (EXISTS ${dict_path})
set(LIBFUZZER_OPTS "${LIBFUZZER_OPTS} -dict=${dict_path}")
endif ()
if (EXISTS ${corpus_path})
set(LIBFUZZER_OPTS "${LIBFUZZER_OPTS} ${corpus_path}")
endif ()
add_test(NAME ${test_name}
COMMAND ${SHELL} -c "${LUA_EXECUTABLE} ${FUZZ_FILENAME} ${LIBFUZZER_OPTS}"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
set_tests_properties(${test_name} PROPERTIES
LABELS "lapi"
ENVIRONMENT "LUA_PATH=${LUA_PATH};LUA_CPATH=${LUA_CPATH};ASAN_OPTIONS=detect_odr_violation=0;LD_DYNAMIC_WEAK=1"
DEPENDS ${LUA_EXECUTABLE} ${LUZER_LIBRARY}
)
endfunction()
message(STATUS "Add Lua API test suite")
file(GLOB tests LIST_DIRECTORIES false ${CMAKE_CURRENT_SOURCE_DIR}/*_test.lua)
foreach(filename ${tests})
create_test(FILENAME ${filename})
endforeach()
if (NOT OSS_FUZZ)
# The test `package_require_test` is dangerous, because it
# modifies paths used by `require` to search for loaders.
set_tests_properties(package_require_test PROPERTIES
DISABLED TRUE
)
endif()