Compare commits

...

24 Commits

Author SHA1 Message Date
9a8f6e6414 release: v2.28.0 2023-12-05 19:06:22 +00:00
4ece95a040 tests: uses arch function 2023-12-05 19:06:11 +00:00
0cc09380bc chore: bumps dependencies 2023-12-05 19:06:03 +00:00
809fb855de release: v2.27.0 2023-12-04 11:11:35 +00:00
aa14f2e200 chore: uses specific symfony versions 2023-12-04 11:08:41 +00:00
e319bdb6d3 chore: fixes missing caret on workflow 2023-12-04 11:04:08 +00:00
fb7340b556 chore: fixes exclude key and add fail-fast 2023-12-04 11:02:41 +00:00
0528fec083 chore: fixes duplicated key name on workflow 2023-12-04 10:59:58 +00:00
1cbaaf6e12 chore: allows symfony 7 on composer 2023-12-04 10:55:34 +00:00
dc862f60b2 chore: adjusts workflow 2023-12-04 10:54:11 +00:00
ff04d54247 chore: adjusts workflow name 2023-12-04 10:40:29 +00:00
330cf05177 chore: adjusts workflow 2023-12-04 10:38:37 +00:00
42b5fa914c Fixes integration tests 2023-12-04 10:15:55 +00:00
3b1026b7d7 chore: fixes workflow name 2023-12-04 10:14:51 +00:00
b6151e0d01 chore: tests against Symonfy 7 2023-12-04 10:10:36 +00:00
d6db2c13c1 Merge pull request #1025 from xiCO2k/fix/allow-todo-argument
[2.x] Allow `--todo` argument.
2023-11-30 10:47:10 +00:00
07b6ff6c04 Update bin/pest
Co-authored-by: Owen Voke <development@voke.dev>
2023-11-30 07:49:24 +00:00
ac5da9e3f7 feat: Allow --todo argument. 2023-11-30 00:32:23 +00:00
90fb8c602c release: v2.26.0 2023-11-29 09:09:09 +00:00
3974a65a18 Merge pull request #1017 from markhuot/patch-2
[2.x] Add `toSnapshot` early return
2023-11-29 08:50:28 +00:00
2a54b5819d #1017 adds early return toSnapshot test 2023-11-28 20:59:45 -05:00
7177791f1e Merge pull request #1020 from allanmcarvalho/2.x
Update Expectation.php
2023-11-23 17:42:51 +00:00
c743b10a87 Update Expectation.php
Removed @internal phpdoc
2023-11-23 13:15:50 -03:00
da20a62e49 Add toSnapshot() early return
Sometimes objects need native toString() and toArray() methods that are different from what you want to snapshot.

This adds an explicit toSnapshot() method that will be called first (when set) allowing for better snapshot values than the generic methods offer.
2023-11-21 22:56:21 -05:00
18 changed files with 96 additions and 66 deletions

View File

