xref: /llvm-project/compiler-rt/test/fuzzer/merge-control-file.test (revision c2df1d8a6d1cab95637a3b40d49a15e535135b33)
1# For IOS, we fail to permute the run lines properly (rdar://99889376)
2XFAIL: ios && !iossim
3RUN: mkdir -p %t
4# Use a ".exe" extension because it is needed on Windows to call system()
5# to execute itself again.
6RUN: %cpp_compiler %S/FullCoverageSetTest.cpp -o %t/T.exe
7
8RUN: rm -rf %t/T0 %t/T1 %t/T2
9RUN: mkdir -p %t/T0 %t/T1 %t/T2
10RUN: echo F..... > %t/T0/1
11RUN: echo .U.... > %t/T0/2
12RUN: echo ..Z... > %t/T0/3
13
14# Test what happens if the control file is junk.
15
16RUN: rm -f %t/T1/*; cp %t/T0/* %t/T1
17RUN: echo JUNK > %t/MCF
18RUN: %run %t/T.exe -merge=1 %t/T1 %t/T2 -merge_control_file=%t/MCF 2>&1 | FileCheck %s --check-prefix=JUNK
19RUN: echo 3 > %t/MCF; echo 0 >> %t/MCF; echo %t/T1/1 >> %t/MCF
20RUN: %run %t/T.exe -merge=1 %t/T1 %t/T2 -merge_control_file=%t/MCF 2>&1 | FileCheck %s --check-prefix=JUNK
21JUNK: MERGE-OUTER: non-empty control file provided: {{.*}}MCF
22JUNK: MERGE-OUTER: bad control file, will overwrite it
23
24
25# Check valid control files
26
27RUN: rm -f %t/T1/*; cp %t/T0/* %t/T1
28RUN: echo 3 > %t/MCF; echo 0 >> %t/MCF; echo %t/T1/1 >> %t/MCF; echo %t/T1/2 >> %t/MCF; echo %t/T1/3 >> %t/MCF
29RUN: %run %t/T.exe -merge=1 %t/T1 %t/T2 -merge_control_file=%t/MCF 2>&1 | FileCheck %s --check-prefix=OK_0
30OK_0: MERGE-OUTER: control file ok, 3 files total, first not processed file 0
31OK_0: MERGE-OUTER: 3 new files with {{.*}} new features added
32
33RUN: rm -f %t/T1/*; cp %t/T0/* %t/T1
34RUN: echo 3 > %t/MCF; echo 0 >> %t/MCF; echo %t/T1/1 >> %t/MCF; echo %t/T1/2 >> %t/MCF; echo %t/T1/3 >> %t/MCF
35RUN: echo STARTED 0 1 >> %t/MCF
36RUN: echo FT 0 11 >> %t/MCF
37RUN: echo STARTED 1 2 >> %t/MCF
38RUN: echo FT 1 12 >> %t/MCF
39RUN: %run %t/T.exe -merge=1 %t/T1 %t/T2 -merge_control_file=%t/MCF 2>&1 | FileCheck %s --check-prefix=OK_2
40OK_2: MERGE-OUTER: control file ok, 3 files total, first not processed file 2
41OK_2: MERGE-OUTER: 3 new files with {{.*}} new features added
42
43RUN: rm -f %t/T1/*; cp %t/T0/* %t/T1
44RUN: echo 3 > %t/MCF; echo 0 >> %t/MCF; echo %t/T1/1 >> %t/MCF; echo %t/T1/2 >> %t/MCF; echo %t/T1/3 >> %t/MCF
45RUN: echo STARTED 0 1 >> %t/MCF
46RUN: echo FT 0 11 >> %t/MCF
47RUN: echo STARTED 1 2 >> %t/MCF
48RUN: echo FT 1 12 >> %t/MCF
49RUN: echo STARTED 2 2 >> %t/MCF
50RUN: echo FT 2 13 >> %t/MCF
51RUN: %run %t/T.exe -merge=1 %t/T1 %t/T2 -merge_control_file=%t/MCF 2>&1 | FileCheck %s --check-prefix=OK_3
52OK_3: MERGE-OUTER: nothing to do, merge has been completed before
53
54# Test for invalid COV file_id
55RUN: rm -f %t/T1/*; cp %t/T0/* %t/T1
56RUN: echo 3 > %t/MCF; echo 0 >> %t/MCF; echo %t/T1/1 >> %t/MCF; echo %t/T1/2 >> %t/MCF; echo %t/T1/3 >> %t/MCF
57RUN: echo STARTED 0 1 >> %t/MCF
58RUN: echo FT 0 11 >> %t/MCF
59RUN: echo STARTED 1 2 >> %t/MCF
60RUN: echo FT 1 12 >> %t/MCF
61RUN: echo STARTED 2 2 >> %t/MCF
62RUN: echo FT 2 13 >> %t/MCF
63# Invalid file-id 21 here
64RUN: echo COV 21 13 >> %t/MCF
65RUN: %run %t/T.exe -merge=1 %t/T1 %t/T2 -merge_control_file=%t/MCF 2>&1 | FileCheck %s --check-prefix=COV_INVALID
66COV_INVALID: MERGE-OUTER: bad control file, will overwrite it
67