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