@ -1,42 +0,0 @@
name: Integration Tests
on:
push:
schedule:
- cron: '0 0 * * *'
jobs:
ci:
if: github.event_name != 'schedule' || github.repository == 'pestphp/pest'
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
php: ['8.1', '8.2']
dependency-version: [prefer-lowest, prefer-stable]
name: PHP ${{ matrix.php }} - ${{ matrix.os }} - ${{ matrix.dependency-version }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: composer:v2
coverage: none
- name: Setup Problem Matches
run: |
echo "::add-matcher::${{ runner.tool_cache }}/php.json"
echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
- name: Install PHP dependencies
run: composer update --${{ matrix.dependency-version }} --no-interaction --no-progress --ansi
- name: Integration Tests
run: composer test:integration

View File

@ -13,6 +13,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
dependency-version: [prefer-lowest, prefer-stable]

View File

@ -6,18 +6,23 @@ on:
schedule:
- cron: '0 0 * * *'
jobs:
ci:
tests:
if: github.event_name != 'schedule' || github.repository == 'pestphp/pest'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
symfony: ['6.4.0', '7.0.1']
php: ['8.1', '8.2', '8.3']
dependency-version: [prefer-lowest, prefer-stable]
dependency_version: [prefer-lowest, prefer-stable]
exclude:
- php: '8.1'
symfony: '7.0.1'
name: PHP ${{ matrix.php }} - ${{ matrix.os }} - ${{ matrix.dependency-version }}
name: PHP ${{ matrix.php }} - Symfony ^${{ matrix.symfony }} - ${{ matrix.os }} - ${{ matrix.dependency_version }}
steps:
- name: Checkout
@ -36,11 +41,13 @@ jobs:
echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
- name: Install PHP dependencies
run: composer update --${{ matrix.dependency-version }} --no-interaction --no-progress --ansi
run: composer update --${{ matrix.dependency_version }} --no-interaction --no-progress --ansi --with="symfony/console:^${{ matrix.symfony }}"
- name: Unit Tests
run: composer test:unit
- name: Unit Tests in Parallel
- name: Parallel Tests
run: composer test:parallel
- name: Integration Tests
run: composer test:integration

View File

@ -38,7 +38,7 @@ use Symfony\Component\Console\Output\ConsoleOutput;
unset($args[$key]);
}
if ($value === '--todos') {
if (in_array($value, ['--todo', '--todos'], true)) {
$todo = true;
unset($args[$key]);
}

View File

@ -22,11 +22,11 @@
"nunomaduro/collision": "^7.10.0|^8.0.0",
"nunomaduro/termwind": "^1.15.1|^2.0.0",
"pestphp/pest-plugin": "^2.1.1",
"pestphp/pest-plugin-arch": "^2.4.1",
"phpunit/phpunit": "^10.4.2"
"pestphp/pest-plugin-arch": "^2.5.0",
"phpunit/phpunit": "^10.5.2"
},
"conflict": {
"phpunit/phpunit": ">10.4.2",
"phpunit/phpunit": ">10.5.2",
"sebastian/exporter": "<5.1.0",
"webmozart/assert": "<1.11.0"
},
@ -53,7 +53,7 @@
"require-dev": {
"pestphp/pest-dev-tools": "^2.16.0",
"pestphp/pest-plugin-type-coverage": "^2.5.0",
"symfony/process": "^6.3.4"
"symfony/process": "^6.4.0|^7.0.1"
},
"minimum-stability": "dev",
"prefer-stable": true,

View File

