forked from richardregeer/phpunit-coverage-check
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcoverage-check.php
More file actions
executable file
·60 lines (51 loc) · 1.79 KB
/
coverage-check.php
File metadata and controls
executable file
·60 lines (51 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
// Inspired by: https://ocramius.github.io/blog/automated-code-coverage-check-for-github-pull-requests-with-travis/
if (!isset($argv[1]) || !file_exists($argv[1])) {
echo 'Invalid input file provided' . PHP_EOL;
exit(1);
}
if (!isset($argv[2])) {
echo 'An integer checked percentage must be given as second parameter'. PHP_EOL;
exit(1);
}
$inputFile = $argv[1];
$percentage = min(100, max(0, (float)$argv[2]));
$xml = new SimpleXMLElement(file_get_contents($inputFile));
$metrics = $xml->xpath('//metrics');
$elements = 0;
$coveredElements = 0;
$statements = 0;
$coveredstatements = 0;
$methods = 0;
$coveredmethods = 0;
foreach ($metrics as $metric) {
$elements += (float)$metric['elements'];
$coveredElements += (float)$metric['coveredelements'];
$statements += (float)$metric['statements'];
$coveredstatements += (float)$metric['coveredstatements'];
$methods += (float)$metric['methods'];
$coveredmethods += (float)$metric['coveredmethods'];
}
$type = "default";
if (isset($argv[3])) {
$type = $argv[3];
}
switch ($type) {
case 'statment':
$TPC = $coveredstatements / $statements * 100;
break;
case 'methods':
$TPC = $coveredmethods / $methods * 100;
break;
case 'elements':
$TPC = $coveredElements / $elements * 100;
break;
default:
// See calculation: https://confluence.atlassian.com/pages/viewpage.action?pageId=79986990
$TPC = ($coveredstatements + $coveredmethods + $coveredElements) / ($statements + $methods + $elements) * 100;
}
if ($TPC < $percentage) {
echo 'Total code coverage is ' . sprintf('%0.2f', $TPC) . '%, which is below the accepted ' . $percentage . '%' . PHP_EOL;
exit(1);
}
echo 'Total code coverage is ' . sprintf('%0.2f', $TPC) . '% - OK!' . PHP_EOL;