8000 [PhpUnitBridge] Added support for PHPUnit 7 in Coverage Listener · symfony/symfony@6c0e6af · GitHub
[go: up one dir, main page]

Skip to content

Commit 6c0e6af

Browse files
committed
[PhpUnitBridge] Added support for PHPUnit 7 in Coverage Listener
1 parent 01ccae8 commit 6c0e6af

File tree

6 files changed

+94
-31
lines changed

6 files changed

+94
-31
lines changed

src/Symfony/Bridge/PhpUnit/CoverageListener.php

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,10 @@
1111

1212
namespace Symfony\Bridge\PhpUnit;
1313

14-
use PHPUnit\Framework\BaseTestListener;
15-
use PHPUnit\Framework\Test;
16-
use Symfony\Bridge\PhpUnit\Legacy\CoverageListenerTrait;
17-
1814
if (class_exists('PHPUnit_Runner_Version') && version_compare(\PHPUnit_Runner_Version::id(), '6.0.0', '<')) {
19-
class_alias('Symfony\Bridge\PhpUnit\Legacy\CoverageListener', 'Symfony\Bridge\PhpUnit\CoverageListener');
20-
// Using an early return instead of a else does not work when using the PHPUnit
21-
// phar due to some weird PHP behavior (the class gets defined without executing
22-
// the code before it and so the definition is not properly conditional)
15+
class_alias('Symfony\Bridge\PhpUnit\Legacy\CoverageListenerForV5', 'Symfony\Bridge\PhpUnit\CoverageListener');
16+
} elseif (version_compare(\PHPUnit\Runner\Version::id(), '7.0.0', '<')) {
17+
class_alias('Symfony\Bridge\PhpUnit\Legacy\CoverageListenerForV6', 'Symfony\Bridge\PhpUnit\CoverageListener');
2318
} else {
24-
/**
25-
* CoverageListener adds `@covers <className>` on each test suite when possible
26-
* to make the code coverage more accurate.
27-
*
28-
* @author Grégoire Pineau <lyrixx@lyrixx.info>
29-
*/
30-
class CoverageListener extends BaseTestListener
31-
{
32-
private $trait;
33-
34-
public function __construct(callable $sutFqcnResolver = null, $warningOnSutNotFound = false)
35-
{
36-
$this->trait = new CoverageListenerTrait($sutFqcnResolver, $warningOnSutNotFound);
37-
}
38-
39-
public function startTest(Test $test)
40-
{
41-
$this->trait->startTest($test);
42-
}
43-
}
19+
class_alias('Symfony\Bridge\PhpUnit\Legacy\CoverageListenerForV7', 'Symfony\Bridge\PhpUnit\CoverageListener');
4420
}

src/Symfony/Bridge/PhpUnit/Legacy/CoverageListener.php renamed to src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerForV5.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*
2020
* @internal
2121
*/
22-
class CoverageListener extends \PHPUnit_Framework_BaseTestListener
22+
class CoverageListenerForV5 extends \PHPUnit_Framework_BaseTestListener
2323
{
2424
private $trait;
2525

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Bridge\PhpUnit\Legacy;
13+
14+
use PHPUnit\Framework\BaseTestListener;
15+
use PHPUnit\Framework\Test;
16+
17+
/**
18+
* CoverageListener adds `@covers <className>` on each test suite when possible
19+
* to make the code coverage more accurate.
20+
*
21+
* @author Grégoire Pineau <lyrixx@lyrixx.info>
22+
*
23+
* @internal
24+
*/
25+
class CoverageListenerForV6 extends BaseTestListener
26+
{
27+
private $trait;
28+
29+
public function __construct(callable $sutFqcnResolver = null, $warningOnSutNotFound = false)
30+
{
31+
$this->trait = new CoverageListenerTrait($sutFqcnResolver, $warningOnSutNotFound);
32+
}
33+
34+
public function startTest(Test $test)
35< 9E88 code class="diff-text syntax-highlighted-line addition">+
{
36+
$this->trait->startTest($test);
37+
}
38+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Bridge\PhpUnit\Legacy;
13+
14+
use PHPUnit\Framework\TestListener;
15+
use PHPUnit\Framework\TestListenerDefaultImplementation;
16+
use PHPUnit\Framework\TestSuite;
17+
18+
/**
19+
* CoverageListener adds `@covers <className>` on each test suite when possible
20+
* to make the code coverage more accurate.
21+
*
22+
* @author Grégoire Pineau <lyrixx@lyrixx.info>
23+
*
24+
* @internal
25+
*/
26+
class CoverageListenerForV7 implements TestListener
27+
{
28+
use TestListenerDefaultImplementation;
29+
30+
private $trait;
31+
32+
public function __construct(callable $sutFqcnResolver = null, $warningOnSutNotFound = false)
33+
{
34+
$this->trait = new CoverageListenerTrait($sutFqcnResolver, $warningOnSutNotFound);
35+
}
36+
37+
public function startTestSuite(TestSuite $suite): void
38+
{
39+
$this->trait->startTest($test);
40+
}
41+
}

src/Symfony/Bridge/PhpUnit/Tests/CoverageListenerTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ public function test()
1616
$this->markTestSkipped('This test cannot be run on HHVM.');
1717
}
1818

19-
if (\PHP_VERSION_ID >= 70000) {
19+
exec('type phpdbg', $output, $returnCode);
20+
21+
if (\PHP_VERSION_ID >= 70000 && 0 === $returnCode) {
2022
$php = 'phpdbg -qrr';
2123
} else {
2224
exec('php --ri xdebug -d zend_extension=xdebug.so 2> /dev/null', $output, $returnCode);

src/Symfony/Bridge/PhpUnit/Tests/Fixtures/coverage/tests/bootstrap.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,13 @@
1313
require __DIR__.'/../src/FooCov.php';
1414

1515
require __DIR__.'/../../../../Legacy/CoverageListenerTrait.php';
16+
1617
if (class_exists('PHPUnit_Runner_Version') && version_compare(\PHPUnit_Runner_Version::id(), '6.0.0', '<')) {
17-
require __DIR__.'/../../../../Legacy/CoverageListener.php';
18+
require_once __DIR__.'/../../../../Legacy/CoverageListenerForV5.php';
19+
} elseif (version_compare(\PHPUnit\Runner\Version::id(), '7.0.0', '<')) {
20+
require_once __DIR__.'/../../../../Legacy/CoverageListenerForV6.php';
21+
} else {
22+
require_once __DIR__.'/../../../../Legacy/CoverageListenerForV7.php';
1823
}
24+
1925
require __DIR__.'/../../../../CoverageListener.php';

0 commit comments

Comments
 (0)
0