Update plugin interfaces and instantiate container

This commit is contained in:
johannes.pichler
2020-06-05 07:48:51 +02:00
parent b20f208b55
commit 337e751200
6 changed files with 31 additions and 17 deletions

View File

@ -3,8 +3,10 @@
use Pest\Actions\ValidatesEnvironment; use Pest\Actions\ValidatesEnvironment;
use Pest\Console\Command; use Pest\Console\Command;
use Pest\Support\Container;
use Pest\TestSuite; use Pest\TestSuite;
use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Output\OutputInterface;
(static function () { (static function () {
// Used when Pest is required using composer. // Used when Pest is required using composer.
@ -24,8 +26,13 @@ use Symfony\Component\Console\Output\ConsoleOutput;
$rootPath = getcwd(); $rootPath = getcwd();
$testSuite = TestSuite::getInstance($rootPath); $testSuite = TestSuite::getInstance($rootPath);
$output = new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, true);
$container = Container::getInstance();
$container->add(TestSuite::class, $testSuite);
$container->add(OutputInterface::class, $output);
ValidatesEnvironment::in($testSuite); ValidatesEnvironment::in($testSuite);
exit((new Command($testSuite, new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, true)))->run($_SERVER['argv'])); exit($container->get(Command::class)->run($_SERVER['argv']));
})(); })();

View File

@ -62,7 +62,7 @@ final class Command extends BaseCommand
/** @var HandlesArguments $plugin */ /** @var HandlesArguments $plugin */
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
$argv = $plugin->handleArguments($this->testSuite, $argv); $argv = $plugin->handleArguments($argv);
} }
/* /*
@ -134,7 +134,7 @@ final class Command extends BaseCommand
/** @var AddsOutput $plugin */ /** @var AddsOutput $plugin */
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
$result = $plugin->addOutput($this->testSuite, $this->output, $result); $result = $plugin->addOutput($result);
} }
exit($result); exit($result);

View File

@ -4,9 +4,6 @@ declare(strict_types=1);
namespace Pest\Contracts\Plugins; namespace Pest\Contracts\Plugins;
use Pest\TestSuite;
use Symfony\Component\Console\Output\OutputInterface;
/** /**
* @internal * @internal
*/ */
@ -15,5 +12,5 @@ interface AddsOutput
/** /**
* Allows to add custom output after the test suite was executed. * Allows to add custom output after the test suite was executed.
*/ */
public function addOutput(TestSuite $testSuite, OutputInterface $output, int $testReturnCode): int; public function addOutput(int $testReturnCode): int;
} }

View File

@ -4,8 +4,6 @@ declare(strict_types=1);
namespace Pest\Contracts\Plugins; namespace Pest\Contracts\Plugins;
use Pest\TestSuite;
/** /**
* @internal * @internal
*/ */
@ -21,5 +19,5 @@ interface HandlesArguments
* *
* @return array<int, string> the updated list of arguments * @return array<int, string> the updated list of arguments
*/ */
public function handleArguments(TestSuite $testSuite, array $arguments): array; public function handleArguments(array $arguments): array;
} }

View File

@ -13,11 +13,28 @@ use ReflectionParameter;
*/ */
final class Container final class Container
{ {
/**
* @var self
*/
private static $instance;
/** /**
* @var array<string, mixed> * @var array<string, mixed>
*/ */
private $instances = []; private $instances = [];
/**
* Gets a new or already existing container.
*/
public static function getInstance(): self
{
if (static::$instance === null) {
static::$instance = new static();
}
return static::$instance;
}
/** /**
* Gets a dependency from the container. * Gets a dependency from the container.
* *

View File

@ -143,10 +143,5 @@
WARN Tests\Visual\Success WARN Tests\Visual\Success
s visual snapshot of test suite on success s visual snapshot of test suite on success
<<<<<<< HEAD Tests: 6 skipped, 78 passed
Tests: 6 skipped, 71 passed Time: 3.37s
Time: 2.89s
=======
Tests: 6 skipped, 76 passed
Time: 3.32s
>>>>>>> 84c9078... Add basic container implementation