mirror of
https://github.com/pestphp/pest.git
synced 2026-03-07 00:07:22 +01:00
Merge branch '2.x' into snaphsots-cleanup
# Conflicts: # src/Expectation.php # src/Expectations/OppositeExpectation.php
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
|
||||
Pest Testing Framework 2.9.5.
|
||||
Pest Testing Framework 2.11.0.
|
||||
|
||||
USAGE: pest <file> [options]
|
||||
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
|
||||
Pest Testing Framework 2.9.5.
|
||||
Pest Testing Framework 2.11.0.
|
||||
|
||||
|
||||
@ -411,6 +411,14 @@
|
||||
✓ failures with custom message
|
||||
✓ not failures
|
||||
|
||||
PASS Tests\Features\Expect\toBeInvokable
|
||||
✓ class is invokable
|
||||
✓ opposite class is invokable
|
||||
✓ class is invokable via a parent class
|
||||
✓ class is invokable via a trait
|
||||
✓ failure when the class is not invokable
|
||||
✓ class is not invokable
|
||||
|
||||
PASS Tests\Features\Expect\toBeIterable
|
||||
✓ pass
|
||||
✓ failures
|
||||
@ -629,6 +637,12 @@
|
||||
✓ failures with custom message
|
||||
✓ not failures
|
||||
|
||||
PASS Tests\Features\Expect\toHavePrefix
|
||||
✓ missing prefix
|
||||
✓ has prefix
|
||||
✓ opposite missing prefix
|
||||
✓ opposite has prefix
|
||||
|
||||
PASS Tests\Features\Expect\toHaveProperties
|
||||
✓ pass
|
||||
✓ failures
|
||||
@ -642,6 +656,12 @@
|
||||
✓ failures with message and Any matcher
|
||||
✓ not failures
|
||||
|
||||
PASS Tests\Features\Expect\toHaveSuffix
|
||||
✓ missing suffix
|
||||
✓ has suffix
|
||||
✓ opposite missing suffix
|
||||
✓ opposite has suffix
|
||||
|
||||
PASS Tests\Features\Expect\toMatch
|
||||
✓ pass
|
||||
✓ failures
|
||||
@ -762,6 +782,95 @@
|
||||
! notice → This is a notice description // tests/Features/Notices.php:4
|
||||
! a "describe" group of tests → notice → This is a notice description // tests/Features/Notices.php:11
|
||||
|
||||
PASS Tests\Features\Repeat
|
||||
✓ once
|
||||
✓ multiple times @ repetition 1 of 5
|
||||
✓ multiple times @ repetition 2 of 5
|
||||
✓ multiple times @ repetition 3 of 5
|
||||
✓ multiple times @ repetition 4 of 5
|
||||
✓ multiple times @ repetition 5 of 5
|
||||
✓ multiple times with single dataset dataset "a" @ repetition 1 of 6
|
||||
✓ multiple times with single dataset dataset "b" @ repetition 1 of 6
|
||||
✓ multiple times with single dataset dataset "c" @ repetition 1 of 6
|
||||
✓ multiple times with single dataset dataset "a" @ repetition 2 of 6
|
||||
✓ multiple times with single dataset dataset "b" @ repetition 2 of 6
|
||||
✓ multiple times with single dataset dataset "c" @ repetition 2 of 6
|
||||
✓ multiple times with single dataset dataset "a" @ repetition 3 of 6
|
||||
✓ multiple times with single dataset dataset "b" @ repetition 3 of 6
|
||||
✓ multiple times with single dataset dataset "c" @ repetition 3 of 6
|
||||
✓ multiple times with single dataset dataset "a" @ repetition 4 of 6
|
||||
✓ multiple times with single dataset dataset "b" @ repetition 4 of 6
|
||||
✓ multiple times with single dataset dataset "c" @ repetition 4 of 6
|
||||
✓ multiple times with single dataset dataset "a" @ repetition 5 of 6
|
||||
✓ multiple times with single dataset dataset "b" @ repetition 5 of 6
|
||||
✓ multiple times with single dataset dataset "c" @ repetition 5 of 6
|
||||
✓ multiple times with single dataset dataset "a" @ repetition 6 of 6
|
||||
✓ multiple times with single dataset dataset "b" @ repetition 6 of 6
|
||||
✓ multiple times with single dataset dataset "c" @ repetition 6 of 6
|
||||
✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 1 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 2 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 3 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 4 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 5 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 6 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 7 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 7 of 7
|
||||
✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 7 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 7 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 7 of 7
|
||||
✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 7 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 7 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 7 of 7
|
||||
✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 7 of 7
|
||||
|
||||
PASS Tests\Features\ScopedDatasets\Directory\NestedDirectory1\TestFileInNestedDirectoryWithDatasetsFile
|
||||
✓ uses dataset with (1)
|
||||
✓ uses dataset with (2)
|
||||
@ -1085,4 +1194,4 @@
|
||||
WARN Tests\Visual\Version
|
||||
- visual snapshot of help command output
|
||||
|
||||
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 743 passed (1777 assertions)
|
||||
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 844 passed (1947 assertions)
|
||||
29
tests/Features/Expect/toBeInvokable.php
Normal file
29
tests/Features/Expect/toBeInvokable.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
use Pest\Arch\Exceptions\ArchExpectationFailedException;
|
||||
|
||||
test('class is invokable')
|
||||
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsInvokable\\InvokableClass')
|
||||
->toBeInvokable();
|
||||
|
||||
test('opposite class is invokable')
|
||||
->throws(ArchExpectationFailedException::class)
|
||||
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsInvokable\\InvokableClass')
|
||||
->not->toBeInvokable();
|
||||
|
||||
test('class is invokable via a parent class')
|
||||
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsInvokable\\InvokableClassViaParent')
|
||||
->toBeInvokable();
|
||||
|
||||
test('class is invokable via a trait')
|
||||
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsInvokable\\InvokableClassViaTrait')
|
||||
->toBeInvokable();
|
||||
|
||||
test('failure when the class is not invokable')
|
||||
->throws(ArchExpectationFailedException::class)
|
||||
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsNotInvokable\\IsNotInvokableClass')
|
||||
->toBeInvokable();
|
||||
|
||||
test('class is not invokable')
|
||||
->expect('Tests\\Fixtures\\Arch\\ToBeInvokable\\IsNotInvokable\\IsNotInvokableClass')
|
||||
->not->toBeInvokable();
|
||||
21
tests/Features/Expect/toHavePrefix.php
Normal file
21
tests/Features/Expect/toHavePrefix.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
use Pest\Arch\Exceptions\ArchExpectationFailedException;
|
||||
|
||||
test('missing prefix')
|
||||
->throws(ArchExpectationFailedException::class)
|
||||
->expect('Tests\\Fixtures\\Arch\\ToHavePrefix\\HasNoPrefix')
|
||||
->toHavePrefix('Prefix');
|
||||
|
||||
test('has prefix')
|
||||
->expect('Tests\\Fixtures\\Arch\\ToHavePrefix\\HasPrefix')
|
||||
->toHavePrefix('Prefix');
|
||||
|
||||
test('opposite missing prefix')
|
||||
->throws(ArchExpectationFailedException::class)
|
||||
->expect('Tests\\Fixtures\\Arch\\ToHavePrefix\\HasPrefix')
|
||||
->not->toHavePrefix('Prefix');
|
||||
|
||||
test('opposite has prefix')
|
||||
->expect('Tests\\Fixtures\\Arch\\ToHavePrefix\\HasNoPrefix')
|
||||
->not->toHavePrefix('Prefix');
|
||||
21
tests/Features/Expect/toHaveSuffix.php
Normal file
21
tests/Features/Expect/toHaveSuffix.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
use Pest\Arch\Exceptions\ArchExpectationFailedException;
|
||||
|
||||
test('missing suffix')
|
||||
->throws(ArchExpectationFailedException::class)
|
||||
->expect('Tests\\Fixtures\\Arch\\ToHaveSuffix\\HasNoSuffix')
|
||||
->toHaveSuffix('Suffix');
|
||||
|
||||
test('has suffix')
|
||||
->expect('Tests\\Fixtures\\Arch\\ToHaveSuffix\\HasSuffix')
|
||||
->toHaveSuffix('Suffix');
|
||||
|
||||
test('opposite missing suffix')
|
||||
->throws(ArchExpectationFailedException::class)
|
||||
->expect('Tests\\Fixtures\\Arch\\ToHaveSuffix\\HasSuffix')
|
||||
->not->toHaveSuffix('Suffix');
|
||||
|
||||
test('opposite has suffix')
|
||||
->expect('Tests\\Fixtures\\Arch\\ToHaveSuffix\\HasNoSuffix')
|
||||
->not->toHaveSuffix('Suffix');
|
||||
18
tests/Features/Repeat.php
Normal file
18
tests/Features/Repeat.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
test('once', function () {
|
||||
expect(true)->toBeTrue();
|
||||
})->repeat(times: 1);
|
||||
|
||||
test('multiple times', function () {
|
||||
expect(true)->toBeTrue();
|
||||
})->repeat(times: 5);
|
||||
|
||||
test('multiple times with single dataset', function (int $number) {
|
||||
expect([1, 2, 3])->toContain($number);
|
||||
})->repeat(times: 6)->with(['a' => 1, 'b' => 2, 'c' => 3]);
|
||||
|
||||
test('multiple times with multiple dataset', function (int $numberA, int $numberB) {
|
||||
expect([1, 2, 3])->toContain($numberA)
|
||||
->and([4, 5, 6])->toContain($numberB);
|
||||
})->repeat(times: 7)->with(['a' => 1, 'b' => 2, 'c' => 3], [4, 5, 6]);
|
||||
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
|
||||
|
||||
class InvokableClass
|
||||
{
|
||||
public function __invoke(): void
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
|
||||
|
||||
class InvokableClassViaParent extends ParentInvokableClass
|
||||
{
|
||||
//
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
|
||||
|
||||
class InvokableClassViaTrait
|
||||
{
|
||||
use InvokableTrait;
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
|
||||
|
||||
trait InvokableTrait
|
||||
{
|
||||
public function __invoke(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToBeInvokable\IsInvokable;
|
||||
|
||||
class ParentInvokableClass
|
||||
{
|
||||
public function __invoke(): void
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToBeInvokable\IsNotInvokable;
|
||||
|
||||
class IsNotInvokableClass
|
||||
{
|
||||
public function handle(): void
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToHavePrefix\HasNoPrefix;
|
||||
|
||||
class ClassWithout
|
||||
{
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToHavePrefix\HasPrefix;
|
||||
|
||||
class PrefixClassWith
|
||||
{
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToHaveSuffix\HasNoSuffix;
|
||||
|
||||
class ClassWithout
|
||||
{
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Fixtures\Arch\ToHaveSuffix\HasSuffix;
|
||||
|
||||
class ClassWithSuffix
|
||||
{
|
||||
}
|
||||
@ -16,7 +16,7 @@ $run = function () {
|
||||
|
||||
test('parallel', function () use ($run) {
|
||||
expect($run('--exclude-group=integration'))
|
||||
->toContain('Tests: 1 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 15 skipped, 732 passed (1762 assertions)')
|
||||
->toContain('Tests: 1 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 15 skipped, 833 passed (1932 assertions)')
|
||||
->toContain('Parallel: 3 processes');
|
||||
})->skipOnWindows();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user