Skip to content

Commit 922e4d8

Browse files
MauricioFauthsebastianbergmann
authored andcommitted
Skip data provider build when requirements are not satisfied
1 parent 63acb33 commit 922e4d8

File tree

3 files changed

+16
-27
lines changed

3 files changed

+16
-27
lines changed

src/Framework/TestBuilder.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use function assert;
1313
use PHPUnit\Metadata\Api\DataProvider;
1414
use PHPUnit\Metadata\Api\Groups;
15+
use PHPUnit\Metadata\Api\Requirements;
1516
use PHPUnit\Metadata\BackupGlobals;
1617
use PHPUnit\Metadata\BackupStaticProperties;
1718
use PHPUnit\Metadata\ExcludeGlobalVariableFromBackup;
@@ -37,10 +38,11 @@ public function build(ReflectionClass $theClass, string $methodName): Test
3738
{
3839
$className = $theClass->getName();
3940

40-
$data = (new DataProvider)->providedData(
41-
$className,
42-
$methodName,
43-
);
41+
$data = null;
42+
43+
if ((new Requirements)->requirementsNotSatisfiedFor($className, $methodName) === []) {
44+
$data = (new DataProvider)->providedData($className, $methodName);
45+
}
4446

4547
if ($data !== null) {
4648
return $this->buildDataProviderTestSuite(

tests/end-to-end/data-provider/requires-phpunit.phpt

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,21 @@ PHPUnit %s by Sebastian Bergmann and contributors.
1414

1515
Runtime: %s
1616

17-
SSD. 4 / 4 (100%)
17+
S..SS 5 / 5 (100%)
1818

1919
Time: %s, Memory: %s
2020

21-
There were 2 PHPUnit errors:
21+
There were 3 skipped tests:
2222

23-
1) PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithDataProviderThatThrows
24-
The data provider specified for PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithDataProviderThatThrows is invalid
25-
Should have been skipped.
26-
27-
%s:%d
28-
29-
2) PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithDataProviderExternalThatThrows
30-
The data provider specified for PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithDataProviderExternalThatThrows is invalid
31-
Should have been skipped.
32-
33-
%s:%d
34-
35-
--
36-
37-
There were 2 skipped tests:
23+
1) PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithInvalidDataProvider
24+
PHPUnit < 10 is required.
3825

39-
1) PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithInvalidDataProvider with data set #0 (true)
26+
2) PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithDataProviderThatThrows
4027
PHPUnit < 10 is required.
4128

42-
2) PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithInvalidDataProvider with data set #1 (true)
29+
3) PHPUnit\TestFixture\DataProviderRequiresPhpUnitTest::testWithDataProviderExternalThatThrows
4330
PHPUnit < 10 is required.
4431

45-
ERRORS!
46-
Tests: 4, Assertions: 2, Errors: 2, PHPUnit Deprecations: 1, Skipped: 2.
32+
OK, but some tests were skipped!
33+
Tests: 5, Assertions: 2, Skipped: 3.
4734

tests/end-to-end/generic/invalid-requirements.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ Time: %s, Memory: %s
2020

2121
There were 2 PHPUnit test runner warnings:
2222

23-
1) Method PHPUnit\TestFixture\InvalidRequirementsTest::testInvalidVersionConstraint is annotated using an invalid version requirement: Version constraint ~~9.0 is not supported.
23+
1) Class PHPUnit\TestFixture\InvalidRequirementsTest is annotated using an invalid version requirement: Version constraint ~~9.0 is not supported.
2424

25-
2) Class PHPUnit\TestFixture\InvalidRequirementsTest is annotated using an invalid version requirement: Version constraint ~~9.0 is not supported.
25+
2) Method PHPUnit\TestFixture\InvalidRequirementsTest::testInvalidVersionConstraint is annotated using an invalid version requirement: Version constraint ~~9.0 is not supported.
2626

2727
WARNINGS!
2828
Tests: 1, Assertions: 1, Warnings: 2.

0 commit comments

Comments
 (0)