/vendor/phpunit/php-code-coverage/tests/tests/FilterTest.php

https://bitbucket.org/alan_cordova/api-sb-map · PHP · 194 lines · 122 code · 23 blank · 49 comment · 0 complexity · b43eb79f969e144c5619743f73106ec9 MD5 · raw file

  1. <?php
  2. /*
  3. * This file is part of the php-code-coverage package.
  4. *
  5. * (c) Sebastian Bergmann <sebastian@phpunit.de>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace SebastianBergmann\CodeCoverage;
  11. class FilterTest extends \PHPUnit_Framework_TestCase
  12. {
  13. /**
  14. * @var Filter
  15. */
  16. private $filter;
  17. /**
  18. * @var array
  19. */
  20. private $files = [];
  21. protected function setUp()
  22. {
  23. $this->filter = unserialize('O:37:"SebastianBergmann\CodeCoverage\Filter":0:{}');
  24. $this->files = [
  25. TEST_FILES_PATH . 'BankAccount.php',
  26. TEST_FILES_PATH . 'BankAccountTest.php',
  27. TEST_FILES_PATH . 'CoverageClassExtendedTest.php',
  28. TEST_FILES_PATH . 'CoverageClassTest.php',
  29. TEST_FILES_PATH . 'CoverageFunctionParenthesesTest.php',
  30. TEST_FILES_PATH . 'CoverageFunctionParenthesesWhitespaceTest.php',
  31. TEST_FILES_PATH . 'CoverageFunctionTest.php',
  32. TEST_FILES_PATH . 'CoverageMethodOneLineAnnotationTest.php',
  33. TEST_FILES_PATH . 'CoverageMethodParenthesesTest.php',
  34. TEST_FILES_PATH . 'CoverageMethodParenthesesWhitespaceTest.php',
  35. TEST_FILES_PATH . 'CoverageMethodTest.php',
  36. TEST_FILES_PATH . 'CoverageNoneTest.php',
  37. TEST_FILES_PATH . 'CoverageNotPrivateTest.php',
  38. TEST_FILES_PATH . 'CoverageNotProtectedTest.php',
  39. TEST_FILES_PATH . 'CoverageNotPublicTest.php',
  40. TEST_FILES_PATH . 'CoverageNothingTest.php',
  41. TEST_FILES_PATH . 'CoveragePrivateTest.php',
  42. TEST_FILES_PATH . 'CoverageProtectedTest.php',
  43. TEST_FILES_PATH . 'CoveragePublicTest.php',
  44. TEST_FILES_PATH . 'CoverageTwoDefaultClassAnnotations.php',
  45. TEST_FILES_PATH . 'CoveredClass.php',
  46. TEST_FILES_PATH . 'CoveredFunction.php',
  47. TEST_FILES_PATH . 'NamespaceCoverageClassExtendedTest.php',
  48. TEST_FILES_PATH . 'NamespaceCoverageClassTest.php',
  49. TEST_FILES_PATH . 'NamespaceCoverageCoversClassPublicTest.php',
  50. TEST_FILES_PATH . 'NamespaceCoverageCoversClassTest.php',
  51. TEST_FILES_PATH . 'NamespaceCoverageMethodTest.php',
  52. TEST_FILES_PATH . 'NamespaceCoverageNotPrivateTest.php',
  53. TEST_FILES_PATH . 'NamespaceCoverageNotProtectedTest.php',
  54. TEST_FILES_PATH . 'NamespaceCoverageNotPublicTest.php',
  55. TEST_FILES_PATH . 'NamespaceCoveragePrivateTest.php',
  56. TEST_FILES_PATH . 'NamespaceCoverageProtectedTest.php',
  57. TEST_FILES_PATH . 'NamespaceCoveragePublicTest.php',
  58. TEST_FILES_PATH . 'NamespaceCoveredClass.php',
  59. TEST_FILES_PATH . 'NotExistingCoveredElementTest.php',
  60. TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php',
  61. TEST_FILES_PATH . 'source_with_ignore.php',
  62. TEST_FILES_PATH . 'source_with_namespace.php',
  63. TEST_FILES_PATH . 'source_with_oneline_annotations.php',
  64. TEST_FILES_PATH . 'source_without_ignore.php',
  65. TEST_FILES_PATH . 'source_without_namespace.php'
  66. ];
  67. }
  68. /**
  69. * @covers SebastianBergmann\CodeCoverage\Filter::addFileToWhitelist
  70. * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist
  71. */
  72. public function testAddingAFileToTheWhitelistWorks()
  73. {
  74. $this->filter->addFileToWhitelist($this->files[0]);
  75. $this->assertEquals(
  76. [$this->files[0]],
  77. $this->filter->getWhitelist()
  78. );
  79. }
  80. /**
  81. * @covers SebastianBergmann\CodeCoverage\Filter::removeFileFromWhitelist
  82. * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist
  83. */
  84. public function testRemovingAFileFromTheWhitelistWorks()
  85. {
  86. $this->filter->addFileToWhitelist($this->files[0]);
  87. $this->filter->removeFileFromWhitelist($this->files[0]);
  88. $this->assertEquals([], $this->filter->getWhitelist());
  89. }
  90. /**
  91. * @covers SebastianBergmann\CodeCoverage\Filter::addDirectoryToWhitelist
  92. * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist
  93. * @depends testAddingAFileToTheWhitelistWorks
  94. */
  95. public function testAddingADirectoryToTheWhitelistWorks()
  96. {
  97. $this->filter->addDirectoryToWhitelist(TEST_FILES_PATH);
  98. $whitelist = $this->filter->getWhitelist();
  99. sort($whitelist);
  100. $this->assertEquals($this->files, $whitelist);
  101. }
  102. /**
  103. * @covers SebastianBergmann\CodeCoverage\Filter::addFilesToWhitelist
  104. * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist
  105. */
  106. public function testAddingFilesToTheWhitelistWorks()
  107. {
  108. $facade = new \File_Iterator_Facade;
  109. $files = $facade->getFilesAsArray(
  110. TEST_FILES_PATH,
  111. $suffixes = '.php'
  112. );
  113. $this->filter->addFilesToWhitelist($files);
  114. $whitelist = $this->filter->getWhitelist();
  115. sort($whitelist);
  116. $this->assertEquals($this->files, $whitelist);
  117. }
  118. /**
  119. * @covers SebastianBergmann\CodeCoverage\Filter::removeDirectoryFromWhitelist
  120. * @covers SebastianBergmann\CodeCoverage\Filter::getWhitelist
  121. * @depends testAddingADirectoryToTheWhitelistWorks
  122. */
  123. public function testRemovingADirectoryFromTheWhitelistWorks()
  124. {
  125. $this->filter->addDirectoryToWhitelist(TEST_FILES_PATH);
  126. $this->filter->removeDirectoryFromWhitelist(TEST_FILES_PATH);
  127. $this->assertEquals([], $this->filter->getWhitelist());
  128. }
  129. /**
  130. * @covers SebastianBergmann\CodeCoverage\Filter::isFile
  131. */
  132. public function testIsFile()
  133. {
  134. $this->assertFalse($this->filter->isFile('vfs://root/a/path'));
  135. $this->assertFalse($this->filter->isFile('xdebug://debug-eval'));
  136. $this->assertFalse($this->filter->isFile('eval()\'d code'));
  137. $this->assertFalse($this->filter->isFile('runtime-created function'));
  138. $this->assertFalse($this->filter->isFile('assert code'));
  139. $this->assertFalse($this->filter->isFile('regexp code'));
  140. $this->assertTrue($this->filter->isFile(__FILE__));
  141. }
  142. /**
  143. * @covers SebastianBergmann\CodeCoverage\Filter::isFiltered
  144. */
  145. public function testWhitelistedFileIsNotFiltered()
  146. {
  147. $this->filter->addFileToWhitelist($this->files[0]);
  148. $this->assertFalse($this->filter->isFiltered($this->files[0]));
  149. }
  150. /**
  151. * @covers SebastianBergmann\CodeCoverage\Filter::isFiltered
  152. */
  153. public function testNotWhitelistedFileIsFiltered()
  154. {
  155. $this->filter->addFileToWhitelist($this->files[0]);
  156. $this->assertTrue($this->filter->isFiltered($this->files[1]));
  157. }
  158. /**
  159. * @covers SebastianBergmann\CodeCoverage\Filter::isFiltered
  160. * @covers SebastianBergmann\CodeCoverage\Filter::isFile
  161. */
  162. public function testNonFilesAreFiltered()
  163. {
  164. $this->assertTrue($this->filter->isFiltered('vfs://root/a/path'));
  165. $this->assertTrue($this->filter->isFiltered('xdebug://debug-eval'));
  166. $this->assertTrue($this->filter->isFiltered('eval()\'d code'));
  167. $this->assertTrue($this->filter->isFiltered('runtime-created function'));
  168. $this->assertTrue($this->filter->isFiltered('assert code'));
  169. $this->assertTrue($this->filter->isFiltered('regexp code'));
  170. }
  171. }