mirror of
https://github.com/pestphp/pest.git
synced 2026-03-07 00:07:22 +01:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fac3fe3f55 | |||
| 17fac0a488 | |||
| 885d224c5d | |||
| 12441deab8 | |||
| 8852fd14ce | |||
| e3814e6d9c | |||
| e19eba0942 | |||
| b6e2763731 | |||
| f75a3ee865 | |||
| d707c2f208 | |||
| ba08f2c11e | |||
| 13a8aee049 |
@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
## [v0.3.18 (2020-12-26)](https://github.com/pestphp/pest/compare/v0.3.17...v0.3.18)
|
||||||
|
### Added
|
||||||
|
- `toBeJson()` expectation ([plugin-expectations#2](https://github.com/pestphp/pest-plugin-expectations/pull/2))
|
||||||
|
|
||||||
|
## [v0.3.17 (2020-12-20)](https://github.com/pestphp/pest/compare/v0.3.16...v0.3.17)
|
||||||
|
### Fixed
|
||||||
|
- Class inheritance with `depends()` ([#236](https://github.com/pestphp/pest/pull/236))
|
||||||
|
|
||||||
## [v0.3.16 (2020-12-13)](https://github.com/pestphp/pest/compare/v0.3.15...v0.3.16)
|
## [v0.3.16 (2020-12-13)](https://github.com/pestphp/pest/compare/v0.3.15...v0.3.16)
|
||||||
### Changed
|
### Changed
|
||||||
- Moves expectation API for external plugin ([5d7f262](https://github.com/pestphp/pest/commit/5d7f262f4ab280a660a85900f402eebb23abfda8))
|
- Moves expectation API for external plugin ([5d7f262](https://github.com/pestphp/pest/commit/5d7f262f4ab280a660a85900f402eebb23abfda8))
|
||||||
|
|||||||
5
bin/pest
5
bin/pest
@ -19,13 +19,16 @@ use Symfony\Component\Console\Output\OutputInterface;
|
|||||||
|
|
||||||
if (file_exists($vendorPath)) {
|
if (file_exists($vendorPath)) {
|
||||||
include_once $vendorPath;
|
include_once $vendorPath;
|
||||||
|
$autoloadPath = $vendorPath;
|
||||||
} else {
|
} else {
|
||||||
include_once $localPath;
|
include_once $localPath;
|
||||||
|
$autoloadPath = $localPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
(new Provider())->register();
|
(new Provider())->register();
|
||||||
|
|
||||||
$rootPath = getcwd();
|
// get $rootPath based on $autoloadPath
|
||||||
|
$rootPath = dirname($autoloadPath, 2);
|
||||||
|
|
||||||
$testSuite = TestSuite::getInstance($rootPath);
|
$testSuite = TestSuite::getInstance($rootPath);
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
"nunomaduro/collision": "^5.0",
|
"nunomaduro/collision": "^5.0",
|
||||||
"pestphp/pest-plugin": "^0.3",
|
"pestphp/pest-plugin": "^0.3",
|
||||||
"pestphp/pest-plugin-coverage": "^0.3",
|
"pestphp/pest-plugin-coverage": "^0.3",
|
||||||
"pestphp/pest-plugin-expectations": "^0.3.2",
|
"pestphp/pest-plugin-expectations": "^0.3.3",
|
||||||
"pestphp/pest-plugin-init": "^0.3",
|
"pestphp/pest-plugin-init": "^0.3",
|
||||||
"phpunit/phpunit": ">= 9.3.7 <= 9.5.0"
|
"phpunit/phpunit": ">= 9.3.7 <= 9.5.0"
|
||||||
},
|
},
|
||||||
@ -74,7 +74,7 @@
|
|||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "0.4.x-dev"
|
"dev-master": "0.3.x-dev"
|
||||||
},
|
},
|
||||||
"pest": {
|
"pest": {
|
||||||
"plugins": [
|
"plugins": [
|
||||||
|
|||||||
@ -7,6 +7,7 @@ namespace Pest\Concerns;
|
|||||||
use Closure;
|
use Closure;
|
||||||
use Pest\Support\ExceptionTrace;
|
use Pest\Support\ExceptionTrace;
|
||||||
use Pest\TestSuite;
|
use Pest\TestSuite;
|
||||||
|
use PHPUnit\Framework\ExecutionOrderDependency;
|
||||||
use PHPUnit\Util\Test;
|
use PHPUnit\Util\Test;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
|
|
||||||
@ -54,6 +55,24 @@ trait TestCase
|
|||||||
$this->setGroups($groups);
|
$this->setGroups($groups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add dependencies to the test case and map them to instances of ExecutionOrderDependency.
|
||||||
|
*/
|
||||||
|
public function addDependencies(array $tests): void
|
||||||
|
{
|
||||||
|
$className = get_class($this);
|
||||||
|
|
||||||
|
$tests = array_map(function (string $test) use ($className): ExecutionOrderDependency {
|
||||||
|
if (strpos($test, '::') === false) {
|
||||||
|
$test = "{$className}::{$test}";
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ExecutionOrderDependency($test, null, '');
|
||||||
|
}, $tests);
|
||||||
|
|
||||||
|
$this->setDependencies($tests);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the test case name. Note that, in Pest
|
* Returns the test case name. Note that, in Pest
|
||||||
* we ignore withDataset argument as the description
|
* we ignore withDataset argument as the description
|
||||||
|
|||||||
@ -156,14 +156,6 @@ final class TestCaseFactory
|
|||||||
return array_map($createTest, array_keys($datasets), $datasets);
|
return array_map($createTest, array_keys($datasets), $datasets);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Makes a fully qualified class name from the current filename.
|
|
||||||
*/
|
|
||||||
public function getClassName(): string
|
|
||||||
{
|
|
||||||
return $this->makeClassFromFilename($this->filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes a fully qualified class name from the given filename.
|
* Makes a fully qualified class name from the given filename.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -9,7 +9,6 @@ use Pest\Factories\TestCaseFactory;
|
|||||||
use Pest\Support\Backtrace;
|
use Pest\Support\Backtrace;
|
||||||
use Pest\Support\NullClosure;
|
use Pest\Support\NullClosure;
|
||||||
use Pest\TestSuite;
|
use Pest\TestSuite;
|
||||||
use PHPUnit\Framework\ExecutionOrderDependency;
|
|
||||||
use SebastianBergmann\Exporter\Exporter;
|
use SebastianBergmann\Exporter\Exporter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -92,19 +91,9 @@ final class TestCall
|
|||||||
*/
|
*/
|
||||||
public function depends(string ...$tests): TestCall
|
public function depends(string ...$tests): TestCall
|
||||||
{
|
{
|
||||||
$className = $this->testCaseFactory->getClassName();
|
|
||||||
|
|
||||||
$tests = array_map(function (string $test) use ($className): ExecutionOrderDependency {
|
|
||||||
if (strpos($test, '::') === false) {
|
|
||||||
$test = "{$className}::{$test}";
|
|
||||||
}
|
|
||||||
|
|
||||||
return new ExecutionOrderDependency($test, null, '');
|
|
||||||
}, $tests);
|
|
||||||
|
|
||||||
$this->testCaseFactory
|
$this->testCaseFactory
|
||||||
->factoryProxies
|
->factoryProxies
|
||||||
->add(Backtrace::file(), Backtrace::line(), 'setDependencies', [$tests]);
|
->add(Backtrace::file(), Backtrace::line(), 'addDependencies', [$tests]);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,5 +6,5 @@ namespace Pest;
|
|||||||
|
|
||||||
function version(): string
|
function version(): string
|
||||||
{
|
{
|
||||||
return '0.3.15';
|
return '0.3.18';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -205,6 +205,9 @@ final class TeamCity extends DefaultResultPrinter
|
|||||||
|
|
||||||
private static function isPestTest(Test $test): bool
|
private static function isPestTest(Test $test): bool
|
||||||
{
|
{
|
||||||
return in_array(TestCase::class, class_uses($test), true);
|
/** @var array<string, string> $uses */
|
||||||
|
$uses = class_uses($test);
|
||||||
|
|
||||||
|
return in_array(TestCase::class, $uses, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -184,5 +184,9 @@
|
|||||||
✓ depends run test only once
|
✓ depends run test only once
|
||||||
✓ depends works with the correct test name
|
✓ depends works with the correct test name
|
||||||
|
|
||||||
Tests: 7 skipped, 106 passed
|
PASS Tests\Features\DependsInheritance
|
||||||
|
✓ it is a test
|
||||||
|
✓ it uses correct parent class
|
||||||
|
|
||||||
|
Tests: 7 skipped, 108 passed
|
||||||
|
|
||||||
22
tests/Features/DependsInheritance.php
Normal file
22
tests/Features/DependsInheritance.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class InheritanceTest extends TestCase
|
||||||
|
{
|
||||||
|
public function foo()
|
||||||
|
{
|
||||||
|
return 'bar';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uses(InheritanceTest::class);
|
||||||
|
|
||||||
|
it('is a test', function () {
|
||||||
|
expect(true)->toBeTrue();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses correct parent class', function () {
|
||||||
|
expect(get_parent_class($this))->toEqual(InheritanceTest::class);
|
||||||
|
expect($this->foo())->toEqual('bar');
|
||||||
|
})->depends('it is a test');
|
||||||
Reference in New Issue
Block a user