3
* This file is part of the PHP_CodeCoverage package.
5
* (c) Sebastian Bergmann <sebastian@phpunit.de>
7
* For the full copyright and license information, please view the LICENSE
8
* file that was distributed with this source code.
11
if (!defined('TEST_FILES_PATH')) {
14
dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR .
15
'_files' . DIRECTORY_SEPARATOR
20
* Tests for the PHP_CodeCoverage_Filter class.
23
* @package CodeCoverage
25
* @author Sebastian Bergmann <sebastian@phpunit.de>
26
* @copyright Sebastian Bergmann <sebastian@phpunit.de>
27
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
28
* @link http://github.com/sebastianbergmann/php-code-coverage
29
* @since Class available since Release 1.0.0
31
class PHP_CodeCoverage_FilterTest extends PHPUnit_Framework_TestCase
36
protected function setUp()
38
$this->filter = unserialize('O:23:"PHP_CodeCoverage_Filter":0:{}');
41
TEST_FILES_PATH . 'BankAccount.php',
42
TEST_FILES_PATH . 'BankAccountTest.php',
43
TEST_FILES_PATH . 'CoverageClassExtendedTest.php',
44
TEST_FILES_PATH . 'CoverageClassTest.php',
45
TEST_FILES_PATH . 'CoverageFunctionParenthesesTest.php',
46
TEST_FILES_PATH . 'CoverageFunctionParenthesesWhitespaceTest.php',
47
TEST_FILES_PATH . 'CoverageFunctionTest.php',
48
TEST_FILES_PATH . 'CoverageMethodOneLineAnnotationTest.php',
49
TEST_FILES_PATH . 'CoverageMethodParenthesesTest.php',
50
TEST_FILES_PATH . 'CoverageMethodParenthesesWhitespaceTest.php',
51
TEST_FILES_PATH . 'CoverageMethodTest.php',
52
TEST_FILES_PATH . 'CoverageNoneTest.php',
53
TEST_FILES_PATH . 'CoverageNotPrivateTest.php',
54
TEST_FILES_PATH . 'CoverageNotProtectedTest.php',
55
TEST_FILES_PATH . 'CoverageNotPublicTest.php',
56
TEST_FILES_PATH . 'CoverageNothingTest.php',
57
TEST_FILES_PATH . 'CoveragePrivateTest.php',
58
TEST_FILES_PATH . 'CoverageProtectedTest.php',
59
TEST_FILES_PATH . 'CoveragePublicTest.php',
60
TEST_FILES_PATH . 'CoverageTwoDefaultClassAnnotations.php',
61
TEST_FILES_PATH . 'CoveredClass.php',
62
TEST_FILES_PATH . 'CoveredFunction.php',
63
TEST_FILES_PATH . 'NamespaceCoverageClassExtendedTest.php',
64
TEST_FILES_PATH . 'NamespaceCoverageClassTest.php',
65
TEST_FILES_PATH . 'NamespaceCoverageCoversClassPublicTest.php',
66
TEST_FILES_PATH . 'NamespaceCoverageCoversClassTest.php',
67
TEST_FILES_PATH . 'NamespaceCoverageMethodTest.php',
68
TEST_FILES_PATH . 'NamespaceCoverageNotPrivateTest.php',
69
TEST_FILES_PATH . 'NamespaceCoverageNotProtectedTest.php',
70
TEST_FILES_PATH . 'NamespaceCoverageNotPublicTest.php',
71
TEST_FILES_PATH . 'NamespaceCoveragePrivateTest.php',
72
TEST_FILES_PATH . 'NamespaceCoverageProtectedTest.php',
73
TEST_FILES_PATH . 'NamespaceCoveragePublicTest.php',
74
TEST_FILES_PATH . 'NamespaceCoveredClass.php',
75
TEST_FILES_PATH . 'NotExistingCoveredElementTest.php',
76
TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php',
77
TEST_FILES_PATH . 'source_with_ignore.php',
78
TEST_FILES_PATH . 'source_with_namespace.php',
79
TEST_FILES_PATH . 'source_with_oneline_annotations.php',
80
TEST_FILES_PATH . 'source_without_ignore.php',
81
TEST_FILES_PATH . 'source_without_namespace.php'
86
* @covers PHP_CodeCoverage_Filter::addFileToBlacklist
87
* @covers PHP_CodeCoverage_Filter::getBlacklist
89
public function testAddingAFileToTheBlacklistWorks()
91
$this->filter->addFileToBlacklist($this->files[0]);
94
array($this->files[0]), $this->filter->getBlacklist()
99
* @covers PHP_CodeCoverage_Filter::removeFileFromBlacklist
100
* @covers PHP_CodeCoverage_Filter::getBlacklist
102
public function testRemovingAFileFromTheBlacklistWorks()
104
$this->filter->addFileToBlacklist($this->files[0]);
105
$this->filter->removeFileFromBlacklist($this->files[0]);
107
$this->assertEquals(array(), $this->filter->getBlacklist());
111
* @covers PHP_CodeCoverage_Filter::addDirectoryToBlacklist
112
* @covers PHP_CodeCoverage_Filter::getBlacklist
113
* @depends testAddingAFileToTheBlacklistWorks
115
public function testAddingADirectoryToTheBlacklistWorks()
117
$this->filter->addDirectoryToBlacklist(TEST_FILES_PATH);
119
$blacklist = $this->filter->getBlacklist();
122
$this->assertEquals($this->files, $blacklist);
126
* @covers PHP_CodeCoverage_Filter::addFilesToBlacklist
127
* @covers PHP_CodeCoverage_Filter::getBlacklist
129
public function testAddingFilesToTheBlacklistWorks()
131
$facade = new File_Iterator_Facade;
132
$files = $facade->getFilesAsArray(
133
TEST_FILES_PATH, $suffixes = '.php'
136
$this->filter->addFilesToBlacklist($files);
138
$blacklist = $this->filter->getBlacklist();
141
$this->assertEquals($this->files, $blacklist);
145
* @covers PHP_CodeCoverage_Filter::removeDirectoryFromBlacklist
146
* @covers PHP_CodeCoverage_Filter::getBlacklist
147
* @depends testAddingADirectoryToTheBlacklistWorks
149
public function testRemovingADirectoryFromTheBlacklistWorks()
151
$this->filter->addDirectoryToBlacklist(TEST_FILES_PATH);
152
$this->filter->removeDirectoryFromBlacklist(TEST_FILES_PATH);
154
$this->assertEquals(array(), $this->filter->getBlacklist());
158
* @covers PHP_CodeCoverage_Filter::addFileToWhitelist
159
* @covers PHP_CodeCoverage_Filter::getWhitelist
161
public function testAddingAFileToTheWhitelistWorks()
163
$this->filter->addFileToWhitelist($this->files[0]);
166
array($this->files[0]), $this->filter->getWhitelist()
171
* @covers PHP_CodeCoverage_Filter::removeFileFromWhitelist
172
* @covers PHP_CodeCoverage_Filter::getWhitelist
174
public function testRemovingAFileFromTheWhitelistWorks()
176
$this->filter->addFileToWhitelist($this->files[0]);
177
$this->filter->removeFileFromWhitelist($this->files[0]);
179
$this->assertEquals(array(), $this->filter->getWhitelist());
183
* @covers PHP_CodeCoverage_Filter::addDirectoryToWhitelist
184
* @covers PHP_CodeCoverage_Filter::getWhitelist
185
* @depends testAddingAFileToTheWhitelistWorks
187
public function testAddingADirectoryToTheWhitelistWorks()
189
$this->filter->addDirectoryToWhitelist(TEST_FILES_PATH);
191
$whitelist = $this->filter->getWhitelist();
194
$this->assertEquals($this->files, $whitelist);
198
* @covers PHP_CodeCoverage_Filter::addFilesToWhitelist
199
* @covers PHP_CodeCoverage_Filter::getBlacklist
201
public function testAddingFilesToTheWhitelistWorks()
203
$facade = new File_Iterator_Facade;
204
$files = $facade->getFilesAsArray(
205
TEST_FILES_PATH, $suffixes = '.php'
208
$this->filter->addFilesToWhitelist($files);
210
$whitelist = $this->filter->getWhitelist();
213
$this->assertEquals($this->files, $whitelist);
217
* @covers PHP_CodeCoverage_Filter::removeDirectoryFromWhitelist
218
* @covers PHP_CodeCoverage_Filter::getWhitelist
219
* @depends testAddingADirectoryToTheWhitelistWorks
221
public function testRemovingADirectoryFromTheWhitelistWorks()
223
$this->filter->addDirectoryToWhitelist(TEST_FILES_PATH);
224
$this->filter->removeDirectoryFromWhitelist(TEST_FILES_PATH);
226
$this->assertEquals(array(), $this->filter->getWhitelist());
230
* @covers PHP_CodeCoverage_Filter::isFile
232
public function testIsFile()
234
$this->assertFalse($this->filter->isFile('vfs://root/a/path'));
235
$this->assertFalse($this->filter->isFile('xdebug://debug-eval'));
236
$this->assertFalse($this->filter->isFile('eval()\'d code'));
237
$this->assertFalse($this->filter->isFile('runtime-created function'));
238
$this->assertFalse($this->filter->isFile('assert code'));
239
$this->assertFalse($this->filter->isFile('regexp code'));
240
$this->assertTrue($this->filter->isFile(__FILE__));
244
* @covers PHP_CodeCoverage_Filter::isFiltered
246
public function testBlacklistedFileIsFiltered()
248
$this->filter->addFileToBlacklist($this->files[0]);
249
$this->assertTrue($this->filter->isFiltered($this->files[0]));
253
* @covers PHP_CodeCoverage_Filter::isFiltered
255
public function testWhitelistedFileIsNotFiltered()
257
$this->filter->addFileToWhitelist($this->files[0]);
258
$this->assertFalse($this->filter->isFiltered($this->files[0]));
262
* @covers PHP_CodeCoverage_Filter::isFiltered
264
public function testNotWhitelistedFileIsFiltered()
266
$this->filter->addFileToWhitelist($this->files[0]);
267
$this->assertTrue($this->filter->isFiltered($this->files[1]));
271
* @covers PHP_CodeCoverage_Filter::isFiltered
272
* @covers PHP_CodeCoverage_Filter::isFile
274
public function testNonFilesAreFiltered()
276
$this->assertTrue($this->filter->isFiltered('vfs://root/a/path'));
277
$this->assertTrue($this->filter->isFiltered('xdebug://debug-eval'));
278
$this->assertTrue($this->filter->isFiltered('eval()\'d code'));
279
$this->assertTrue($this->filter->isFiltered('runtime-created function'));
280
$this->assertTrue($this->filter->isFiltered('assert code'));
281
$this->assertTrue($this->filter->isFiltered('regexp code'));
282
$this->assertFalse($this->filter->isFiltered(__FILE__));