Skip to content

Commit 1630b24

Browse files
committed
Restore backward compatibility and fix exception
Enable pathCoverage by default only when supported
1 parent 708ef6e commit 1630b24

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

src/CodeCoverage.php

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,24 +89,18 @@ class PHP_CodeCoverage
8989
/**
9090
* @var bool
9191
*/
92-
private $pathCoverage = false;
92+
private $pathCoverage;
9393

9494
/**
9595
* Constructor.
9696
*
9797
* @param PHP_CodeCoverage_Driver $driver
9898
* @param PHP_CodeCoverage_Filter $filter
99-
* @param bool $pathCoverage
99+
* @param null|bool $pathCoverage `null` enables path coverage if supported.
100100
* @throws PHP_CodeCoverage_RuntimeException
101101
*/
102-
public function __construct(PHP_CodeCoverage_Driver $driver = null, PHP_CodeCoverage_Filter $filter = null, $pathCoverage = true)
102+
public function __construct(PHP_CodeCoverage_Driver $driver = null, PHP_CodeCoverage_Filter $filter = null, $pathCoverage = null)
103103
{
104-
if (!is_bool($pathCoverage)) {
105-
throw PHP_CodeCoverage_Util_InvalidArgumentHelper::factory(
106-
3,
107-
'boolean'
108-
);
109-
}
110104

111105
if ($driver === null) {
112106
$driver = $this->selectDriver($pathCoverage);
@@ -116,6 +110,15 @@ public function __construct(PHP_CodeCoverage_Driver $driver = null, PHP_CodeCove
116110
$filter = new PHP_CodeCoverage_Filter;
117111
}
118112

113+
if ($pathCoverage === null) {
114+
$pathCoverage = version_compare(phpversion('xdebug'), '2.3.2', '>=');
115+
} elseif (!is_bool($pathCoverage)) {
116+
throw PHP_CodeCoverage_InvalidArgumentException::create(
117+
3,
118+
'boolean'
119+
);
120+
}
121+
119122
$this->driver = $driver;
120123
$this->filter = $filter;
121124
$this->pathCoverage = $pathCoverage;

src/CodeCoverage/Driver/Xdebug.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,10 @@ class PHP_CodeCoverage_Driver_Xdebug implements PHP_CodeCoverage_Driver
2424
/**
2525
* @param bool $pathCoverage
2626
*/
27-
public function __construct($pathCoverage = true)
27+
public function __construct($pathCoverage = false)
2828
{
29-
if (!extension_loaded('xdebug') ||
30-
version_compare(phpversion('xdebug'), '2.3.2', '<')) {
31-
throw new PHP_CodeCoverage_RuntimeException(
32-
'This driver requires Xdebug 2.3.2 (or newer)'
33-
);
29+
if (!extension_loaded('xdebug')) {
30+
throw new PHP_CodeCoverage_RuntimeException('This driver requires Xdebug');
3431
}
3532

3633
if (!ini_get('xdebug.coverage_enable')) {
@@ -42,6 +39,12 @@ public function __construct($pathCoverage = true)
4239
$this->flags = XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE;
4340

4441
if ($pathCoverage) {
42+
if (version_compare(phpversion('xdebug'), '2.3.2', '<')) {
43+
throw new PHP_CodeCoverage_RuntimeException(
44+
'Path coverage requires Xdebug 2.3.2 (or newer)'
45+
);
46+
}
47+
4548
$this->flags |= XDEBUG_CC_BRANCH_CHECK;
4649
}
4750
}

0 commit comments

Comments
 (0)