Adds a new method, isInParallel, to the Testable trait to allow a test to determine its parallel status.

This commit is contained in:
luke
2021-08-10 14:34:10 +01:00
parent bcab4224fb
commit 5c592928d4
4 changed files with 31 additions and 2 deletions

View File

@ -304,4 +304,12 @@ trait Testable
{
return ltrim(self::class, 'P\\');
}
/**
* Determine whether this test case is being executed in a parallel environment.
*/
public function isInParallel(): bool
{
return TestSuite::getInstance()->isInParallel;
}
}

View File

@ -2,6 +2,7 @@
declare(strict_types=1);
use Pest\Concerns\Testable;
use Pest\Datasets;
use Pest\Expectation;
use Pest\PendingObjects\AfterEachCall;
@ -85,7 +86,7 @@ if (!function_exists('test')) {
* is the test description; the second argument is
* a closure that contains the test expectations.
*
* @return TestCall|TestCase|mixed
* @return TestCall|TestCase|Testable|mixed
*/
function test(string $description = null, Closure $closure = null)
{

View File

@ -485,6 +485,11 @@
✓ it can call chained macro method
✓ it will throw exception from call if no macro exists
WARN Tests\Features\Parallel
- it can determine in the test case if it is running in parallel
✓ it can determine in the test case if it is not running in parallel
✓ it can skip using the test case based on parallel status
PASS Tests\Features\PendingHigherOrderTests
✓ get 'foo'
✓ get 'foo' → get 'bar' → expect true → toBeTrue
@ -647,5 +652,5 @@
✓ it is a test
✓ it uses correct parent class
Tests: 4 incompleted, 9 skipped, 419 passed
Tests: 4 incompleted, 10 skipped, 421 passed

View File

@ -0,0 +1,15 @@
<?php
use Pest\TestSuite;
it('can determine in the test case if it is running in parallel', function () {
expect(test()->isInParallel())->toBeTrue();
})->skip(!TestSuite::getInstance()->isInParallel);
it('can determine in the test case if it is not running in parallel', function () {
expect(test()->isInParallel())->toBeFalse();
})->skip(TestSuite::getInstance()->isInParallel);
it('can skip using the test case based on parallel status', function () {
expect(TestSuite::getInstance()->isInParallel)->toBeFalse();
})->skip(function () { return $this->isInParallel(); });