@ -34,8 +34,6 @@ use PHPUnit\Architecture\Elements\ObjectDescription;
use PHPUnit\Framework\ExpectationFailedException;
/**
* @internal
*
* @template TValue
*
* @property OppositeExpectation $not Creates the opposite expectation.

View File

@ -844,6 +844,7 @@ final class Expectation
$string = match (true) {
is_string($this->value) => $this->value,
is_object($this->value) && method_exists($this->value, 'toSnapshot') => $this->value->toSnapshot(),
is_object($this->value) && method_exists($this->value, '__toString') => $this->value->__toString(),
is_object($this->value) && method_exists($this->value, 'toString') => $this->value->toString(),
$this->value instanceof \Illuminate\Testing\TestResponse => $this->value->getContent(), // @phpstan-ignore-line

View File

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

View File

@ -34,7 +34,7 @@ final class Parallel implements HandlesArguments
/**
* @var string[]
*/
private const UNSUPPORTED_ARGUMENTS = ['--todos', '--retry'];
private const UNSUPPORTED_ARGUMENTS = ['--todo', '--todos', '--retry'];
/**
* Whether the given command line arguments indicate that the test suite should be run in parallel.

View File

@ -0,0 +1,3 @@
{
"key": " <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <h1>Snapshot<\/h1>\n <\/div>\n <\/div>\n <\/div>"
}

View File

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

View File

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

View File

@ -836,6 +836,7 @@
✓ within describe → pass with dataset with ('my-datas-set-value')
✓ pass with toArray
✓ pass with array
✓ pass with toSnapshot
✓ failures
✓ failures with custom message
✓ not failures
@ -1347,10 +1348,12 @@
- visual snapshot of team city with ('SuccessOnly.php')
PASS Tests\Visual\Todo
✓ todos
✓ todos in parallel
✓ todo
✓ todo in parallel
WARN Tests\Visual\Version
- visual snapshot of help command output
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 963 passed (2281 assertions)
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 966 passed (2286 assertions)

View File

@ -0,0 +1,31 @@
TODO Tests\Features\BeforeEachProxiesToTestCallWithTodo - 4 todos
↓ is marked as todo 1
↓ is marked as todo 2
↓ is marked as todo 3
↓ shouldBeMarkedAsTodo
TODO Tests\Features\DatasetsTests - 1 todo
↓ forbids to define tests in Datasets dirs and Datasets.php files
TODO Tests\Features\Describe - 5 todos
↓ todo
↓ todo on hook → should not fail
↓ todo on hook → should run
↓ todo on describe → should not fail
↓ todo on describe → should run
TODO Tests\Features\Todo - 3 todos
↓ something todo later
↓ something todo later chained
↓ something todo later chained and with function body
PASS Tests\CustomTestCase\ChildTest
✓ override method
PASS Tests\CustomTestCase\ExecutedTest
✓ that gets executed
PASS Tests\CustomTestCase\ParentTest
✓ override method
Tests: 13 todos, 3 passed (3 assertions)

View File

@ -2,12 +2,12 @@
use Pest\Expectation;
test('globals')
arch('globals')
->expect(['dd', 'dump', 'ray', 'die', 'var_dump', 'sleep'])
->not->toBeUsed()
->ignoring(Expectation::class);
test('dependencies')
arch('dependencies')
->expect('Pest')
->toOnlyUse([
'dd',
@ -24,7 +24,7 @@ test('dependencies')
'Symfony\Component\Process',
])->ignoring(['Composer', 'PHPUnit', 'SebastianBergmann']);
test('contracts')
arch('contracts')
->expect('Pest\Contracts')
->toOnlyUse([
'NunoMaduro\Collision\Contracts',

View File

@ -103,6 +103,26 @@ test('pass with array', function () {
])->toMatchSnapshot();
});
test('pass with `toSnapshot`', function () {
TestSuite::getInstance()->snapshots->save(json_encode(['key' => $this->snapshotable], JSON_PRETTY_PRINT));
$object = new class($this->snapshotable)
{
public function __construct(protected string $snapshotable)
{
}
public function toSnapshot()
{
return json_encode([
'key' => $this->snapshotable,
], JSON_PRETTY_PRINT);
}
};
expect($object)->toMatchSnapshot();
});
test('failures', function () {
TestSuite::getInstance()->snapshots->save($this->snapshotable);

View File

@ -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, 952 passed (2266 assertions)')
->toContain('Tests: 1 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 15 skipped, 953 passed (2267 assertions)')
->toContain('Parallel: 3 processes');
})->skipOnWindows();

View File

@ -26,10 +26,18 @@ $snapshot = function ($name) {
]));
};
test('todos', function () use ($run, $snapshot) {
expect($run('--todos', false))->toContain($snapshot('todos'));
})->skipOnWindows();
test('todos in parallel', function () use ($run, $snapshot) {
expect($run('--todos', true))->toContain($snapshot('todos'));
})->skipOnWindows();
test('todo', function () use ($run, $snapshot) {
expect($run('--todos', false))->toContain($snapshot('todo'));
expect($run('--todo', false))->toContain($snapshot('todo'));
})->skipOnWindows();
test('todo in parallel', function () use ($run, $snapshot) {
expect($run('--todos', true))->toContain($snapshot('todo'));
expect($run('--todo', true))->toContain($snapshot('todo'));
})->skipOnWindows();