Skip to content

Commit f903a35

Browse files
committed
Add support for php-code-coverage v13
1 parent 1293610 commit f903a35

7 files changed

Lines changed: 42 additions & 28 deletions

File tree

.github/workflows/ci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ jobs:
2020
- "8.3"
2121

2222
php-code-coverage-version:
23+
- "^13.0"
2324
- "^12.3"
2425

2526
symfony-version:
@@ -37,6 +38,10 @@ jobs:
3738
- "xdebug"
3839
- "pcov"
3940

41+
exclude:
42+
- php-version: "8.3"
43+
php-code-coverage-version: "^13.0"
44+
4045
steps:
4146
- uses: actions/checkout@v4
4247
with:

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Changelog
22

3-
## [Unreleased] - 2025-xx-xx
3+
## [Unreleased] - 2026-xx-xx
4+
5+
## [5.4.1] - 2026-02-09
6+
### Added
7+
- Compatibility with `phpunit/php-code-coverage` v13
48

59
## [5.4.0] - 2025-06-09
610
### Added

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
"composer-runtime-api": "^2.0",
1717
"behat/behat": "^3.27",
1818
"composer/semver": "^3.0",
19-
"phpunit/php-code-coverage": "^12.3",
19+
"phpunit/php-code-coverage": "^12.3||^13.0",
2020
"symfony/config": "^5.4.45||^6.4.24||^7.3",
2121
"symfony/console": "^5.4.45||^6.4.24||^7.3",
2222
"symfony/dependency-injection": "^5.4.45||^6.4.24||^7.3",
2323
"symfony/event-dispatcher": "^5.4.45||^6.4.24||^7.0.3"
2424
},
2525
"require-dev": {
2626
"friendsofphp/php-cs-fixer": "^3.88.2",
27-
"phpunit/phpunit": "^10.5.27||^11.4.3||^12.0",
27+
"phpunit/phpunit": "^12.3||^13.0",
2828
"symfony/filesystem": "^5.4.45||^6.4.24||^7.3"
2929
},
3030
"suggest": {

phpunit.xml.dist

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
displayDetailsOnTestsThatTriggerErrors="true"
1414
displayDetailsOnTestsThatTriggerWarnings="true"
1515
displayDetailsOnTestsThatTriggerNotices="true"
16+
displayDetailsOnPhpunitNotices="true"
17+
displayDetailsOnPhpunitDeprecations="true"
18+
displayDetailsOnAllIssues="true"
1619
>
1720

1821
<testsuites>

tests/EventSubscriberTest.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function testCanSubscribeToEvents(): void
3838

3939
public function testBeforeScenarioWithNoCoverage(): void
4040
{
41-
$event = $this->createMock(ScenarioTested::class);
41+
$event = $this->createStub(ScenarioTested::class);
4242

4343
$subscriber = new EventSubscriber(new ReportService([]), null);
4444
$subscriber->beforeScenario($event);
@@ -48,7 +48,7 @@ public function testBeforeScenarioWithNoCoverage(): void
4848

4949
public function testAfterScenarioWithNoCoverage(): void
5050
{
51-
$event = $this->createMock(ScenarioTested::class);
51+
$event = $this->createStub(ScenarioTested::class);
5252

5353
$subscriber = new EventSubscriber(new ReportService([]), null);
5454
$subscriber->afterScenario($event);
@@ -58,7 +58,7 @@ public function testAfterScenarioWithNoCoverage(): void
5858

5959
public function testAfterExerciseWithNoCoverage(): void
6060
{
61-
$event = $this->createMock(ExerciseCompleted::class);
61+
$event = $this->createStub(ExerciseCompleted::class);
6262

6363
$subscriber = new EventSubscriber(new ReportService([]), null);
6464
$subscriber->afterExercise($event);
@@ -68,13 +68,13 @@ public function testAfterExerciseWithNoCoverage(): void
6868

6969
public function testScenarioWithCoverage(): void
7070
{
71-
$scenario = $this->createMock(ScenarioNode::class);
71+
$scenario = $this->createStub(ScenarioNode::class);
7272
$scenario->method('getLine')->willReturn(123);
7373

74-
$feature = $this->createMock(FeatureNode::class);
74+
$feature = $this->createStub(FeatureNode::class);
7575
$feature->method('getFile')->willReturn('/tmp/file');
7676

77-
$event = $this->createMock(ScenarioTested::class);
77+
$event = $this->createStub(ScenarioTested::class);
7878
$event->method('getScenario')->willReturn($scenario);
7979
$event->method('getFeature')->willReturn($feature);
8080

@@ -97,9 +97,9 @@ public function testScenarioWithCoverage(): void
9797

9898
public function testAfterExerciseWithCoverage(): void
9999
{
100-
$event = $this->createMock(ExerciseCompleted::class);
100+
$event = $this->createStub(ExerciseCompleted::class);
101101

102-
$driver = $this->createMock(Driver::class);
102+
$driver = $this->createStub(Driver::class);
103103

104104
$codeCoverage = new CodeCoverage($driver, new Filter());
105105

tests/ExtensionTest.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use DVDoug\Behat\CodeCoverage\Extension;
1313
use DVDoug\Behat\CodeCoverage\Service\ReportService;
1414
use DVDoug\Behat\CodeCoverage\Subscriber\EventSubscriber;
15+
use PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations;
1516
use PHPUnit\Framework\TestCase;
1617
use ReflectionClass;
1718
use SebastianBergmann\CodeCoverage\CodeCoverage;
@@ -76,8 +77,8 @@ public function testContainerBuildsIncludingCoveredFiles(): void
7677
$this->markTestSkipped('Requires code coverage enabled');
7778
}
7879

79-
$input = $this->createMock(InputInterface::class);
80-
$output = $this->createMock(OutputInterface::class);
80+
$input = $this->createStub(InputInterface::class);
81+
$output = $this->createStub(OutputInterface::class);
8182

8283
$container = new ContainerBuilder();
8384

@@ -132,8 +133,8 @@ public function testContainerBuildsExcludingCoveredFiles(): void
132133
$this->markTestSkipped('Requires code coverage enabled');
133134
}
134135

135-
$input = $this->createMock(InputInterface::class);
136-
$output = $this->createMock(OutputInterface::class);
136+
$input = $this->createStub(InputInterface::class);
137+
$output = $this->createStub(OutputInterface::class);
137138

138139
$container = new ContainerBuilder();
139140

@@ -180,9 +181,9 @@ public function testContainerBuildsExcludingCoveredFiles(): void
180181

181182
public function testContainerBuildsWithCoverageSkipped(): void
182183
{
183-
$input = $this->createMock(InputInterface::class);
184+
$input = $this->createStub(InputInterface::class);
184185
$input->method('hasParameterOption')->with($this->equalTo('--no-coverage'))->willReturn(true);
185-
$output = $this->createMock(OutputInterface::class);
186+
$output = $this->createStub(OutputInterface::class);
186187

187188
$container = new ContainerBuilder();
188189

@@ -231,12 +232,13 @@ public function testContainerBuildsWithCoverageSkipped(): void
231232
self::assertNull($container->getDefinition(EventSubscriber::class)->getArgument(1));
232233
}
233234

235+
#[AllowMockObjectsWithoutExpectations]
234236
public function testContainerBuildsWithCoverageUnavailable(): void
235237
{
236238
$driverClassReflection = new ReflectionClass(Driver::class);
237239

238-
$input = $this->createMock(InputInterface::class);
239-
$output = $this->createMock(OutputInterface::class);
240+
$input = $this->createStub(InputInterface::class);
241+
$output = $this->createStub(OutputInterface::class);
240242

241243
$container = new ContainerBuilder();
242244

tests/ReportServiceTest.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class ReportServiceTest extends TestCase
2222
{
2323
public function testCanGenerateTextReport(): void
2424
{
25-
$driver = $this->createMock(Driver::class);
25+
$driver = $this->createStub(Driver::class);
2626
$coverage = new CodeCoverage($driver, new Filter());
2727

2828
$reportService = new ReportService(
@@ -50,7 +50,7 @@ public function testCanGenerateCloverReport(): void
5050
$reportFilename = sys_get_temp_dir() . '/clover.xml';
5151
$filesystem->remove($reportFilename);
5252

53-
$driver = $this->createMock(Driver::class);
53+
$driver = $this->createStub(Driver::class);
5454
$coverage = new CodeCoverage($driver, new Filter());
5555

5656
$reportService = new ReportService(
@@ -76,7 +76,7 @@ public function testCanGenerateOpenCloverReport(): void
7676
$reportFilename = sys_get_temp_dir() . '/openclover.xml';
7777
$filesystem->remove($reportFilename);
7878

79-
$driver = $this->createMock(Driver::class);
79+
$driver = $this->createStub(Driver::class);
8080
$coverage = new CodeCoverage($driver, new Filter());
8181

8282
$reportService = new ReportService(
@@ -102,7 +102,7 @@ public function testCanGenerateCrap4jReport(): void
102102
$reportFilename = sys_get_temp_dir() . '/crap4j.xml';
103103
$filesystem->remove($reportFilename);
104104

105-
$driver = $this->createMock(Driver::class);
105+
$driver = $this->createStub(Driver::class);
106106
$coverage = new CodeCoverage($driver, new Filter());
107107

108108
$reportService = new ReportService(
@@ -128,7 +128,7 @@ public function testCanGeneratePHPReport(): void
128128
$reportFilename = sys_get_temp_dir() . '/report.php';
129129
$filesystem->remove($reportFilename);
130130

131-
$driver = $this->createMock(Driver::class);
131+
$driver = $this->createStub(Driver::class);
132132
$coverage = new CodeCoverage($driver, new Filter());
133133

134134
$reportService = new ReportService(
@@ -153,7 +153,7 @@ public function testCanGenerateHTMLReport(): void
153153
$reportDirectory = sys_get_temp_dir() . '/report-html';
154154
$filesystem->remove($reportDirectory);
155155

156-
$driver = $this->createMock(Driver::class);
156+
$driver = $this->createStub(Driver::class);
157157
$coverage = new CodeCoverage($driver, new Filter());
158158

159159
$reportService = new ReportService(
@@ -186,7 +186,7 @@ public function testCanGenerateXMLReport(): void
186186
$reportDirectory = sys_get_temp_dir() . '/report-xml';
187187
$filesystem->remove($reportDirectory);
188188

189-
$driver = $this->createMock(Driver::class);
189+
$driver = $this->createStub(Driver::class);
190190
$coverage = new CodeCoverage($driver, new Filter());
191191

192192
$reportService = new ReportService(
@@ -209,7 +209,7 @@ public function testCanGenerateCoberturaReport(): void
209209
$reportFilename = sys_get_temp_dir() . '/cobertura.xml';
210210
$filesystem->remove($reportFilename);
211211

212-
$driver = $this->createMock(Driver::class);
212+
$driver = $this->createStub(Driver::class);
213213
$coverage = new CodeCoverage($driver, new Filter());
214214

215215
$reportService = new ReportService(
@@ -236,7 +236,7 @@ public function testCanGenerateMultipleReport(): void
236236
$filesystem->remove($cloverReportFilename);
237237
$filesystem->remove($crap4jReportFilename);
238238

239-
$driver = $this->createMock(Driver::class);
239+
$driver = $this->createStub(Driver::class);
240240
$coverage = new CodeCoverage($driver, new Filter());
241241

242242
$reportService = new ReportService(

0 commit comments

Comments
 (0)