mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
Added basic unit test for llvm-cov.
This test compares the output of llvm-cov against a coverage file generated by gcov. Currently, llvm-cov does not work on certain platforms (namely big-endian architectures such as PowerPC, among others). These platforms are marked as XFAIL for now, but will be fixed later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194616 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f44941d81d
commit
86e37f567b
7
test/tools/llvm-cov/Inputs/README
Normal file
7
test/tools/llvm-cov/Inputs/README
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
These inputs were pre-generated to allow for easier testing of llvm-cov.
|
||||||
|
|
||||||
|
test.gcno and test.gcda were create by running clang:
|
||||||
|
clang++ -g -ftest-coverage -fprofile-arcs test.cpp
|
||||||
|
|
||||||
|
test.cpp.gcov was created by running gcov 4.2.1:
|
||||||
|
gcov test.cpp
|
77
test/tools/llvm-cov/Inputs/test.cpp
Normal file
77
test/tools/llvm-cov/Inputs/test.cpp
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
bool on = false;
|
||||||
|
int len = 42;
|
||||||
|
double grid[10][10] = {0};
|
||||||
|
const char * hello = "world";
|
||||||
|
const char * world = "hello";
|
||||||
|
|
||||||
|
struct A {
|
||||||
|
virtual void B();
|
||||||
|
};
|
||||||
|
|
||||||
|
void A::B() {}
|
||||||
|
|
||||||
|
void useless() {}
|
||||||
|
|
||||||
|
double more_useless() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int foo() {
|
||||||
|
on = true;
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
int bar() {
|
||||||
|
len--;
|
||||||
|
return foo() + 45;
|
||||||
|
}
|
||||||
|
|
||||||
|
void assign(int ii, int jj) {
|
||||||
|
grid[ii][jj] = (ii+1) * (jj+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void initialize_grid() {
|
||||||
|
for (int ii = 0; ii < 2; ii++)
|
||||||
|
for (int jj = 0; jj < 2; jj++)
|
||||||
|
assign(ii, jj);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
initialize_grid();
|
||||||
|
|
||||||
|
int a = 2;
|
||||||
|
on = rand() % 2;
|
||||||
|
if (on) {
|
||||||
|
foo();
|
||||||
|
++a;
|
||||||
|
} else {
|
||||||
|
bar();
|
||||||
|
a += rand();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int ii = 0; ii < 10; ++ii) {
|
||||||
|
switch (rand() % 5) {
|
||||||
|
case 0:
|
||||||
|
a += rand();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
a += rand() / rand();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
a -= rand();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
a = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
A thing;
|
||||||
|
for (uint64_t ii = 0; ii < 4294967296; ++ii)
|
||||||
|
thing.B();
|
||||||
|
|
||||||
|
return a + 8 + grid[2][3] + len;
|
||||||
|
return more_useless();
|
||||||
|
}
|
82
test/tools/llvm-cov/Inputs/test.cpp.gcov
Normal file
82
test/tools/llvm-cov/Inputs/test.cpp.gcov
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
-: 0:Source:test.cpp
|
||||||
|
-: 0:Graph:test.gcno
|
||||||
|
-: 0:Data:test.gcda
|
||||||
|
-: 0:Runs:2
|
||||||
|
-: 0:Programs:1
|
||||||
|
-: 1:#include <cstdlib>
|
||||||
|
-: 2:
|
||||||
|
-: 3:bool on = false;
|
||||||
|
-: 4:int len = 42;
|
||||||
|
-: 5:double grid[10][10] = {0};
|
||||||
|
-: 6:const char * hello = "world";
|
||||||
|
-: 7:const char * world = "hello";
|
||||||
|
-: 8:
|
||||||
|
4: 9:struct A {
|
||||||
|
-: 10: virtual void B();
|
||||||
|
-: 11:};
|
||||||
|
-: 12:
|
||||||
|
8589934592: 13:void A::B() {}
|
||||||
|
-: 14:
|
||||||
|
#####: 15:void useless() {}
|
||||||
|
-: 16:
|
||||||
|
-: 17:double more_useless() {
|
||||||
|
#####: 18: return 0;
|
||||||
|
-: 19:}
|
||||||
|
-: 20:
|
||||||
|
-: 21:int foo() {
|
||||||
|
2: 22: on = true;
|
||||||
|
2: 23: return 3;
|
||||||
|
-: 24:}
|
||||||
|
-: 25:
|
||||||
|
-: 26:int bar() {
|
||||||
|
#####: 27: len--;
|
||||||
|
#####: 28: return foo() + 45;
|
||||||
|
-: 29:}
|
||||||
|
-: 30:
|
||||||
|
8: 31:void assign(int ii, int jj) {
|
||||||
|
8: 32: grid[ii][jj] = (ii+1) * (jj+1);
|
||||||
|
8: 33:}
|
||||||
|
-: 34:
|
||||||
|
-: 35:void initialize_grid() {
|
||||||
|
12: 36: for (int ii = 0; ii < 2; ii++)
|
||||||
|
24: 37: for (int jj = 0; jj < 2; jj++)
|
||||||
|
12: 38: assign(ii, jj);
|
||||||
|
2: 39:}
|
||||||
|
-: 40:
|
||||||
|
-: 41:int main() {
|
||||||
|
2: 42: initialize_grid();
|
||||||
|
-: 43:
|
||||||
|
2: 44: int a = 2;
|
||||||
|
2: 45: on = rand() % 2;
|
||||||
|
2: 46: if (on) {
|
||||||
|
2: 47: foo();
|
||||||
|
2: 48: ++a;
|
||||||
|
2: 49: } else {
|
||||||
|
#####: 50: bar();
|
||||||
|
#####: 51: a += rand();
|
||||||
|
-: 52: }
|
||||||
|
-: 53:
|
||||||
|
44: 54: for (int ii = 0; ii < 10; ++ii) {
|
||||||
|
20: 55: switch (rand() % 5) {
|
||||||
|
-: 56: case 0:
|
||||||
|
4: 57: a += rand();
|
||||||
|
4: 58: break;
|
||||||
|
-: 59: case 1:
|
||||||
|
-: 60: case 2:
|
||||||
|
2: 61: a += rand() / rand();
|
||||||
|
2: 62: break;
|
||||||
|
-: 63: case 3:
|
||||||
|
6: 64: a -= rand();
|
||||||
|
6: 65: break;
|
||||||
|
-: 66: default:
|
||||||
|
8: 67: a = -1;
|
||||||
|
8: 68: }
|
||||||
|
20: 69: }
|
||||||
|
-: 70:
|
||||||
|
2: 71: A thing;
|
||||||
|
17179869188: 72: for (uint64_t ii = 0; ii < 4294967296; ++ii)
|
||||||
|
8589934592: 73: thing.B();
|
||||||
|
-: 74:
|
||||||
|
2: 75: return a + 8 + grid[2][3] + len;
|
||||||
|
-: 76: return more_useless();
|
||||||
|
-: 77:}
|
BIN
test/tools/llvm-cov/Inputs/test.gcda
Normal file
BIN
test/tools/llvm-cov/Inputs/test.gcda
Normal file
Binary file not shown.
BIN
test/tools/llvm-cov/Inputs/test.gcno
Normal file
BIN
test/tools/llvm-cov/Inputs/test.gcno
Normal file
Binary file not shown.
1
test/tools/llvm-cov/lit.local.cfg
Normal file
1
test/tools/llvm-cov/lit.local.cfg
Normal file
@ -0,0 +1 @@
|
|||||||
|
config.suffixes = ['.test']
|
4
test/tools/llvm-cov/llvm-cov.test
Normal file
4
test/tools/llvm-cov/llvm-cov.test
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
RUN: cd %p/Inputs && llvm-cov -gcno=test.gcno -gcda=test.gcda \
|
||||||
|
RUN: | diff test.cpp.gcov -
|
||||||
|
|
||||||
|
XFAIL: ppc64-linux-gnu, s390x-linux-gnu, arm
|
Loading…
Reference in New Issue
Block a user