OSDN Git Service

61c6332271fafde538610db0e2fe33efd5283429
[android-x86/external-llvm.git] / lib / Fuzzer / test / merge.test
1 CHECK: BINGO
2
3 RUN: %cpp_compiler %S/FullCoverageSetTest.cpp -o %t-LLVMFuzzer-FullCoverageSetTest
4
5 RUN: rm -rf %tmp/T0 %tmp/T1 %tmp/T2
6 RUN: mkdir -p %tmp/T0 %tmp/T1 %tmp/T2
7 RUN: echo F..... > %tmp/T0/1
8 RUN: echo .U.... > %tmp/T0/2
9 RUN: echo ..Z... > %tmp/T0/3
10
11 # T1 has 3 elements, T2 is empty.
12 RUN: cp %tmp/T0/* %tmp/T1/
13 RUN: %t-LLVMFuzzer-FullCoverageSetTest         -merge=1 %tmp/T1 %tmp/T2 2>&1 | FileCheck %s --check-prefix=CHECK1
14 CHECK1: MERGE-OUTER: 3 files, 3 in the initial corpus
15 CHECK1: MERGE-OUTER: 0 new files with 0 new features added
16
17 RUN: echo ...Z.. > %tmp/T2/1
18 RUN: echo ....E. > %tmp/T2/2
19 RUN: echo .....R > %tmp/T2/3
20 RUN: echo F..... > %tmp/T2/a
21 RUN: echo .U.... > %tmp/T2/b
22 RUN: echo ..Z... > %tmp/T2/c
23
24 # T1 has 3 elements, T2 has 6 elements, only 3 are new.
25 RUN: %t-LLVMFuzzer-FullCoverageSetTest         -merge=1 %tmp/T1 %tmp/T2 2>&1 | FileCheck %s --check-prefix=CHECK2
26 CHECK2: MERGE-OUTER: 9 files, 3 in the initial corpus
27 CHECK2: MERGE-OUTER: 3 new files with 3 new features added
28
29 # Now, T1 has 6 units and T2 has no new interesting units.
30 RUN: %t-LLVMFuzzer-FullCoverageSetTest         -merge=1 %tmp/T1 %tmp/T2 2>&1 | FileCheck %s --check-prefix=CHECK3
31 CHECK3: MERGE-OUTER: 12 files, 6 in the initial corpus
32 CHECK3: MERGE-OUTER: 0 new files with 0 new features added
33
34 # Check that we respect max_len during the merge and don't crash.
35 RUN: rm %tmp/T1/*
36 RUN: cp %tmp/T0/* %tmp/T1/
37 RUN: echo looooooooong > %tmp/T2/looooooooong
38 RUN: %t-LLVMFuzzer-FullCoverageSetTest         -merge=1 %tmp/T1 %tmp/T2 -max_len=6 2>&1 | FileCheck %s --check-prefix=MAX_LEN
39 MAX_LEN: MERGE-OUTER: 3 new files
40
41 # Check that merge tolerates failures.
42 RUN: rm %tmp/T1/*
43 RUN: cp %tmp/T0/* %tmp/T1/
44 RUN: echo 'FUZZER' > %tmp/T2/FUZZER
45 RUN: %t-LLVMFuzzer-FullCoverageSetTest -merge=1 %tmp/T1 %tmp/T2 2>&1 | FileCheck %s --check-prefix=MERGE_WITH_CRASH
46 MERGE_WITH_CRASH: MERGE-OUTER: succesfull in 2 attempt(s)
47 MERGE_WITH_CRASH: MERGE-OUTER: 3 new files
48
49 # Check that we actually limit the size with max_len
50 RUN: %t-LLVMFuzzer-FullCoverageSetTest -merge=1 %tmp/T1 %tmp/T2  -max_len=5 2>&1 | FileCheck %s --check-prefix=MERGE_LEN5
51 MERGE_LEN5: MERGE-OUTER: succesfull in 1 attempt(s)
52
53 RUN: rm -rf  %tmp/T1/* %tmp/T2/*
54 RUN: not %t-LLVMFuzzer-FullCoverageSetTest -merge=1 %tmp/T1 %tmp/T2 2>&1 | FileCheck %s --check-prefix=EMPTY
55 EMPTY: MERGE-OUTER: zero succesfull attempts, exiting