PageRenderTime 36ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/phpunit/php-code-coverage/Tests/PHP/CodeCoverage/FilterTest.php

https://gitlab.com/oytunistrator/92five
PHP | 305 lines | 159 code | 34 blank | 112 comment | 1 complexity | b80842c135b7b048db9adafb9f0a3cc1 MD5 | raw file
  1. <?php
  2. /**
  3. * PHP_CodeCoverage
  4. *
  5. * Copyright (c) 2009-2014, Sebastian Bergmann <sebastian@phpunit.de>.
  6. * All rights reserved.
  7. *
  8. * Redistribution and use in source and binary forms, with or without
  9. * modification, are permitted provided that the following conditions
  10. * are met:
  11. *
  12. * * Redistributions of source code must retain the above copyright
  13. * notice, this list of conditions and the following disclaimer.
  14. *
  15. * * Redistributions in binary form must reproduce the above copyright
  16. * notice, this list of conditions and the following disclaimer in
  17. * the documentation and/or other materials provided with the
  18. * distribution.
  19. *
  20. * * Neither the name of Sebastian Bergmann nor the names of his
  21. * contributors may be used to endorse or promote products derived
  22. * from this software without specific prior written permission.
  23. *
  24. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  25. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  26. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  27. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  28. * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  29. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  30. * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  31. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  32. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  33. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  34. * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  35. * POSSIBILITY OF SUCH DAMAGE.
  36. *
  37. * @category PHP
  38. * @package CodeCoverage
  39. * @subpackage Tests
  40. * @author Sebastian Bergmann <sebastian@phpunit.de>
  41. * @copyright 2009-2014 Sebastian Bergmann <sebastian@phpunit.de>
  42. * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
  43. * @link http://github.com/sebastianbergmann/php-code-coverage
  44. * @since File available since Release 1.0.0
  45. */
  46. if (!defined('TEST_FILES_PATH')) {
  47. define(
  48. 'TEST_FILES_PATH',
  49. dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR .
  50. '_files' . DIRECTORY_SEPARATOR
  51. );
  52. }
  53. /**
  54. * Tests for the PHP_CodeCoverage_Filter class.
  55. *
  56. * @category PHP
  57. * @package CodeCoverage
  58. * @subpackage Tests
  59. * @author Sebastian Bergmann <sebastian@phpunit.de>
  60. * @copyright 2009-2014 Sebastian Bergmann <sebastian@phpunit.de>
  61. * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
  62. * @link http://github.com/sebastianbergmann/php-code-coverage
  63. * @since Class available since Release 1.0.0
  64. */
  65. class PHP_CodeCoverage_FilterTest extends PHPUnit_Framework_TestCase
  66. {
  67. protected $filter;
  68. protected $files;
  69. protected function setUp()
  70. {
  71. $this->filter = unserialize('O:23:"PHP_CodeCoverage_Filter":0:{}');
  72. $this->files = array(
  73. TEST_FILES_PATH . 'BankAccount.php',
  74. TEST_FILES_PATH . 'BankAccountTest.php',
  75. TEST_FILES_PATH . 'CoverageClassExtendedTest.php',
  76. TEST_FILES_PATH . 'CoverageClassTest.php',
  77. TEST_FILES_PATH . 'CoverageFunctionParenthesesTest.php',
  78. TEST_FILES_PATH . 'CoverageFunctionParenthesesWhitespaceTest.php',
  79. TEST_FILES_PATH . 'CoverageFunctionTest.php',
  80. TEST_FILES_PATH . 'CoverageMethodOneLineAnnotationTest.php',
  81. TEST_FILES_PATH . 'CoverageMethodParenthesesTest.php',
  82. TEST_FILES_PATH . 'CoverageMethodParenthesesWhitespaceTest.php',
  83. TEST_FILES_PATH . 'CoverageMethodTest.php',
  84. TEST_FILES_PATH . 'CoverageNoneTest.php',
  85. TEST_FILES_PATH . 'CoverageNotPrivateTest.php',
  86. TEST_FILES_PATH . 'CoverageNotProtectedTest.php',
  87. TEST_FILES_PATH . 'CoverageNotPublicTest.php',
  88. TEST_FILES_PATH . 'CoverageNothingTest.php',
  89. TEST_FILES_PATH . 'CoveragePrivateTest.php',
  90. TEST_FILES_PATH . 'CoverageProtectedTest.php',
  91. TEST_FILES_PATH . 'CoveragePublicTest.php',
  92. TEST_FILES_PATH . 'CoverageTwoDefaultClassAnnotations.php',
  93. TEST_FILES_PATH . 'CoveredClass.php',
  94. TEST_FILES_PATH . 'CoveredFunction.php',
  95. TEST_FILES_PATH . 'NamespaceCoverageClassExtendedTest.php',
  96. TEST_FILES_PATH . 'NamespaceCoverageClassTest.php',
  97. TEST_FILES_PATH . 'NamespaceCoverageCoversClassPublicTest.php',
  98. TEST_FILES_PATH . 'NamespaceCoverageCoversClassTest.php',
  99. TEST_FILES_PATH . 'NamespaceCoverageMethodTest.php',
  100. TEST_FILES_PATH . 'NamespaceCoverageNotPrivateTest.php',
  101. TEST_FILES_PATH . 'NamespaceCoverageNotProtectedTest.php',
  102. TEST_FILES_PATH . 'NamespaceCoverageNotPublicTest.php',
  103. TEST_FILES_PATH . 'NamespaceCoveragePrivateTest.php',
  104. TEST_FILES_PATH . 'NamespaceCoverageProtectedTest.php',
  105. TEST_FILES_PATH . 'NamespaceCoveragePublicTest.php',
  106. TEST_FILES_PATH . 'NamespaceCoveredClass.php',
  107. TEST_FILES_PATH . 'NotExistingCoveredElementTest.php',
  108. TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php',
  109. TEST_FILES_PATH . 'source_with_ignore.php',
  110. TEST_FILES_PATH . 'source_with_namespace.php',
  111. TEST_FILES_PATH . 'source_with_oneline_annotations.php',
  112. TEST_FILES_PATH . 'source_without_ignore.php',
  113. TEST_FILES_PATH . 'source_without_namespace.php'
  114. );
  115. }
  116. /**
  117. * @covers PHP_CodeCoverage_Filter::addFileToBlacklist
  118. * @covers PHP_CodeCoverage_Filter::getBlacklist
  119. */
  120. public function testAddingAFileToTheBlacklistWorks()
  121. {
  122. $this->filter->addFileToBlacklist($this->files[0]);
  123. $this->assertEquals(
  124. array($this->files[0]), $this->filter->getBlacklist()
  125. );
  126. }
  127. /**
  128. * @covers PHP_CodeCoverage_Filter::removeFileFromBlacklist
  129. * @covers PHP_CodeCoverage_Filter::getBlacklist
  130. */
  131. public function testRemovingAFileFromTheBlacklistWorks()
  132. {
  133. $this->filter->addFileToBlacklist($this->files[0]);
  134. $this->filter->removeFileFromBlacklist($this->files[0]);
  135. $this->assertEquals(array(), $this->filter->getBlacklist());
  136. }
  137. /**
  138. * @covers PHP_CodeCoverage_Filter::addDirectoryToBlacklist
  139. * @covers PHP_CodeCoverage_Filter::getBlacklist
  140. * @depends testAddingAFileToTheBlacklistWorks
  141. */
  142. public function testAddingADirectoryToTheBlacklistWorks()
  143. {
  144. $this->filter->addDirectoryToBlacklist(TEST_FILES_PATH);
  145. $blacklist = $this->filter->getBlacklist();
  146. sort($blacklist);
  147. $this->assertEquals($this->files, $blacklist);
  148. }
  149. /**
  150. * @covers PHP_CodeCoverage_Filter::addFilesToBlacklist
  151. * @covers PHP_CodeCoverage_Filter::getBlacklist
  152. */
  153. public function testAddingFilesToTheBlacklistWorks()
  154. {
  155. $facade = new File_Iterator_Facade;
  156. $files = $facade->getFilesAsArray(
  157. TEST_FILES_PATH, $suffixes = '.php'
  158. );
  159. $this->filter->addFilesToBlacklist($files);
  160. $blacklist = $this->filter->getBlacklist();
  161. sort($blacklist);
  162. $this->assertEquals($this->files, $blacklist);
  163. }
  164. /**
  165. * @covers PHP_CodeCoverage_Filter::removeDirectoryFromBlacklist
  166. * @covers PHP_CodeCoverage_Filter::getBlacklist
  167. * @depends testAddingADirectoryToTheBlacklistWorks
  168. */
  169. public function testRemovingADirectoryFromTheBlacklistWorks()
  170. {
  171. $this->filter->addDirectoryToBlacklist(TEST_FILES_PATH);
  172. $this->filter->removeDirectoryFromBlacklist(TEST_FILES_PATH);
  173. $this->assertEquals(array(), $this->filter->getBlacklist());
  174. }
  175. /**
  176. * @covers PHP_CodeCoverage_Filter::addFileToWhitelist
  177. * @covers PHP_CodeCoverage_Filter::getWhitelist
  178. */
  179. public function testAddingAFileToTheWhitelistWorks()
  180. {
  181. $this->filter->addFileToWhitelist($this->files[0]);
  182. $this->assertEquals(
  183. array($this->files[0]), $this->filter->getWhitelist()
  184. );
  185. }
  186. /**
  187. * @covers PHP_CodeCoverage_Filter::removeFileFromWhitelist
  188. * @covers PHP_CodeCoverage_Filter::getWhitelist
  189. */
  190. public function testRemovingAFileFromTheWhitelistWorks()
  191. {
  192. $this->filter->addFileToWhitelist($this->files[0]);
  193. $this->filter->removeFileFromWhitelist($this->files[0]);
  194. $this->assertEquals(array(), $this->filter->getWhitelist());
  195. }
  196. /**
  197. * @covers PHP_CodeCoverage_Filter::addDirectoryToWhitelist
  198. * @covers PHP_CodeCoverage_Filter::getWhitelist
  199. * @depends testAddingAFileToTheWhitelistWorks
  200. */
  201. public function testAddingADirectoryToTheWhitelistWorks()
  202. {
  203. $this->filter->addDirectoryToWhitelist(TEST_FILES_PATH);
  204. $whitelist = $this->filter->getWhitelist();
  205. sort($whitelist);
  206. $this->assertEquals($this->files, $whitelist);
  207. }
  208. /**
  209. * @covers PHP_CodeCoverage_Filter::addFilesToWhitelist
  210. * @covers PHP_CodeCoverage_Filter::getBlacklist
  211. */
  212. public function testAddingFilesToTheWhitelistWorks()
  213. {
  214. $facade = new File_Iterator_Facade;
  215. $files = $facade->getFilesAsArray(
  216. TEST_FILES_PATH, $suffixes = '.php'
  217. );
  218. $this->filter->addFilesToWhitelist($files);
  219. $whitelist = $this->filter->getWhitelist();
  220. sort($whitelist);
  221. $this->assertEquals($this->files, $whitelist);
  222. }
  223. /**
  224. * @covers PHP_CodeCoverage_Filter::removeDirectoryFromWhitelist
  225. * @covers PHP_CodeCoverage_Filter::getWhitelist
  226. * @depends testAddingADirectoryToTheWhitelistWorks
  227. */
  228. public function testRemovingADirectoryFromTheWhitelistWorks()
  229. {
  230. $this->filter->addDirectoryToWhitelist(TEST_FILES_PATH);
  231. $this->filter->removeDirectoryFromWhitelist(TEST_FILES_PATH);
  232. $this->assertEquals(array(), $this->filter->getWhitelist());
  233. }
  234. /**
  235. * @covers PHP_CodeCoverage_Filter::isFile
  236. */
  237. public function testIsFile()
  238. {
  239. $this->assertFalse($this->filter->isFile('vfs://root/a/path'));
  240. $this->assertFalse($this->filter->isFile('xdebug://debug-eval'));
  241. $this->assertFalse($this->filter->isFile('eval()\'d code'));
  242. $this->assertFalse($this->filter->isFile('runtime-created function'));
  243. $this->assertFalse($this->filter->isFile('assert code'));
  244. $this->assertFalse($this->filter->isFile('regexp code'));
  245. $this->assertTrue($this->filter->isFile('filename'));
  246. }
  247. /**
  248. * @covers PHP_CodeCoverage_Filter::isFiltered
  249. */
  250. public function testBlacklistedFileIsFiltered()
  251. {
  252. $this->filter->addFileToBlacklist($this->files[0]);
  253. $this->assertTrue($this->filter->isFiltered($this->files[0]));
  254. }
  255. /**
  256. * @covers PHP_CodeCoverage_Filter::isFiltered
  257. */
  258. public function testWhitelistedFileIsNotFiltered()
  259. {
  260. $this->filter->addFileToWhitelist($this->files[0]);
  261. $this->assertFalse($this->filter->isFiltered($this->files[0]));
  262. }
  263. /**
  264. * @covers PHP_CodeCoverage_Filter::isFiltered
  265. */
  266. public function testNotWhitelistedFileIsFiltered()
  267. {
  268. $this->filter->addFileToWhitelist($this->files[0]);
  269. $this->assertTrue($this->filter->isFiltered($this->files[1]));
  270. }
  271. }