diff --git a/CHANGELOG.md b/CHANGELOG.md index aba3fe63..a901ee7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,17 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [v.1.3.2 (2021-06-07)](https://github.com/pestphp/pest/compare/v1.3.1...v1.3.2) +### Fixed +- Test cases with the @ symbol in the directory fail ([#308](https://github.com/pestphp/pest/pull/308)) + ## [v1.3.1 (2021-06-06)](https://github.com/pestphp/pest/compare/v1.3.0...v1.3.1) ### Added - Added for PHPUnit 9.5.5 ([#310](https://github.com/pestphp/pest/pull/310)) +### Changed +- Lock minimum Pest plugin versions ([#306](https://github.com/pestphp/pest/pull/306)) + ## [v1.3.0 (2021-05-23)](https://github.com/pestphp/pest/compare/v1.2.1...v1.3.0) ### Added - Named datasets no longer show the arguments ([#302](https://github.com/pestphp/pest/pull/302)) diff --git a/src/Pest.php b/src/Pest.php index d0ae86c4..505d1ac6 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ namespace Pest; function version(): string { - return '1.3.0'; + return '1.3.2'; } function testDirectory(string $file = ''): string diff --git a/src/Repositories/TestRepository.php b/src/Repositories/TestRepository.php index ab49291e..b2eb4893 100644 --- a/src/Repositories/TestRepository.php +++ b/src/Repositories/TestRepository.php @@ -19,6 +19,11 @@ use PHPUnit\Framework\TestCase; */ final class TestRepository { + /** + * @var string + */ + private const SEPARATOR = '>>>'; + /** * @var array */ @@ -50,7 +55,7 @@ final class TestRepository [$classOrTraits, $groups, $hooks] = $uses; $setClassName = function (TestCaseFactory $testCase, string $key) use ($path, $classOrTraits, $groups, $startsWith, $hooks): void { - [$filename] = explode('@', $key); + [$filename] = explode(self::SEPARATOR, $key); if ((!is_dir($path) && $filename === $path) || (is_dir($path) && $startsWith($filename, $path))) { foreach ($classOrTraits as $class) { /** @var string $class */ @@ -131,10 +136,10 @@ final class TestRepository throw ShouldNotHappen::fromMessage('Trying to create a test without description.'); } - if (array_key_exists(sprintf('%s@%s', $test->filename, $test->description), $this->state)) { + if (array_key_exists(sprintf('%s%s%s', $test->filename, self::SEPARATOR, $test->description), $this->state)) { throw new TestAlreadyExist($test->filename, $test->description); } - $this->state[sprintf('%s@%s', $test->filename, $test->description)] = $test; + $this->state[sprintf('%s%s%s', $test->filename, self::SEPARATOR, $test->description)] = $test; } } diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index e62d3220..d392dedc 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -51,45 +51,6 @@ ✓ it creates unique test case names with ('Name 2', Pest\Plugin Object (), true) ✓ it creates unique test case names with ('Name 1', Pest\Plugin Object (), true) #3 ✓ it creates unique test case names - count - ✓ lazy multiple datasets with (1) / (3) - ✓ lazy multiple datasets with (1) / (4) - ✓ lazy multiple datasets with (2) / (3) - ✓ lazy multiple datasets with (2) / (4) - ✓ lazy multiple datasets did the job right - ✓ eager multiple datasets with (1) / (3) - ✓ eager multiple datasets with (1) / (4) - ✓ eager multiple datasets with (2) / (3) - ✓ eager multiple datasets with (2) / (4) - ✓ eager multiple datasets did the job right - ✓ lazy registered multiple datasets with (1) / (1) - ✓ lazy registered multiple datasets with (1) / (2) - ✓ lazy registered multiple datasets with (2) / (1) - ✓ lazy registered multiple datasets with (2) / (2) - ✓ lazy registered multiple datasets did the job right - ✓ eager registered multiple datasets with (1) / (1) - ✓ eager registered multiple datasets with (1) / (2) - ✓ eager registered multiple datasets with (2) / (1) - ✓ eager registered multiple datasets with (2) / (2) - ✓ eager registered multiple datasets did the job right - ✓ eager wrapped registered multiple datasets with (1) / (1) - ✓ eager wrapped registered multiple datasets with (1) / (2) - ✓ eager wrapped registered multiple datasets with (2) / (1) - ✓ eager wrapped registered multiple datasets with (2) / (2) - ✓ eager wrapped registered multiple datasets did the job right - ✓ named multiple datasets with data set "one" / data set "three" - ✓ named multiple datasets with data set "one" / data set "four" - ✓ named multiple datasets with data set "two" / data set "three" - ✓ named multiple datasets with data set "two" / data set "four" - ✓ named multiple datasets did the job right - ✓ more than two datasets with (1) / (3) / (5) - ✓ more than two datasets with (1) / (3) / (6) - ✓ more than two datasets with (1) / (4) / (5) - ✓ more than two datasets with (1) / (4) / (6) - ✓ more than two datasets with (2) / (3) / (5) - ✓ more than two datasets with (2) / (3) / (6) - ✓ more than two datasets with (2) / (4) / (5) - ✓ more than two datasets with (2) / (4) / (6) - ✓ more than two datasets did the job right PASS Tests\Features\Exceptions ✓ it gives access the the underlying expectException @@ -161,6 +122,10 @@ PASS Tests\PHPUnit\CustomAffixes\AdditionalFileExtensionspec ✓ it runs file names like `AdditionalFileExtension.spec.php` + PASS Tests\PHPUnit\CustomAffixes\FolderWithAn\ExampleTest + ✓ custom traits can be used + ✓ trait applied in this file + PASS Tests\PHPUnit\CustomAffixes\ManyExtensionsclasstest ✓ it runs file names like `ManyExtensions.class.test.php` @@ -209,9 +174,6 @@ PASS Tests\Unit\Datasets ✓ it show only the names of named datasets in their description ✓ it show the actual dataset of non-named datasets in their description - ✓ it show only the names of multiple named datasets in their description - ✓ it show the actual dataset of multiple non-named datasets in their description - ✓ it show the correct description for mixed named and not-named datasets PASS Tests\Unit\Plugins\Version ✓ it outputs the version when --version is used @@ -262,5 +224,5 @@ ✓ it is a test ✓ it uses correct parent class - Tests: 7 skipped, 162 passed + Tests: 7 skipped, 122 passed \ No newline at end of file diff --git a/tests/PHPUnit/CustomAffixes/FolderWithAn@/ExampleTest.php b/tests/PHPUnit/CustomAffixes/FolderWithAn@/ExampleTest.php new file mode 100644 index 00000000..351e0612 --- /dev/null +++ b/tests/PHPUnit/CustomAffixes/FolderWithAn@/ExampleTest.php @@ -0,0 +1,19 @@ +assertTrue(true); + } +} + +uses(MyCustomClassTest::class); + +test('custom traits can be used', function () { + $this->assertTrueIsTrue(); +}); + +test('trait applied in this file')->assertTrueIsTrue();