Skip to content

Commit 079b3bf

Browse files
Merge branch '11.5' into 12.3
2 parents 5fd1b6e + 4b1f100 commit 079b3bf

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

ChangeLog-12.3.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes of the PHPUnit 12.3 release series are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
44

5+
## [12.3.2] - 2025-MM-DD
6+
7+
### Changed
8+
9+
* [#6300](https://github.com/sebastianbergmann/phpunit/issues/6300): Emit warning when the name of a data provider method begins with `test`
10+
511
## [12.3.1] - 2025-08-09
612

713
### Added
@@ -41,5 +47,6 @@ All notable changes of the PHPUnit 12.3 release series are documented in this fi
4147
* [#6229](https://github.com/sebastianbergmann/phpunit/issues/6229): `Configuration::excludeTestSuite()`, use `Configuration::excludeTestSuites()` instead
4248
* [#6246](https://github.com/sebastianbergmann/phpunit/issues/6246): Using `#[CoversNothing]` on a test method
4349

50+
[12.3.2]: https://github.com/sebastianbergmann/phpunit/compare/12.3.1...12.3
4451
[12.3.1]: https://github.com/sebastianbergmann/phpunit/compare/12.3.0...12.3.1
4552
[12.3.0]: https://github.com/sebastianbergmann/phpunit/compare/12.2.9...12.3.0

src/Metadata/Api/DataProvider.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,16 @@
1313
use function assert;
1414
use function count;
1515
use function get_debug_type;
16+
use function is_a;
1617
use function is_array;
1718
use function is_int;
1819
use function is_string;
1920
use function sprintf;
21+
use function str_starts_with;
2022
use PHPUnit\Event;
2123
use PHPUnit\Event\Code\TestMethod;
2224
use PHPUnit\Framework\InvalidDataProviderException;
25+
use PHPUnit\Framework\TestCase;
2326
use PHPUnit\Metadata\DataProvider as DataProviderMetadata;
2427
use PHPUnit\Metadata\MetadataCollection;
2528
use PHPUnit\Metadata\Parser\Registry as MetadataRegistry;
@@ -149,6 +152,19 @@ private function dataProvidedByMethods(string $className, string $methodName, Me
149152
foreach ($dataProvider as $_dataProvider) {
150153
assert($_dataProvider instanceof DataProviderMetadata);
151154

155+
if (is_a($_dataProvider->className(), TestCase::class, true) &&
156+
str_starts_with($_dataProvider->methodName(), 'test')) {
157+
Event\Facade::emitter()->testRunnerTriggeredPhpunitWarning(
158+
sprintf(
159+
'The name of the data provider method %s::%s() used by test method %s::%s() begins with "test", therefore PHPUnit also treats it as a test method',
160+
$_dataProvider->className(),
161+
$_dataProvider->methodName(),
162+
$className,
163+
$methodName,
164+
),
165+
);
166+
}
167+
152168
$providerLabel = $_dataProvider->className() . '::' . $_dataProvider->methodName();
153169
$dataProviderMethod = new Event\Code\ClassMethod($_dataProvider->className(), $_dataProvider->methodName());
154170

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php declare(strict_types=1);
2+
/*
3+
* This file is part of PHPUnit.
4+
*
5+
* (c) Sebastian Bergmann <[email protected]>
6+
*
7+
* For the full copyright and license information, please view the LICENSE
8+
* file that was distributed with this source code.
9+
*/
10+
namespace PHPUnit\TestFixture;
11+
12+
use PHPUnit\Framework\Attributes\DataProvider;
13+
use PHPUnit\Framework\TestCase;
14+
15+
final class DataProviderMethodNameStartsWithTestTest extends TestCase
16+
{
17+
public static function testProvider(): array
18+
{
19+
return [[true]];
20+
}
21+
22+
#[DataProvider('testProvider')]
23+
public function testOne(bool $b): void
24+
{
25+
$this->assertTrue($b);
26+
}
27+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
--TEST--
2+
phpunit ../../_files/DataProviderMethodNameStartsWithTestTest.php
3+
--FILE--
4+
<?php declare(strict_types=1);
5+
$_SERVER['argv'][] = '--do-not-cache-result';
6+
$_SERVER['argv'][] = '--no-configuration';
7+
$_SERVER['argv'][] = '--debug';
8+
$_SERVER['argv'][] = __DIR__ . '/../../_files/DataProviderMethodNameStartsWithTestTest.php';
9+
10+
require_once __DIR__ . '/../../bootstrap.php';
11+
12+
(new PHPUnit\TextUI\Application)->run($_SERVER['argv']);
13+
--EXPECTF--
14+
PHPUnit Started (PHPUnit %s using %s)
15+
Test Runner Configured
16+
Event Facade Sealed
17+
Test Runner Triggered Warning (The name of the data provider method PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testProvider() used by test method PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne() begins with "test", therefore PHPUnit also treats it as a test method)
18+
Data Provider Method Called (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testProvider for test method PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne)
19+
Data Provider Method Finished for PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne:
20+
- PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testProvider
21+
Test Suite Loaded (2 tests)
22+
Test Runner Started
23+
Test Suite Sorted
24+
Test Runner Execution Started (2 tests)
25+
Test Suite Started (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest, 2 tests)
26+
Test Preparation Started (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testProvider)
27+
Test Prepared (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testProvider)
28+
Test Passed (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testProvider)
29+
Test Considered Risky (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testProvider)
30+
This test did not perform any assertions
31+
Test Finished (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testProvider)
32+
Test Suite Started (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne, 1 test)
33+
Test Preparation Started (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne#0)
34+
Test Prepared (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne#0)
35+
Test Passed (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne#0)
36+
Test Finished (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne#0)
37+
Test Suite Finished (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest::testOne, 1 test)
38+
Test Suite Finished (PHPUnit\TestFixture\DataProviderMethodNameStartsWithTestTest, 2 tests)
39+
Test Runner Execution Finished
40+
Test Runner Finished
41+
PHPUnit Finished (Shell Exit Code: 1)

0 commit comments

Comments
 (0)