diff --git a/.github/lint-xml-configuration/lint-xml-configuration.sh b/.github/lint-xml-configuration/lint-xml-configuration.sh index f96380aa..6756bd64 100644 --- a/.github/lint-xml-configuration/lint-xml-configuration.sh +++ b/.github/lint-xml-configuration/lint-xml-configuration.sh @@ -2,7 +2,9 @@ set -ex -xmllint --noout --schema vendor/phpunit/phpunit/phpunit.xsd phpunit.xml.dist +phpunitXsd="vendor/phpunit/phpunit/phpunit.xsd" + +xmllint --noout --schema "$phpunitXsd" phpunit.xml.dist xmllint --noout --schema vendor/squizlabs/php_codesniffer/phpcs.xsd phpcs.xml.dist xmllint --noout --schema vendor/vimeo/psalm/config.xsd psalm.xml.dist -find test/ -name "phpunit*.xml*" -not -name "phpunit-files-dirs-mix-nested.xml" -print0 | xargs -0 xmllint --noout --schema vendor/phpunit/phpunit/phpunit.xsd \ No newline at end of file +find test/ -name "phpunit*.xml*" -not -name "phpunit-files-dirs-mix-nested.xml" -print0 | xargs -0 xmllint --noout --schema "$phpunitXsd" \ No newline at end of file diff --git a/README.md b/README.md index d14c4e94..0e754c23 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,14 @@ The corresponding logfiles are placed in your `sys_get_temp_dir()`. See [Logging docs](docs/logging.md) for further information. ### Generating code coverage + +Beginning from PHPUnit 9.3.4, it is strongly advised to warm the coverage cache before running any code-coverage +analysis, see [PHPUnit Changlog @ 9.3.4](https://github.com/sebastianbergmann/phpunit/blob/master/ChangeLog-9.3.md#934---2020-08-10): + +``` +vendor/bin/phpunit --warm-coverage-cache +``` + Examples assume your tests are located under `./test/unit`. ```` vendor/bin/paratest -p 1 --coverage-text test/unit diff --git a/composer.json b/composer.json index 33196ed5..cda417e3 100644 --- a/composer.json +++ b/composer.json @@ -27,18 +27,18 @@ "ext-reflection": "*", "ext-simplexml": "*", "brianium/habitat": "^1.0", - "phpunit/php-code-coverage": "^8.0", + "phpunit/php-code-coverage": "^9.1.2", "phpunit/php-timer": "^5.0", - "phpunit/phpunit": "^9.2", - "symfony/console": "^4.4 || ^5.0", - "symfony/process": "^4.4 || ^5.0" + "phpunit/phpunit": "^9.3.5", + "symfony/console": "^4.4 || ^5.1", + "symfony/process": "^4.4 || ^5.1" }, "require-dev": { - "doctrine/coding-standard": "^8.1", - "phpstan/phpstan": "^0.12.33", - "phpstan/phpstan-phpunit": "^0.12.12", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^3.12" + "doctrine/coding-standard": "^8.1.0", + "phpstan/phpstan": "^0.12.37", + "phpstan/phpstan-phpunit": "^0.12.16", + "squizlabs/php_codesniffer": "^3.5.6", + "vimeo/psalm": "^3.12.2" }, "autoload": { "psr-4": { diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 6bf226b5..773e1ffb 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -14,12 +14,6 @@ parameters: excludes_analyse: - test/fixtures/* ignoreErrors: - # @see https://github.com/phpstan/phpstan-src/pull/281 - - - message: "#^Strict comparison using \\=\\=\\= between int and false will always evaluate to false\\.$#" - count: 1 - path: src/Runners/PHPUnit/SqliteRunner.php - # Known fixtures - message: "#^Property ParaTest\\\\Runners\\\\PHPUnit\\\\ExecutableTest\\:\\:\\$process type has no value type specified in iterable type Symfony\\\\Component\\\\Process\\\\Process\\.$#" diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 907340cf..de89de35 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,33 +1,34 @@ - - - - ./test/Unit/ - - - ./test/Functional/ - - - - - - src - - - - - - - - - + + + ./test/Unit/ + + + ./test/Functional/ + + + + + src + + + + + + + + diff --git a/psalm.xml.dist b/psalm.xml.dist index 342c860b..89cb7ff9 100644 --- a/psalm.xml.dist +++ b/psalm.xml.dist @@ -13,4 +13,9 @@ + + + + + diff --git a/src/Coverage/CoverageMerger.php b/src/Coverage/CoverageMerger.php index e4e08b95..c67ae615 100644 --- a/src/Coverage/CoverageMerger.php +++ b/src/Coverage/CoverageMerger.php @@ -6,6 +6,7 @@ use RuntimeException; use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData; use SplFileObject; use function array_map; @@ -118,7 +119,8 @@ private function limitCoverageTests(CodeCoverage $coverage): void return; } - $coverage->setData(array_map( + $data = $coverage->getData(true); + $newData = array_map( function (array $lines) { return array_map(function ($value) { if (! is_array($value)) { @@ -128,7 +130,11 @@ function (array $lines) { return array_slice($value, 0, $this->test_limit); }, $lines); }, - $coverage->getData($raw = true) - )); + $data->lineCoverage(), + ); + $processedData = new ProcessedCodeCoverageData(); + $processedData->setLineCoverage($newData); + + $coverage->setData($processedData); } } diff --git a/src/Runners/PHPUnit/Options.php b/src/Runners/PHPUnit/Options.php index aabde050..26e34fc6 100644 --- a/src/Runners/PHPUnit/Options.php +++ b/src/Runners/PHPUnit/Options.php @@ -205,7 +205,7 @@ public function __construct(array $opts = []) $this->maxBatchSize = (int) $opts['max-batch-size']; $this->filter = $opts['filter']; $this->parallelSuite = $opts['parallel-suite']; - $this->passthru = $this->parsePassthru($opts['passthru-php'] ?? null); + $this->passthru = $this->parsePassthru($opts['passthru'] ?? null); $this->passthruPhp = $this->parsePassthru($opts['passthru-php'] ?? null); $this->verbose = $opts['verbose'] ?? 0; $this->coverageTestLimit = $opts['coverage-test-limit'] ?? 0; diff --git a/src/Runners/PHPUnit/Worker/BaseWorker.php b/src/Runners/PHPUnit/Worker/BaseWorker.php index 30ead645..2fc8a245 100644 --- a/src/Runners/PHPUnit/Worker/BaseWorker.php +++ b/src/Runners/PHPUnit/Worker/BaseWorker.php @@ -157,7 +157,7 @@ public function stop(): void } /** - * @param array $status + * @param array $status */ protected function setExitCode(array $status): void { diff --git a/test/Functional/Coverage/CoverageReporterTest.php b/test/Functional/Coverage/CoverageReporterTest.php index 490eb945..ccd6ca5c 100644 --- a/test/Functional/Coverage/CoverageReporterTest.php +++ b/test/Functional/Coverage/CoverageReporterTest.php @@ -107,7 +107,7 @@ public function testGenerateClover(array $coverageFiles): void static::assertFileExists($target); - $reportXml = Xml::loadFile($target); + $reportXml = (new Xml\Loader())->loadFile($target); static::assertInstanceOf('DomDocument', $reportXml, 'Incorrect clover report xml was generated'); } @@ -133,7 +133,7 @@ public function testGenerateCrap4J(array $coverageFiles): void static::assertFileExists($target); - $reportXml = Xml::loadFile($target); + $reportXml = (new Xml\Loader())->loadFile($target); static::assertInstanceOf('DomDocument', $reportXml, 'Incorrect crap4j report xml was generated'); static::assertEquals('crap_result', $reportXml->documentElement->tagName); } diff --git a/test/Unit/Coverage/CoverageMergerTest.php b/test/Unit/Coverage/CoverageMergerTest.php index 0c63fe63..9e9b3253 100644 --- a/test/Unit/Coverage/CoverageMergerTest.php +++ b/test/Unit/Coverage/CoverageMergerTest.php @@ -7,7 +7,9 @@ use ParaTest\Coverage\CoverageMerger; use ParaTest\Tests\TestBase; use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Driver\Driver; use SebastianBergmann\CodeCoverage\Filter; +use SebastianBergmann\CodeCoverage\RawCodeCoverageData; use function assert; @@ -34,20 +36,24 @@ public function testSimpleMerge(): void $secondFileFirstLine = 53; $filter = new Filter(); - $filter->addFilesToWhitelist([$firstFile, $secondFile]); - $coverage1 = new CodeCoverage(null, $filter); + $filter->includeFiles([$firstFile, $secondFile]); + + $data = RawCodeCoverageData::fromXdebugWithoutPathCoverage([ + $firstFile => [$firstFileFirstLine => 1], + $secondFile => [$secondFileFirstLine => 1], + ]); + $coverage1 = new CodeCoverage(Driver::forLineCoverage($filter), $filter); $coverage1->append( - [ - $firstFile => [$firstFileFirstLine => 1], - $secondFile => [$secondFileFirstLine => 1], - ], + $data, 'Test1' ); - $coverage2 = new CodeCoverage(null, $filter); + + $data = RawCodeCoverageData::fromXdebugWithoutPathCoverage([ + $firstFile => [$firstFileFirstLine => 1, 1 + $firstFileFirstLine => 1], + ]); + $coverage2 = new CodeCoverage(Driver::forLineCoverage($filter), $filter); $coverage2->append( - [ - $firstFile => [$firstFileFirstLine => 1, 1 + $firstFileFirstLine => 1], - ], + $data, 'Test2' ); @@ -60,7 +66,7 @@ public function testSimpleMerge(): void $this->assertInstanceOf(CodeCoverage::class, $coverage); - $data = $coverage->getData(); + $data = $coverage->getData()->lineCoverage(); $this->assertCount(2, $data[$firstFile][$firstFileFirstLine]); $this->assertEquals('Test1', $data[$firstFile][$firstFileFirstLine][0]); @@ -86,20 +92,24 @@ public function testSimpleMergeLimited(): void $secondFileFirstLine = 53; $filter = new Filter(); - $filter->addFilesToWhitelist([$firstFile, $secondFile]); - $coverage1 = new CodeCoverage(null, $filter); + $filter->includeFiles([$firstFile, $secondFile]); + + $data = RawCodeCoverageData::fromXdebugWithoutPathCoverage([ + $firstFile => [$firstFileFirstLine => 1], + $secondFile => [$secondFileFirstLine => 1], + ]); + $coverage1 = new CodeCoverage(Driver::forLineCoverage($filter), $filter); $coverage1->append( - [ - $firstFile => [$firstFileFirstLine => 1], - $secondFile => [$secondFileFirstLine => 1], - ], + $data, 'Test1' ); - $coverage2 = new CodeCoverage(null, $filter); + + $data = RawCodeCoverageData::fromXdebugWithoutPathCoverage([ + $firstFile => [$firstFileFirstLine => 1, 1 + $firstFileFirstLine => 1], + ]); + $coverage2 = new CodeCoverage(Driver::forLineCoverage($filter), $filter); $coverage2->append( - [ - $firstFile => [$firstFileFirstLine => 1, 1 + $firstFileFirstLine => 1], - ], + $data, 'Test2' ); @@ -111,7 +121,7 @@ public function testSimpleMergeLimited(): void assert($coverage instanceof CodeCoverage); $this->assertInstanceOf(CodeCoverage::class, $coverage); - $data = $coverage->getData(); + $data = $coverage->getData()->lineCoverage(); $this->assertCount(1, $data[$firstFile][$firstFileFirstLine]); $this->assertCount(1, $data[$secondFile][$secondFileFirstLine]); diff --git a/test/fixtures/coverage-tests/result_printer_test-windows.cov b/test/fixtures/coverage-tests/result_printer_test-windows.cov index 668ec52f..69888ab5 100644 --- a/test/fixtures/coverage-tests/result_printer_test-windows.cov +++ b/test/fixtures/coverage-tests/result_printer_test-windows.cov @@ -1,6 +1,43 @@ setData(array ( + +$filter = new \SebastianBergmann\CodeCoverage\Filter(); +$filter->includeFiles(array ( + 'C:\\paratest\\src\\ParaTest\\Console\\Commands\\ParaTestCommand.php', + 'C:\\paratest\\src\\ParaTest\\Console\\ParaTestApplication.php', + 'C:\\paratest\\src\\ParaTest\\Console\\Testers\\PHPUnit.php', + 'C:\\paratest\\src\\ParaTest\\Console\\Testers\\Tester.php', + 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageMerger.php', + 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporter.php', + 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporterInterface.php', + 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporterLegacy.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\Reader.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\TestCase.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\TestSuite.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\Writer.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\LogInterpreter.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\MetaProvider.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\NoClassInFileException.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedClass.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedFunction.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedObject.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\Parser.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\BaseRunner.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Configuration.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\ExecutableTest.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Options.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\ResultPrinter.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Runner.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Suite.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\SuiteLoader.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\SuitePath.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\TestFileLoader.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\TestMethod.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Worker.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\WrapperRunner.php', +)); + +$coverage = new \SebastianBergmann\CodeCoverage\CodeCoverage(new \SebastianBergmann\CodeCoverage\Driver\PcovDriver($filter), $filter); +$data = array ( 'C:\\paratest\\src\\ParaTest\\Console\\ParaTestApplication.php' => array ( 18 => @@ -5752,7 +5789,14 @@ $coverage->setData(array ( ), 176 => NULL, ), -)); +); +if (class_exists(\SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData::class)) { + $processedData = new \SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData(); + $processedData->setLineCoverage($data); + + $data = $processedData; +} +$coverage->setData($data); $coverage->setTests(array ( 'UNCOVERED_FILES_FROM_WHITELIST' => array ( @@ -5861,40 +5905,4 @@ $coverage->setTests(array ( ), )); -$filter = $coverage->filter(); -$filter->setWhitelistedFiles(array ( - 'C:\\paratest\\src\\ParaTest\\Console\\Commands\\ParaTestCommand.php' => true, - 'C:\\paratest\\src\\ParaTest\\Console\\ParaTestApplication.php' => true, - 'C:\\paratest\\src\\ParaTest\\Console\\Testers\\PHPUnit.php' => true, - 'C:\\paratest\\src\\ParaTest\\Console\\Testers\\Tester.php' => true, - 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageMerger.php' => true, - 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporter.php' => true, - 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporterInterface.php' => true, - 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporterLegacy.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\Reader.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\TestCase.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\TestSuite.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\Writer.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\LogInterpreter.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\MetaProvider.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\NoClassInFileException.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedClass.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedFunction.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedObject.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\Parser.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\BaseRunner.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Configuration.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\ExecutableTest.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Options.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\ResultPrinter.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Runner.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Suite.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\SuiteLoader.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\SuitePath.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\TestFileLoader.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\TestMethod.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Worker.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\WrapperRunner.php' => true, -)); - return $coverage; \ No newline at end of file diff --git a/test/fixtures/coverage-tests/result_printer_test.cov b/test/fixtures/coverage-tests/result_printer_test.cov index d4aa96dd..bfabbe3f 100644 --- a/test/fixtures/coverage-tests/result_printer_test.cov +++ b/test/fixtures/coverage-tests/result_printer_test.cov @@ -1,6 +1,43 @@ setData(array ( + +$filter = new \SebastianBergmann\CodeCoverage\Filter(); +$filter->includeFiles(array ( + '/home/munkie/Projects/paratest/src/ParaTest/Console/Commands/ParaTestCommand.php', + '/home/munkie/Projects/paratest/src/ParaTest/Console/ParaTestApplication.php', + '/home/munkie/Projects/paratest/src/ParaTest/Console/Testers/PHPUnit.php', + '/home/munkie/Projects/paratest/src/ParaTest/Console/Testers/Tester.php', + '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageMerger.php', + '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporter.php', + '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporterInterface.php', + '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporterLegacy.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/Reader.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/TestCase.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/TestSuite.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/Writer.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/LogInterpreter.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/MetaProvider.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/NoClassInFileException.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedClass.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedFunction.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedObject.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/Parser.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/BaseRunner.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Configuration.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/ExecutableTest.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Options.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/ResultPrinter.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Runner.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Suite.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/SuiteLoader.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/SuitePath.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/TestFileLoader.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/TestMethod.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Worker.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/WrapperRunner.php', +)); + +$coverage = new \SebastianBergmann\CodeCoverage\CodeCoverage(new \SebastianBergmann\CodeCoverage\Driver\PcovDriver($filter), $filter); +$data = array ( '/home/munkie/Projects/paratest/src/ParaTest/Console/ParaTestApplication.php' => array ( 18 => @@ -5752,7 +5789,14 @@ $coverage->setData(array ( ), 176 => NULL, ), -)); +); +if (class_exists(\SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData::class)) { + $processedData = new \SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData(); + $processedData->setLineCoverage($data); + + $data = $processedData; +} +$coverage->setData($data); $coverage->setTests(array ( 'UNCOVERED_FILES_FROM_WHITELIST' => array ( @@ -5861,40 +5905,4 @@ $coverage->setTests(array ( ), )); -$filter = $coverage->filter(); -$filter->setWhitelistedFiles(array ( - '/home/munkie/Projects/paratest/src/ParaTest/Console/Commands/ParaTestCommand.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Console/ParaTestApplication.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Console/Testers/PHPUnit.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Console/Testers/Tester.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageMerger.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporter.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporterInterface.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporterLegacy.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/Reader.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/TestCase.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/TestSuite.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/Writer.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/LogInterpreter.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/MetaProvider.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/NoClassInFileException.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedClass.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedFunction.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedObject.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/Parser.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/BaseRunner.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Configuration.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/ExecutableTest.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Options.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/ResultPrinter.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Runner.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Suite.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/SuiteLoader.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/SuitePath.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/TestFileLoader.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/TestMethod.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Worker.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/WrapperRunner.php' => true, -)); - return $coverage; \ No newline at end of file diff --git a/test/fixtures/coverage-tests/runner_test-windows.cov b/test/fixtures/coverage-tests/runner_test-windows.cov index 2c82e643..5f9b8883 100644 --- a/test/fixtures/coverage-tests/runner_test-windows.cov +++ b/test/fixtures/coverage-tests/runner_test-windows.cov @@ -1,6 +1,42 @@ setData(array ( + +$filter = new \SebastianBergmann\CodeCoverage\Filter(); +$filter->includeFiles(array ( + 'C:\\paratest\\src\\ParaTest\\Console\\Commands\\ParaTestCommand.php', + 'C:\\paratest\\src\\ParaTest\\Console\\ParaTestApplication.php', + 'C:\\paratest\\src\\ParaTest\\Console\\Testers\\PHPUnit.php', + 'C:\\paratest\\src\\ParaTest\\Console\\Testers\\Tester.php', + 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageMerger.php', + 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporter.php', + 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporterInterface.php', + 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporterLegacy.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\Reader.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\TestCase.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\TestSuite.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\Writer.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\LogInterpreter.php', + 'C:\\paratest\\src\\ParaTest\\Logging\\MetaProvider.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\NoClassInFileException.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedClass.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedFunction.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedObject.php', + 'C:\\paratest\\src\\ParaTest\\Parser\\Parser.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\BaseRunner.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Configuration.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\ExecutableTest.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Options.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\ResultPrinter.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Runner.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Suite.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\SuiteLoader.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\SuitePath.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\TestFileLoader.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\TestMethod.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Worker.php', + 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\WrapperRunner.php', +)); +$coverage = new \SebastianBergmann\CodeCoverage\CodeCoverage(new \SebastianBergmann\CodeCoverage\Driver\PcovDriver($filter), $filter); +$data = array ( 'C:\\paratest\\src\\ParaTest\\Console\\ParaTestApplication.php' => array ( 18 => @@ -3786,7 +3822,14 @@ $coverage->setData(array ( ), 176 => NULL, ), -)); +); +if (class_exists(\SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData::class)) { + $processedData = new \SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData(); + $processedData->setLineCoverage($data); + + $data = $processedData; +} +$coverage->setData($data); $coverage->setTests(array ( 'UNCOVERED_FILES_FROM_WHITELIST' => array ( @@ -3825,40 +3868,4 @@ $coverage->setTests(array ( ), )); -$filter = $coverage->filter(); -$filter->setWhitelistedFiles(array ( - 'C:\\paratest\\src\\ParaTest\\Console\\Commands\\ParaTestCommand.php' => true, - 'C:\\paratest\\src\\ParaTest\\Console\\ParaTestApplication.php' => true, - 'C:\\paratest\\src\\ParaTest\\Console\\Testers\\PHPUnit.php' => true, - 'C:\\paratest\\src\\ParaTest\\Console\\Testers\\Tester.php' => true, - 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageMerger.php' => true, - 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporter.php' => true, - 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporterInterface.php' => true, - 'C:\\paratest\\src\\ParaTest\\Coverage\\CoverageReporterLegacy.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\Reader.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\TestCase.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\TestSuite.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\JUnit\\Writer.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\LogInterpreter.php' => true, - 'C:\\paratest\\src\\ParaTest\\Logging\\MetaProvider.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\NoClassInFileException.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedClass.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedFunction.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\ParsedObject.php' => true, - 'C:\\paratest\\src\\ParaTest\\Parser\\Parser.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\BaseRunner.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Configuration.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\ExecutableTest.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Options.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\ResultPrinter.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Runner.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Suite.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\SuiteLoader.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\SuitePath.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\TestFileLoader.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\TestMethod.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\Worker.php' => true, - 'C:\\paratest\\src\\ParaTest\\Runners\\PHPUnit\\WrapperRunner.php' => true, -)); - return $coverage; \ No newline at end of file diff --git a/test/fixtures/coverage-tests/runner_test.cov b/test/fixtures/coverage-tests/runner_test.cov index 9fba364e..f8adb964 100644 --- a/test/fixtures/coverage-tests/runner_test.cov +++ b/test/fixtures/coverage-tests/runner_test.cov @@ -1,6 +1,43 @@ setData(array ( + +$filter = new \SebastianBergmann\CodeCoverage\Filter(); +$filter->includeFiles(array ( + '/home/munkie/Projects/paratest/src/ParaTest/Console/Commands/ParaTestCommand.php', + '/home/munkie/Projects/paratest/src/ParaTest/Console/ParaTestApplication.php', + '/home/munkie/Projects/paratest/src/ParaTest/Console/Testers/PHPUnit.php', + '/home/munkie/Projects/paratest/src/ParaTest/Console/Testers/Tester.php', + '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageMerger.php', + '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporter.php', + '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporterInterface.php', + '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporterLegacy.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/Reader.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/TestCase.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/TestSuite.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/Writer.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/LogInterpreter.php', + '/home/munkie/Projects/paratest/src/ParaTest/Logging/MetaProvider.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/NoClassInFileException.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedClass.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedFunction.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedObject.php', + '/home/munkie/Projects/paratest/src/ParaTest/Parser/Parser.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/BaseRunner.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Configuration.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/ExecutableTest.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Options.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/ResultPrinter.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Runner.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Suite.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/SuiteLoader.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/SuitePath.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/TestFileLoader.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/TestMethod.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Worker.php', + '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/WrapperRunner.php', +)); + +$coverage = new \SebastianBergmann\CodeCoverage\CodeCoverage(new \SebastianBergmann\CodeCoverage\Driver\PcovDriver($filter), $filter); +$data = array ( '/home/munkie/Projects/paratest/src/ParaTest/Console/ParaTestApplication.php' => array ( 18 => @@ -3786,7 +3823,14 @@ $coverage->setData(array ( ), 176 => NULL, ), -)); +); +if (class_exists(\SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData::class)) { + $processedData = new \SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData(); + $processedData->setLineCoverage($data); + + $data = $processedData; +} +$coverage->setData($data); $coverage->setTests(array ( 'UNCOVERED_FILES_FROM_WHITELIST' => array ( @@ -3825,40 +3869,4 @@ $coverage->setTests(array ( ), )); -$filter = $coverage->filter(); -$filter->setWhitelistedFiles(array ( - '/home/munkie/Projects/paratest/src/ParaTest/Console/Commands/ParaTestCommand.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Console/ParaTestApplication.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Console/Testers/PHPUnit.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Console/Testers/Tester.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageMerger.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporter.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporterInterface.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Coverage/CoverageReporterLegacy.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/Reader.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/TestCase.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/TestSuite.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/JUnit/Writer.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/LogInterpreter.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Logging/MetaProvider.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/NoClassInFileException.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedClass.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedFunction.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/ParsedObject.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Parser/Parser.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/BaseRunner.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Configuration.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/ExecutableTest.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Options.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/ResultPrinter.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Runner.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Suite.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/SuiteLoader.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/SuitePath.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/TestFileLoader.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/TestMethod.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/Worker.php' => true, - '/home/munkie/Projects/paratest/src/ParaTest/Runners/PHPUnit/WrapperRunner.php' => true, -)); - return $coverage; \ No newline at end of file