diff --git a/composer.json b/composer.json index 4d77bb41..0ec51485 100644 --- a/composer.json +++ b/composer.json @@ -85,6 +85,7 @@ }, "pest": { "plugins": [ + "Pest\\Plugins\\Thanks", "Pest\\Plugins\\Version" ] }, diff --git a/src/Plugins/Thanks.php b/src/Plugins/Thanks.php new file mode 100644 index 00000000..eef88dde --- /dev/null +++ b/src/Plugins/Thanks.php @@ -0,0 +1,46 @@ + */ + private const FUNDING_MESSAGES = [ + "\n Want to support Pest? Here are some ways you can help:", + "\n - Star or contribute to Pest on GitHub:\n https://github.com/pestphp/pest", + "\n - Tweet about Pest on Twitter:\n https://twitter.com/pestphp", + "\n - Sponsor Nuno Maduro on GitHub:\n https://github.com/sponsors/nunomaduro", + "\n - Sponsor Nuno Maduro on Patreon:\n https://patreon.com/nunomaduro", + ]; + + /** @var OutputInterface */ + private $output; + + public function __construct(OutputInterface $output) + { + $this->output = $output; + } + + public function handleArguments(array $arguments): array + { + if (!in_array(self::THANKS_OPTION, $arguments, true)) { + return $arguments; + } + + foreach (self::FUNDING_MESSAGES as $message) { + $this->output->writeln($message); + } + + exit(0); + } +} diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 8d8e3e56..825a42c8 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -135,6 +135,10 @@ ✓ it throws exception when `process isolation` is true ✓ it do not throws exception when `process isolation` is false + WARN Tests\Unit\Plugins\Thanks + - it outputs funding options when --thanks is used → The plugin uses `exit()` so not sure how to implement this + ✓ it does not output funding options when --thanks is not used + PASS Tests\Unit\Plugins\Version ✓ it outputs the version when --version is used ✓ it do not outputs version when --version is not used @@ -167,5 +171,5 @@ WARN Tests\Visual\Success - visual snapshot of test suite on success - Tests: 6 skipped, 96 passed - Time: 3.56s + Tests: 7 skipped, 97 passed + Time: 3.57s diff --git a/tests/Unit/Plugins/Thanks.php b/tests/Unit/Plugins/Thanks.php new file mode 100644 index 00000000..837fbd32 --- /dev/null +++ b/tests/Unit/Plugins/Thanks.php @@ -0,0 +1,14 @@ +skip('The plugin uses `exit()` so not sure how to implement this'); + +it('does not output funding options when --thanks is not used', function () { + $output = new BufferedOutput(); + $plugin = new Thanks($output); + + $plugin->handleArguments(['foo', 'bar']); + assertEquals('', $output->fetch()); +});