Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/Metadata/Api/DataProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,21 +62,23 @@ public function providedData(string $className, string $methodName): ?array
$this->triggerWarningForMixingOfDataProviderAndTestWith($testMethod);
}

return $this->dataProvidedByMethods($testMethod, $dataProvider);
return $this->dataProvidedByMethods($className, $testMethod, $dataProvider);
}

return $this->dataProvidedByMetadata($testMethod, $testWith);
}

/**
* @param class-string<TestCase> $testClassName
*
* @throws InvalidDataProviderException
*
* @return array<ProvidedData>
*/
private function dataProvidedByMethods(ReflectionMethod $testMethod, MetadataCollection $dataProvider): array
private function dataProvidedByMethods(string $testClassName, ReflectionMethod $testMethod, MetadataCollection $dataProvider): array
{
$testMethodValueObject = new Event\Code\ClassMethod(
$testMethod->getDeclaringClass()->getName(),
$testClassName,
$testMethod->getName(),
);

Expand Down
31 changes: 31 additions & 0 deletions tests/end-to-end/event/_files/DataProviderInParentTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php declare(strict_types=1);
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace PHPUnit\TestFixture\Event;

use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;

final class DataProviderInParentTest extends ParentTestCase
{
}

abstract class ParentTestCase extends TestCase
{
public static function data_provider(): iterable
{
yield [true];
}

#[DataProvider('data_provider')]
public function testSomething(bool $var): void
{
$this->assertTrue($var);
}
}
36 changes: 36 additions & 0 deletions tests/end-to-end/event/data-provider-in-parent-class.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
--TEST--
The right events are emitted in the right order for a test that uses a data provider that provides no data
--FILE--
<?php declare(strict_types=1);
$_SERVER['argv'][] = '--do-not-cache-result';
$_SERVER['argv'][] = '--no-configuration';
$_SERVER['argv'][] = '--debug';
$_SERVER['argv'][] = __DIR__ . '/_files/DataProviderInParentTest.php';

require __DIR__ . '/../../bootstrap.php';

(new PHPUnit\TextUI\Application)->run($_SERVER['argv']);
--EXPECTF--
PHPUnit Started (PHPUnit %s using %s)
Test Runner Configured
Event Facade Sealed
Data Provider Method Called (PHPUnit\TestFixture\Event\DataProviderInParentTest::data_provider for test method PHPUnit\TestFixture\Event\DataProviderInParentTest::testSomething)
Data Provider Method Finished for PHPUnit\TestFixture\Event\DataProviderInParentTest::testSomething:
Comment on lines +17 to +18
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

before the fix, those lines were:

Data Provider Method Called (PHPUnit\TestFixture\Event\DataProviderInParentTest::data_provider for test method PHPUnit\TestFixture\Event\ParentTestCase::testSomething)
Data Provider Method Finished for PHPUnit\TestFixture\Event\ParentTestCase::testSomething

- PHPUnit\TestFixture\Event\DataProviderInParentTest::data_provider
Test Suite Loaded (1 test)
Test Runner Started
Test Suite Sorted
Test Runner Execution Started (1 test)
Test Suite Started (PHPUnit\TestFixture\Event\DataProviderInParentTest, 1 test)
Test Suite Started (PHPUnit\TestFixture\Event\DataProviderInParentTest::testSomething, 1 test)
Test Preparation Started (PHPUnit\TestFixture\Event\DataProviderInParentTest::testSomething#0)
Test Prepared (PHPUnit\TestFixture\Event\DataProviderInParentTest::testSomething#0)
Test Passed (PHPUnit\TestFixture\Event\DataProviderInParentTest::testSomething#0)
Test Finished (PHPUnit\TestFixture\Event\DataProviderInParentTest::testSomething#0)
Test Suite Finished (PHPUnit\TestFixture\Event\DataProviderInParentTest::testSomething, 1 test)
Test Suite Finished (PHPUnit\TestFixture\Event\DataProviderInParentTest, 1 test)
Test Runner Execution Finished
Test Runner Finished
PHPUnit Finished (Shell Exit Code: 0)