From 4496e9d9eefcab0e3df84696a83cf44a979b23a0 Mon Sep 17 00:00:00 2001 From: Michael Dyrynda Date: Sat, 23 May 2020 20:52:15 +0930 Subject: [PATCH 1/3] Add support for installing Pest into a Lumen application This entails creating Laravel and Lumen-specific stubs, and ensuring that the appropriate stubs are copied as part of the pest install. --- src/Laravel/Commands/PestInstallCommand.php | 15 +++++++++++++-- stubs/{ => Laravel}/Helpers.php | 0 stubs/{ => Laravel}/Pest.php | 0 stubs/{ => Laravel}/phpunit.xml | 0 stubs/Lumen/Helpers.php | 11 +++++++++++ stubs/Lumen/Pest.php | 3 +++ stubs/Lumen/phpunit.xml | 17 +++++++++++++++++ 7 files changed, 44 insertions(+), 2 deletions(-) rename stubs/{ => Laravel}/Helpers.php (100%) rename stubs/{ => Laravel}/Pest.php (100%) rename stubs/{ => Laravel}/phpunit.xml (100%) create mode 100644 stubs/Lumen/Helpers.php create mode 100644 stubs/Lumen/Pest.php create mode 100644 stubs/Lumen/phpunit.xml diff --git a/src/Laravel/Commands/PestInstallCommand.php b/src/Laravel/Commands/PestInstallCommand.php index 17a71095..696eba6b 100644 --- a/src/Laravel/Commands/PestInstallCommand.php +++ b/src/Laravel/Commands/PestInstallCommand.php @@ -7,6 +7,7 @@ namespace Pest\Laravel\Commands; use Illuminate\Console\Command; use Illuminate\Support\Facades\File; use Pest\Exceptions\InvalidConsoleArgument; +use Pest\Support\Str; /** * @internal @@ -36,6 +37,8 @@ final class PestInstallCommand extends Command $pest = base_path('tests/Pest.php'); /* @phpstan-ignore-next-line */ $helpers = base_path('tests/Helpers.php'); + /* @phpstan-ignore-next-line */ + $stubs = $this->isLumen() ? 'stubs/Lumen' : 'stubs/Laravel'; foreach ([$pest, $helpers] as $file) { if (File::exists($file)) { @@ -45,17 +48,25 @@ final class PestInstallCommand extends Command File::copy(implode(DIRECTORY_SEPARATOR, [ dirname(__DIR__, 3), - 'stubs', + $stubs, 'Pest.php', ]), $pest); File::copy(implode(DIRECTORY_SEPARATOR, [ dirname(__DIR__, 3), - 'stubs', + $stubs, 'Helpers.php', ]), $helpers); $this->output->success('`tests/Pest.php` created successfully.'); $this->output->success('`tests/Helpers.php` created successfully.'); } + + /** + * Determine if this is a Lumen application. + */ + protected function isLumen(): bool + { + return Str::startsWith(app()->version(), 'Lumen'); + } } diff --git a/stubs/Helpers.php b/stubs/Laravel/Helpers.php similarity index 100% rename from stubs/Helpers.php rename to stubs/Laravel/Helpers.php diff --git a/stubs/Pest.php b/stubs/Laravel/Pest.php similarity index 100% rename from stubs/Pest.php rename to stubs/Laravel/Pest.php diff --git a/stubs/phpunit.xml b/stubs/Laravel/phpunit.xml similarity index 100% rename from stubs/phpunit.xml rename to stubs/Laravel/phpunit.xml diff --git a/stubs/Lumen/Helpers.php b/stubs/Lumen/Helpers.php new file mode 100644 index 00000000..03f67ea2 --- /dev/null +++ b/stubs/Lumen/Helpers.php @@ -0,0 +1,11 @@ +actingAs($user, $driver); +} diff --git a/stubs/Lumen/Pest.php b/stubs/Lumen/Pest.php new file mode 100644 index 00000000..43d41c89 --- /dev/null +++ b/stubs/Lumen/Pest.php @@ -0,0 +1,3 @@ + + + + + ./tests + + + + + ./app + + + From c23f2e4bd6bf8ac7c557c2cf41ab80c61147d92a Mon Sep 17 00:00:00 2001 From: Michael Dyrynda Date: Sat, 23 May 2020 21:09:28 +0930 Subject: [PATCH 2/3] fix errors from type checks --- src/Laravel/Commands/PestInstallCommand.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Laravel/Commands/PestInstallCommand.php b/src/Laravel/Commands/PestInstallCommand.php index 696eba6b..8b617c87 100644 --- a/src/Laravel/Commands/PestInstallCommand.php +++ b/src/Laravel/Commands/PestInstallCommand.php @@ -37,8 +37,7 @@ final class PestInstallCommand extends Command $pest = base_path('tests/Pest.php'); /* @phpstan-ignore-next-line */ $helpers = base_path('tests/Helpers.php'); - /* @phpstan-ignore-next-line */ - $stubs = $this->isLumen() ? 'stubs/Lumen' : 'stubs/Laravel'; + $stubs = $this->isLumen() ? 'stubs/Lumen' : 'stubs/Laravel'; foreach ([$pest, $helpers] as $file) { if (File::exists($file)) { @@ -65,8 +64,9 @@ final class PestInstallCommand extends Command /** * Determine if this is a Lumen application. */ - protected function isLumen(): bool + private function isLumen(): bool { + /* @phpstan-ignore-next-line */ return Str::startsWith(app()->version(), 'Lumen'); } } From 2869f11ae59ba7c7ef1c415f9eb61707f4fd83f1 Mon Sep 17 00:00:00 2001 From: Michael Dyrynda Date: Sun, 24 May 2020 13:36:17 +0930 Subject: [PATCH 3/3] use `->in(__DIR__)` in base `Pest.php` file --- stubs/Lumen/Pest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/Lumen/Pest.php b/stubs/Lumen/Pest.php index 43d41c89..937ef889 100644 --- a/stubs/Lumen/Pest.php +++ b/stubs/Lumen/Pest.php @@ -1,3 +1,3 @@ in(__DIR__);