pictcode / lib / Cake / Test / Case / TestSuite / HtmlCoverageReportTest.php @ 0b1b8047
履歴 | 表示 | アノテート | ダウンロード (6.79 KB)
1 |
<?php
|
---|---|
2 |
/**
|
3 |
* Test case for HtmlCoverageReport
|
4 |
*
|
5 |
* PHP5
|
6 |
*
|
7 |
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
8 |
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
9 |
*
|
10 |
* Licensed under The MIT License
|
11 |
* For full copyright and license information, please see the LICENSE.txt
|
12 |
* Redistributions of files must retain the above copyright notice.
|
13 |
*
|
14 |
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
15 |
* @link http://cakephp.org CakePHP(tm) Project
|
16 |
* @package Cake.Test.Case.TestSuite
|
17 |
* @since CakePHP(tm) v 2.0
|
18 |
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
19 |
*/
|
20 |
|
21 |
App::uses('HtmlCoverageReport', 'TestSuite/Coverage'); |
22 |
App::uses('CakeBaseReporter', 'TestSuite/Reporter'); |
23 |
|
24 |
/**
|
25 |
* Class HtmlCoverageReportTest
|
26 |
*
|
27 |
* @package Cake.Test.Case.TestSuite
|
28 |
*/
|
29 |
class HtmlCoverageReportTest extends CakeTestCase { |
30 |
|
31 |
/**
|
32 |
* setUp
|
33 |
*
|
34 |
* @return void
|
35 |
*/
|
36 |
public function setUp() { |
37 |
parent::setUp();
|
38 |
App::build(array( |
39 |
'Plugin' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS) |
40 |
), App::RESET); |
41 |
CakePlugin::load(array('TestPlugin')); |
42 |
$reporter = new CakeBaseReporter(); |
43 |
$reporter->params = array('app' => false, 'plugin' => false, 'group' => false); |
44 |
$coverage = array(); |
45 |
$this->Coverage = new HtmlCoverageReport($coverage, $reporter); |
46 |
} |
47 |
|
48 |
/**
|
49 |
* test getting the path filters.
|
50 |
*
|
51 |
* @return void
|
52 |
*/
|
53 |
public function testGetPathFilter() { |
54 |
$this->Coverage->appTest = false; |
55 |
$result = $this->Coverage->getPathFilter(); |
56 |
$this->assertEquals(CAKE, $result); |
57 |
|
58 |
$this->Coverage->appTest = true; |
59 |
$result = $this->Coverage->getPathFilter(); |
60 |
$this->assertEquals(ROOT . DS . APP_DIR . DS, $result); |
61 |
|
62 |
$this->Coverage->appTest = false; |
63 |
$this->Coverage->pluginTest = 'TestPlugin'; |
64 |
$result = $this->Coverage->getPathFilter(); |
65 |
$this->assertEquals(CakePlugin::path('TestPlugin'), $result); |
66 |
} |
67 |
|
68 |
/**
|
69 |
* test filtering coverage data.
|
70 |
*
|
71 |
* @return void
|
72 |
*/
|
73 |
public function testFilterCoverageDataByPathRemovingElements() { |
74 |
$data = array( |
75 |
CAKE . 'dispatcher.php' => array( |
76 |
10 => -1, |
77 |
12 => 1 |
78 |
), |
79 |
APP . 'app_model.php' => array( |
80 |
50 => 1, |
81 |
52 => -1 |
82 |
) |
83 |
); |
84 |
$this->Coverage->setCoverage($data); |
85 |
$result = $this->Coverage->filterCoverageDataByPath(CAKE); |
86 |
$this->assertTrue(isset($result[CAKE . 'dispatcher.php'])); |
87 |
$this->assertFalse(isset($result[APP . 'app_model.php'])); |
88 |
} |
89 |
|
90 |
/**
|
91 |
* test generating HTML reports from file arrays.
|
92 |
*
|
93 |
* @return void
|
94 |
*/
|
95 |
public function testGenerateDiff() { |
96 |
$file = array( |
97 |
'line 1',
|
98 |
'line 2',
|
99 |
'line 3',
|
100 |
'line 4',
|
101 |
'line 5',
|
102 |
'line 6',
|
103 |
'line 7',
|
104 |
'line 8',
|
105 |
'line 9',
|
106 |
'line 10',
|
107 |
); |
108 |
$coverage = array( |
109 |
1 => array(array('id' => 'HtmlCoverageReportTest::testGenerateDiff')), |
110 |
2 => -2, |
111 |
3 => array(array('id' => 'HtmlCoverageReportTest::testGenerateDiff')), |
112 |
4 => array(array('id' => 'HtmlCoverageReportTest::testGenerateDiff')), |
113 |
5 => -1, |
114 |
6 => array(array('id' => 'HtmlCoverageReportTest::testGenerateDiff')), |
115 |
7 => array(array('id' => 'HtmlCoverageReportTest::testGenerateDiff')), |
116 |
8 => array(array('id' => 'HtmlCoverageReportTest::testGenerateDiff')), |
117 |
9 => -1, |
118 |
10 => array(array('id' => 'HtmlCoverageReportTest::testGenerateDiff')) |
119 |
); |
120 |
$result = $this->Coverage->generateDiff('myfile.php', $file, $coverage); |
121 |
$this->assertRegExp('/myfile\.php Code coverage\: \d+\.?\d*\%/', $result); |
122 |
$this->assertRegExp('/<div class="code-coverage-results" id\="coverage\-myfile\.php-' . md5('myfile.php') . '"/', $result); |
123 |
$this->assertRegExp('/<pre>/', $result); |
124 |
foreach ($file as $i => $line) { |
125 |
$this->assertTrue(strpos($line, $result) !== 0, 'Content is missing ' . $i); |
126 |
$class = 'covered'; |
127 |
if (in_array($i + 1, array(5, 9, 2))) { |
128 |
$class = 'uncovered'; |
129 |
} |
130 |
if ($i + 1 === 2) { |
131 |
$class .= ' dead'; |
132 |
} |
133 |
$this->assertTrue(strpos($class, $result) !== 0, 'Class name is wrong ' . $i); |
134 |
} |
135 |
} |
136 |
|
137 |
/**
|
138 |
* Test that coverage works with phpunit 3.6 as the data formats from coverage are totally different.
|
139 |
*
|
140 |
* @return void
|
141 |
*/
|
142 |
public function testPhpunit36Compatibility() { |
143 |
$file = array( |
144 |
'line 1',
|
145 |
'line 2',
|
146 |
'line 3',
|
147 |
'line 4',
|
148 |
'line 5',
|
149 |
'line 6',
|
150 |
'line 7',
|
151 |
'line 8',
|
152 |
'line 9',
|
153 |
'line 10',
|
154 |
); |
155 |
$coverage = array( |
156 |
1 => array('HtmlCoverageReportTest::testGenerateDiff'), |
157 |
2 => null, |
158 |
3 => array('HtmlCoverageReportTest::testGenerateDiff'), |
159 |
4 => array('HtmlCoverageReportTest::testGenerateDiff'), |
160 |
5 => array(), |
161 |
6 => array('HtmlCoverageReportTest::testGenerateDiff'), |
162 |
7 => array('HtmlCoverageReportTest::testGenerateDiff'), |
163 |
8 => array('HtmlCoverageReportTest::testGenerateDiff'), |
164 |
9 => array(), |
165 |
10 => array('HtmlCoverageReportTest::testSomething', 'HtmlCoverageReportTest::testGenerateDiff') |
166 |
); |
167 |
|
168 |
$result = $this->Coverage->generateDiff('myfile.php', $file, $coverage); |
169 |
$this->assertRegExp('/myfile\.php Code coverage\: \d+\.?\d*\%/', $result); |
170 |
$this->assertRegExp('/<div class="code-coverage-results" id\="coverage\-myfile\.php-' . md5('myfile.php') . '"/', $result); |
171 |
$this->assertRegExp('/<pre>/', $result); |
172 |
foreach ($file as $i => $line) { |
173 |
$this->assertTrue(strpos($line, $result) !== 0, 'Content is missing ' . $i); |
174 |
$class = 'covered'; |
175 |
if (in_array($i + 1, array(5, 9, 2))) { |
176 |
$class = 'uncovered'; |
177 |
} |
178 |
if ($i + 1 === 2) { |
179 |
$class .= ' dead'; |
180 |
} |
181 |
$this->assertTrue(strpos($class, $result) !== 0, 'Class name is wrong ' . $i); |
182 |
} |
183 |
} |
184 |
|
185 |
/**
|
186 |
* test that covering methods show up as title attributes for lines.
|
187 |
*
|
188 |
* @return void
|
189 |
*/
|
190 |
public function testCoveredLinesTitleAttributes() { |
191 |
$file = array( |
192 |
'line 1',
|
193 |
'line 2',
|
194 |
'line 3',
|
195 |
'line 4',
|
196 |
'line 5',
|
197 |
); |
198 |
|
199 |
$coverage = array( |
200 |
1 => array(array('id' => 'HtmlCoverageReportTest::testAwesomeness')), |
201 |
2 => -2, |
202 |
3 => array(array('id' => 'HtmlCoverageReportTest::testCakeIsSuperior')), |
203 |
4 => array(array('id' => 'HtmlCoverageReportTest::testOther')), |
204 |
5 => -1 |
205 |
); |
206 |
|
207 |
$result = $this->Coverage->generateDiff('myfile.php', $file, $coverage); |
208 |
|
209 |
$this->assertTrue(
|
210 |
strpos($result, "title=\"Covered by:\nHtmlCoverageReportTest::testAwesomeness\n\"><span class=\"line-num\">1") !== false, |
211 |
'Missing method coverage for line 1'
|
212 |
); |
213 |
$this->assertTrue(
|
214 |
strpos($result, "title=\"Covered by:\nHtmlCoverageReportTest::testCakeIsSuperior\n\"><span class=\"line-num\">3") !== false, |
215 |
'Missing method coverage for line 3'
|
216 |
); |
217 |
$this->assertTrue(
|
218 |
strpos($result, "title=\"Covered by:\nHtmlCoverageReportTest::testOther\n\"><span class=\"line-num\">4") !== false, |
219 |
'Missing method coverage for line 4'
|
220 |
); |
221 |
$this->assertTrue(
|
222 |
strpos($result, "title=\"\"><span class=\"line-num\">5") !== false, |
223 |
'Coverage report is wrong for line 5'
|
224 |
); |
225 |
} |
226 |
|
227 |
/**
|
228 |
* tearDown
|
229 |
*
|
230 |
* @return void
|
231 |
*/
|
232 |
public function tearDown() { |
233 |
CakePlugin::unload();
|
234 |
unset($this->Coverage); |
235 |
parent::tearDown();
|
236 |
} |
237 |
} |