Add lit-style tests for the Fuzzer library

Summary: Add test targets and the lit-style runner.

Test Plan: Run the tests on bot.

Reviewers: samsonov

Reviewed By: samsonov

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D7217

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227389 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kostya Serebryany 2015-01-28 22:49:25 +00:00
parent d5502c5f13
commit 408796c672
6 changed files with 64 additions and 2 deletions

View File

@ -7,3 +7,7 @@ add_library(LLVMFuzzer STATIC
FuzzerMutate.cpp
FuzzerUtil.cpp
)
if( LLVM_INCLUDE_TESTS )
add_subdirectory(test)
endif()

View File

@ -41,12 +41,12 @@ void Fuzzer::AlarmCallback() {
duration_cast<seconds>(system_clock::now() - UnitStartTime).count();
std::cerr << "ALARM: working on the last Unit for " << Seconds << " seconds"
<< std::endl;
if (Seconds > 60) {
if (Seconds >= 3) {
Print(CurrentUnit, "\n");
PrintASCII(CurrentUnit, "\n");
WriteToCrash(CurrentUnit, "timeout-");
}
abort();
exit(1);
}
void Fuzzer::ShuffleAndMinimize() {

View File

@ -0,0 +1,37 @@
set(Tests
ExactTest
InfiniteTest
NullDerefTest
SimpleTest
TimeoutTest
)
set(TestBinaries)
foreach(Test ${Tests})
add_executable(LLVMFuzzer-${Test}
EXCLUDE_FROM_ALL
${Test}.cpp
)
target_link_libraries(LLVMFuzzer-${Test}
LLVMFuzzer
)
set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
endforeach()
set_target_properties(${TestBinaries}
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
set(EXCLUDE_FROM_ALL TRUE)
add_lit_testsuite(check-fuzzer "Running Fuzzer tests"
${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${TestBinaries}
)
set(EXCLUDE_FROM_ALL FALSE)
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
)

View File

@ -0,0 +1,13 @@
RUN: ./LLVMFuzzer-SimpleTest 2>&1 | FileCheck %s --check-prefix=SimpleTest
SimpleTest: Found the target, exiting
RUN: not ./LLVMFuzzer-InfiniteTest -timeout=2 2>&1 | FileCheck %s --check-prefix=InfiniteTest
InfiniteTest: ALARM: working on the last Unit for
InfiniteTest-NOT: CRASHED; file written to timeout
RUN: not ./LLVMFuzzer-TimeoutTest -timeout=5 2>&1 | FileCheck %s --check-prefix=TimeoutTest
TimeoutTest: ALARM: working on the last Unit for
TimeoutTest: CRASHED; file written to timeout
RUN: not ./LLVMFuzzer-NullDerefTest 2>&1 | FileCheck %s --check-prefix=NullDerefTest
NullDerefTest: CRASHED; file written to crash-

6
lib/Fuzzer/test/lit.cfg Normal file
View File

@ -0,0 +1,6 @@
import lit.formats
config.name = "LLVMFuzzer"
config.test_format = lit.formats.ShTest(True)
config.suffixes = ['.test']
config.test_source_root = os.path.dirname(__file__)

View File

@ -0,0 +1,2 @@
config.test_exec_root = "@CMAKE_CURRENT_BINARY_DIR@"
lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg")