Compare commits

...

43 Commits

Author SHA1 Message Date
83f8de17c8 release: v2.25.0 2023-11-22 07:17:30 +00:00
c8d3e1a9fa Merge pull request #1012 from nahime0/2.x
[2.x] Added onlyOn* methods to run the test only on a specific OS
2023-11-21 01:01:24 +11:00
f7705fe1c1 feat: onlyOn* methods, removed private onlyOn, rely instead on skipOn* methods 2023-11-20 14:51:38 +01:00
cf23dfa477 feat: onlyOn* methods now use the private onlyOn method 2023-11-17 16:16:48 +01:00
ab4787c667 feat: added onlyOn* methods to run the test only on a specific OS 2023-11-17 15:03:28 +01:00
bd6b166a62 Merge pull request #1002 from faissaloux/remove-double-plus
Remove double plus
2023-11-08 10:01:57 +00:00
17340947b3 remove double plus 2023-11-08 10:52:33 +01:00
f235d84d95 release: v2.24.3 2023-11-08 09:47:14 +00:00
3c0d780696 Merge pull request #1001 from faissaloux/fix-html-in-descriptions-or-datasets
Fix html in descriptions or datasets
2023-11-08 09:40:48 +00:00
16768fca9f update snapshots/paralell test 2023-11-07 17:46:00 +01:00
95ec0a82b2 fix html in tests descriptions and datasets 2023-11-07 17:35:42 +01:00
0a680dd06e release: v2.24.2 2023-11-01 19:10:11 -04:00
152892cc38 chore: bumps paratest 2023-11-01 19:06:05 -04:00
9aad417fb2 Merge pull request #996 from CalebDW/phpstan
Create PHPStan extension and add `HigherOrderTapProxy` to `universalObjectCratesClasses`
2023-10-30 20:49:55 -04:00
b58e0cba66 Add Expectation to universalObjectCratesClasses 2023-10-30 14:48:23 -05:00
74864c60e1 Create phpstan extension 2023-10-30 11:55:26 -05:00
fd4f161edd release: v2.24.1 2023-10-26 11:02:35 -04:00
e0939e3e99 chore: adds phpunit 10.4.2 support 2023-10-26 11:02:26 -04:00
2cdd5e3ba0 fix: infer generic type from expectation 2023-10-21 11:06:26 +01:00
811ef27ee4 release: v2.24.0 2023-10-17 10:07:18 +01:00
22a7fd0656 chore: adjusts snapshots 2023-10-17 10:07:08 +01:00
698c276cbe chore: fixes style 2023-10-17 10:06:58 +01:00
6340656ece chore: bumps dependencies 2023-10-17 10:06:48 +01:00
2d5840f947 Merge pull request #933 from hungthai1401/throws_unless
[2.x] Add `throwsUnless`
2023-10-17 10:03:16 +01:00
b8bb3684a3 Merge pull request #983 from Muhammad-Sarfaraz/patch-1
Polishing Up "TestDox.php' PHPDoc Blocks for Clarity
2023-10-17 10:02:08 +01:00
b8cd563569 Update src/Factories/Annotations/TestDox.php
Co-authored-by: Owen Voke <development@voke.dev>
2023-10-16 16:23:09 +06:00
9fb64599de Polishing Up "TestDox.php' PHPDoc Blocks for Clarity
Added the missing parenthesis and period for proper punctuation and formatted the doc block to meet PHPDocumentor standards.
2023-10-16 10:56:06 +06:00
502f37d280 chore: updates links 2023-10-15 12:10:07 +01:00
29cfa8ec35 chore: updates sponsors 2023-10-14 11:34:00 +01:00
a63cd2e4f5 Merge pull request #980 from salehhashemi1992/fix/lifecycle-hook-scope
Fix TestCycle hook scope
2023-10-13 15:27:37 +01:00
7249b59e52 fix lifecycle hook scope 2023-10-13 17:51:02 +03:30
5c94d9994e Merge pull request #979 from salehhashemi1992/ci/checkout-update
Update actions/checkout to v4
2023-10-13 00:36:11 +01:00
bb0a5d8323 update checkout to v4 2023-10-12 21:32:46 +03:30
b126e8e6e4 release: v2.23.2 2023-10-10 16:40:34 +01:00
677129d23d chore: uses paratest 7.3.0 2023-10-10 16:39:04 +01:00
cef5c36885 release: v2.23.1 2023-10-10 15:57:14 +01:00
a343ba4a29 chore: adds PHPUnit 10.4.1 support 2023-10-10 15:57:07 +01:00
21b30b22a7 release: v2.23.0 2023-10-10 15:41:56 +01:00
449c4b6c5e chore: adds collision v8 support 2023-10-10 15:37:25 +01:00
6513ad6ced release: v2.22.1 2023-10-10 14:59:16 +01:00
12421c846e chore: adds termwind v2 support 2023-10-10 14:55:43 +01:00
e888f3613b refactor: change falsy to false 2023-08-24 16:40:30 +07:00
6c3d8829ce feat: throwsUnless method 2023-08-24 09:28:47 +07:00
23 changed files with 139 additions and 143 deletions

View File

@ -20,7 +20,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v4
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2

View File

@ -18,7 +18,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v4
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2

View File

@ -21,7 +21,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v4
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2

View File

@ -32,7 +32,6 @@ We cannot thank our sponsors enough for their incredible support in funding Pest
- [Codecourse](https://codecourse.com/) - [Codecourse](https://codecourse.com/)
- [Laracasts](https://laracasts.com/) - [Laracasts](https://laracasts.com/)
- [Localazy](https://localazy.com) - [Localazy](https://localazy.com)
- [Fathom Analytics](https://usefathom.com/)
- [Meema](https://meema.io) - [Meema](https://meema.io)
- [Zapiet](https://www.zapiet.com) - [Zapiet](https://www.zapiet.com)

View File

@ -18,15 +18,15 @@
], ],
"require": { "require": {
"php": "^8.1.0", "php": "^8.1.0",
"brianium/paratest": "^7.2.9", "brianium/paratest": "^7.3.1",
"nunomaduro/collision": "^7.9.0", "nunomaduro/collision": "^7.10.0|^8.0.0",
"nunomaduro/termwind": "^1.15.1", "nunomaduro/termwind": "^1.15.1|^2.0.0",
"pestphp/pest-plugin": "^2.1.1", "pestphp/pest-plugin": "^2.1.1",
"pestphp/pest-plugin-arch": "^2.3.3", "pestphp/pest-plugin-arch": "^2.4.1",
"phpunit/phpunit": "^10.4.0" "phpunit/phpunit": "^10.4.2"
}, },
"conflict": { "conflict": {
"phpunit/phpunit": ">10.4.0", "phpunit/phpunit": ">10.4.2",
"sebastian/exporter": "<5.1.0", "sebastian/exporter": "<5.1.0",
"webmozart/assert": "<1.11.0" "webmozart/assert": "<1.11.0"
}, },
@ -52,7 +52,7 @@
}, },
"require-dev": { "require-dev": {
"pestphp/pest-dev-tools": "^2.16.0", "pestphp/pest-dev-tools": "^2.16.0",
"pestphp/pest-plugin-type-coverage": "^2.4.0", "pestphp/pest-plugin-type-coverage": "^2.5.0",
"symfony/process": "^6.3.4" "symfony/process": "^6.3.4"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
@ -76,7 +76,7 @@
"test:type:coverage": "php bin/pest --type-coverage --min=100", "test:type:coverage": "php bin/pest --type-coverage --min=100",
"test:unit": "php bin/pest --colors=always --exclude-group=integration --compact", "test:unit": "php bin/pest --colors=always --exclude-group=integration --compact",
"test:inline": "php bin/pest --colors=always --configuration=phpunit.inline.xml", "test:inline": "php bin/pest --colors=always --configuration=phpunit.inline.xml",
"test:parallel": "php bin/pest --colors=always --exclude-group=integration --parallel --processes=10", "test:parallel": "php bin/pest --colors=always --exclude-group=integration --parallel --processes=3",
"test:integration": "php bin/pest --colors=always --group=integration", "test:integration": "php bin/pest --colors=always --group=integration",
"update:snapshots": "REBUILD_SNAPSHOTS=true php bin/pest --colors=always --update-snapshots", "update:snapshots": "REBUILD_SNAPSHOTS=true php bin/pest --colors=always --update-snapshots",
"test": [ "test": [
@ -109,6 +109,11 @@
"Pest\\Plugins\\Version", "Pest\\Plugins\\Version",
"Pest\\Plugins\\Parallel" "Pest\\Plugins\\Parallel"
] ]
},
"phpstan": {
"includes": [
"extension.neon"
]
} }
} }
} }

4
extension.neon Normal file
View File

@ -0,0 +1,4 @@
parameters:
universalObjectCratesClasses:
- Pest\Support\HigherOrderTapProxy
- Pest\Expectation

View File

@ -193,6 +193,7 @@ trait Testable
$method = TestSuite::getInstance()->tests->get(self::$__filename)->getMethod($this->name()); $method = TestSuite::getInstance()->tests->get(self::$__filename)->getMethod($this->name());
$description = $this->dataName() ? $method->description.' with '.$this->dataName() : $method->description; $description = $this->dataName() ? $method->description.' with '.$this->dataName() : $method->description;
$description = htmlspecialchars(html_entity_decode($description), ENT_NOQUOTES);
if ($method->repetitions > 1) { if ($method->repetitions > 1) {
$matches = []; $matches = [];

View File

@ -23,9 +23,10 @@ final class Thanks
* @var array<string, string> * @var array<string, string>
*/ */
private const FUNDING_MESSAGES = [ private const FUNDING_MESSAGES = [
'Star the project on GitHub' => 'https://github.com/pestphp/pest', 'Star' => 'https://github.com/pestphp/pest',
'Tweet about the project' => 'https://twitter.com/pestphp', 'News' => 'https://twitter.com/pestphp',
'Sponsor the project' => 'https://github.com/sponsors/nunomaduro', 'Videos' => 'https://youtube.com/@nunomaduro',
'Sponsor' => 'https://github.com/sponsors/nunomaduro',
]; ];
/** /**

View File

@ -15,12 +15,11 @@ final class TestDox implements AddsAnnotations
public function __invoke(TestCaseMethodFactory $method, array $annotations): array public function __invoke(TestCaseMethodFactory $method, array $annotations): array
{ {
/* /*
* escapes docblock according to * Escapes docblock according to
* https://manual.phpdoc.org/HTMLframesConverter/default/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.desc * https://manual.phpdoc.org/HTMLframesConverter/default/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.desc
* *
* note: '@' escaping is not needed as it cannot be the first character of the line (it always starts with @testdox * Note: '@' escaping is not needed as it cannot be the first character of the line (it always starts with @testdox).
*/ */
assert($method->description !== null); assert($method->description !== null);
$methodDescription = str_replace('*/', '{@*}', $method->description); $methodDescription = str_replace('*/', '{@*}', $method->description);

View File

@ -105,6 +105,24 @@ final class TestCall
return $this; return $this;
} }
/**
* Asserts that the test throws the given `$exceptionClass` when called if the given condition is false.
*
* @param (callable(): bool)|bool $condition
*/
public function throwsUnless(callable|bool $condition, string|int $exception, string $exceptionMessage = null, int $exceptionCode = null): self
{
$condition = is_callable($condition)
? $condition
: static fn (): bool => $condition;
if (! $condition()) {
return $this->throws($exception, $exceptionMessage, $exceptionCode);
}
return $this;
}
/** /**
* Runs the current test multiple times with * Runs the current test multiple times with
* each item of the given `iterable`. * each item of the given `iterable`.
@ -215,6 +233,30 @@ final class TestCall
: $this; : $this;
} }
/**
* Skips the current test unless the given test is running on Windows.
*/
public function onlyOnWindows(): self
{
return $this->skipOnMac()->skipOnLinux();
}
/**
* Skips the current test unless the given test is running on Mac.
*/
public function onlyOnMac(): self
{
return $this->skipOnWindows()->skipOnLinux();
}
/**
* Skips the current test unless the given test is running on Linux.
*/
public function onlyOnLinux(): self
{
return $this->skipOnWindows()->skipOnMac();
}
/** /**
* Repeats the current test the given number of times. * Repeats the current test the given number of times.
*/ */

View File

@ -6,7 +6,7 @@ namespace Pest;
function version(): string function version(): string
{ {
return '2.22.0'; return '2.25.0';
} }
function testDirectory(string $file = ''): string function testDirectory(string $file = ''): string

View File

@ -54,8 +54,8 @@ final class Result
$returnCode = self::FAILURE_EXIT; $returnCode = self::FAILURE_EXIT;
} }
$warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents() + $warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents()
+count($result->warnings()) + count($result->warnings())
+ count($result->phpWarnings()); + count($result->phpWarnings());
if ($configuration->failOnWarning() && $warnings > 0) { if ($configuration->failOnWarning() && $warnings > 0) {

View File

@ -190,7 +190,7 @@ final class Reflection
} }
$arguments[$parameter->getName()] = implode('|', array_map( $arguments[$parameter->getName()] = implode('|', array_map(
static fn (ReflectionNamedType $type): string => $type->getName(), static fn (ReflectionNamedType $type): string => $type->getName(), // @phpstan-ignore-line
($types instanceof ReflectionNamedType) ($types instanceof ReflectionNamedType)
? [$types] // NOTE: normalize as list of to handle unions ? [$types] // NOTE: normalize as list of to handle unions
: $types->getTypes(), : $types->getTypes(),

View File

@ -1,5 +1,5 @@
Pest Testing Framework 2.22.0. Pest Testing Framework 2.25.0.
USAGE: pest <file> [options] USAGE: pest <file> [options]

View File

@ -1,3 +1,3 @@
Pest Testing Framework 2.22.0. Pest Testing Framework 2.25.0.

View File

@ -215,6 +215,14 @@
✓ it can just define the code if given condition is true ✓ it can just define the code if given condition is true
✓ it can just define the message if given condition is 1 ✓ it can just define the message if given condition is 1
✓ it can just define the code if given condition is 1 ✓ it can just define the code if given condition is 1
✓ it not catch exceptions if given condition is true
✓ it catch exceptions if given condition is false
✓ it catch exceptions and messages if given condition is false
✓ it catch exceptions, messages and code if given condition is false
✓ it can just define the message if given condition is false
✓ it can just define the code if given condition is false
✓ it can just define the message if given condition is 0
✓ it can just define the code if given condition is 0
PASS Tests\Features\Expect\HigherOrder\methods PASS Tests\Features\Expect\HigherOrder\methods
✓ it can access methods ✓ it can access methods
@ -1112,17 +1120,9 @@
PASS Tests\Helpers\TestInHelpers PASS Tests\Helpers\TestInHelpers
✓ it executes tests in the Helpers directory ✓ it executes tests in the Helpers directory
PASS Tests\Hooks\AfterAllTest
✓ global afterAll execution order
✓ it only gets called once per file
PASS Tests\Hooks\AfterEachTest PASS Tests\Hooks\AfterEachTest
✓ global afterEach execution order ✓ global afterEach execution order
PASS Tests\Hooks\BeforeAllTest
✓ global beforeAll execution order
✓ it only gets called once per file
PASS Tests\Hooks\BeforeEachTest PASS Tests\Hooks\BeforeEachTest
✓ global beforeEach execution order ✓ global beforeEach execution order
@ -1194,6 +1194,7 @@
✓ it show the correct description for mixed named and not-named datasets ✓ it show the correct description for mixed named and not-named datasets
✓ it shows the correct description for long texts with newlines ✓ it shows the correct description for long texts with newlines
✓ it shows the correct description for arrays with many elements ✓ it shows the correct description for arrays with many elements
✓ it shows the correct description of datasets with html
PASS Tests\Unit\Expectations\OppositeExpectation PASS Tests\Unit\Expectations\OppositeExpectation
✓ it throw expectation failed exception with string argument ✓ it throw expectation failed exception with string argument
@ -1352,4 +1353,4 @@
WARN Tests\Visual\Version WARN Tests\Visual\Version
- visual snapshot of help command output - visual snapshot of help command output
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 958 passed (2281 assertions) Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 963 passed (2281 assertions)

View File

@ -59,3 +59,37 @@ it('can just define the message if given condition is 1', function () {
it('can just define the code if given condition is 1', function () { it('can just define the code if given condition is 1', function () {
throw new Exception('Something bad happened', 1); throw new Exception('Something bad happened', 1);
})->throwsIf(1, 1); })->throwsIf(1, 1);
it('not catch exceptions if given condition is true', function () {
$this->assertTrue(true);
})->throwsUnless(true, Exception::class);
it('catch exceptions if given condition is false', function () {
throw new Exception('Something bad happened');
})->throwsUnless(function () {
return false;
}, Exception::class);
it('catch exceptions and messages if given condition is false', function () {
throw new Exception('Something bad happened');
})->throwsUnless(false, Exception::class, 'Something bad happened');
it('catch exceptions, messages and code if given condition is false', function () {
throw new Exception('Something bad happened', 1);
})->throwsUnless(false, Exception::class, 'Something bad happened', 1);
it('can just define the message if given condition is false', function () {
throw new Exception('Something bad happened');
})->throwsUnless(false, 'Something bad happened');
it('can just define the code if given condition is false', function () {
throw new Exception('Something bad happened', 1);
})->throwsUnless(false, 1);
it('can just define the message if given condition is 0', function () {
throw new Exception('Something bad happened');
})->throwsUnless(0, 'Something bad happened');
it('can just define the code if given condition is 0', function () {
throw new Exception('Something bad happened', 1);
})->throwsUnless(0, 1);

View File

@ -8,16 +8,16 @@ $foo->beforeEach = false;
$foo->afterEach = false; $foo->afterEach = false;
$foo->afterAll = false; $foo->afterAll = false;
beforeAll(function () { beforeAll(function () use ($foo) {
$foo->beforeAll = true; $foo->beforeAll = true;
}); });
beforeEach(function () { beforeEach(function () use ($foo) {
$foo->beforeEach = true; $foo->beforeEach = true;
}); });
afterEach(function () { afterEach(function () use ($foo) {
$foo->afterEach = true; $foo->afterEach = true;
}); });
afterAll(function () { afterAll(function () use ($foo) {
$foo->afterAll = true; $foo->afterAll = true;
}); });

View File

@ -1,45 +0,0 @@
<?php
uses()->afterAll(function () {
expect($_SERVER['globalHook'])
->toHaveProperty('afterAll')
->and($_SERVER['globalHook']->afterAll)
->toBe(0)
->and($_SERVER['globalHook']->calls)
->afterAll
->toBe(1);
$_SERVER['globalHook']->afterAll = 1;
$_SERVER['globalHook']->calls->afterAll++;
});
afterAll(function () {
expect($_SERVER['globalHook'])
->toHaveProperty('afterAll')
->and($_SERVER['globalHook']->afterAll)
->toBe(1)
->and($_SERVER['globalHook']->calls)
->afterAll
->toBe(2);
$_SERVER['globalHook']->afterAll = 2;
$_SERVER['globalHook']->calls->afterAll++;
});
test('global afterAll execution order', function () {
expect($_SERVER['globalHook'])
->not()
->toHaveProperty('afterAll')
->and($_SERVER['globalHook']->calls)
->afterAll
->toBe(0);
});
it('only gets called once per file', function () {
expect($_SERVER['globalHook'])
->not()
->toHaveProperty('afterAll')
->and($_SERVER['globalHook']->calls)
->afterAll
->toBe(0);
});

View File

@ -1,55 +0,0 @@
<?php
use Pest\Plugins\Parallel;
use Pest\Support\Str;
// HACK: we have to determine our $_SERVER['globalHook-]>calls baseline. This is because
// two other tests are executed before this one due to filename ordering.
$args = $_SERVER['argv'] ?? [];
$single = (isset($args[1]) && Str::endsWith(__FILE__, $args[1])) || Parallel::isWorker();
$offset = $single ? 0 : 2;
uses()->beforeAll(function () use ($offset) {
expect($_SERVER['globalHook'])
->toHaveProperty('beforeAll')
->and($_SERVER['globalHook']->beforeAll)
->toBe(0)
->and($_SERVER['globalHook']->calls)
->beforeAll
->toBe(1 + $offset);
$_SERVER['globalHook']->beforeAll = 1;
$_SERVER['globalHook']->calls->beforeAll++;
});
beforeAll(function () use ($offset) {
expect($_SERVER['globalHook'])
->toHaveProperty('beforeAll')
->and($_SERVER['globalHook']->beforeAll)
->toBe(1)
->and($_SERVER['globalHook']->calls)
->beforeAll
->toBe(2 + $offset);
$_SERVER['globalHook']->beforeAll = 2;
$_SERVER['globalHook']->calls->beforeAll++;
});
test('global beforeAll execution order', function () use ($offset) {
expect($_SERVER['globalHook'])
->toHaveProperty('beforeAll')
->and($_SERVER['globalHook']->beforeAll)
->toBe(2)
->and($_SERVER['globalHook']->calls)
->beforeAll
->toBe(3 + $offset);
});
it('only gets called once per file', function () use ($offset) {
expect($_SERVER['globalHook'])
->beforeAll
->toBe(2)
->and($_SERVER['globalHook']->calls)
->beforeAll
->toBe(3 + $offset);
});

View File

@ -99,3 +99,13 @@ it('shows the correct description for arrays with many elements', function () {
expect($descriptions[0])->toBe('([1, 2, 3, …])'); expect($descriptions[0])->toBe('([1, 2, 3, …])');
}); });
it('shows the correct description of datasets with html', function () {
$descriptions = array_keys(DatasetsRepository::resolve([
[
'<div class="flex items-center"></div>',
],
], __FILE__));
expect($descriptions[0])->toBe('(\'<div class="flex items-center"></div>\')');
});

View File

@ -20,7 +20,7 @@ $names = [
'卜竹弓一十山' => '__pest_evaluable_卜竹弓一十山', '卜竹弓一十山' => '__pest_evaluable_卜竹弓一十山',
'アゴデヸ' => '__pest_evaluable_アゴデヸ', 'アゴデヸ' => '__pest_evaluable_アゴデヸ',
'!p8VrB' => '__pest_evaluable__p8VrB', '!p8VrB' => '__pest_evaluable__p8VrB',
'&xe6VeKWF#n4' => '__pest_evaluable__xe6VeKWF_n4', '&amp;xe6VeKWF#n4' => '__pest_evaluable__amp_xe6VeKWF_n4',
'%%HurHUnw7zM!' => '__pest_evaluable___HurHUnw7zM_', '%%HurHUnw7zM!' => '__pest_evaluable___HurHUnw7zM_',
'rundeliekend' => '__pest_evaluable_rundeliekend', 'rundeliekend' => '__pest_evaluable_rundeliekend',
'g%%c!Jt9$fy#Kf' => '__pest_evaluable_g__c_Jt9_fy_Kf', 'g%%c!Jt9$fy#Kf' => '__pest_evaluable_g__c_Jt9_fy_Kf',
@ -33,7 +33,7 @@ $names = [
'Каролин' => '__pest_evaluable_Каролин', 'Каролин' => '__pest_evaluable_Каролин',
'অ্যান্টার্কটিকা' => '__pest_evaluable_অ্যান্টার্কটিকা', 'অ্যান্টার্কটিকা' => '__pest_evaluable_অ্যান্টার্কটিকা',
'Frýdek-Místek"' => '__pest_evaluable_Frýdek_Místek_', 'Frýdek-Místek"' => '__pest_evaluable_Frýdek_Místek_',
'Allingåbro&' => '__pest_evaluable_Allingåbro_', 'Allingåbro&amp;' => '__pest_evaluable_Allingåbro_amp_',
'Κεντροαφρικανική Δημοκρατία' => '__pest_evaluable_Κεντροαφρικανική_Δημοκρατία', 'Κεντροαφρικανική Δημοκρατία' => '__pest_evaluable_Κεντροαφρικανική_Δημοκρατία',
'آذربایجان غربی' => '__pest_evaluable_آذربایجان_غربی', 'آذربایجان غربی' => '__pest_evaluable_آذربایجان_غربی',
'זימבבואה' => '__pest_evaluable_זימבבואה', 'זימבבואה' => '__pest_evaluable_זימבבואה',

View File

@ -16,7 +16,7 @@ $run = function () {
test('parallel', function () use ($run) { test('parallel', function () use ($run) {
expect($run('--exclude-group=integration')) expect($run('--exclude-group=integration'))
->toContain('Tests: 1 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 15 skipped, 947 passed (2266 assertions)') ->toContain('Tests: 1 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 15 skipped, 952 passed (2266 assertions)')
->toContain('Parallel: 3 processes'); ->toContain('Parallel: 3 processes');
})->skipOnWindows(); })->skipOnWindows();