Merge branch '2.0'

* 2.0:
  Generate changelog for v2.0.8
  Initialize contexts registered as services
This commit is contained in:
Kamil Kokot
2019-03-21 17:26:59 +01:00
6 changed files with 103 additions and 3 deletions

View File

@@ -16,6 +16,7 @@ namespace FriendsOfBehat\SymfonyExtension\Context\Environment\Handler;
use Behat\Behat\Context\Context;
use Behat\Behat\Context\Environment\ContextEnvironment;
use Behat\Behat\Context\Environment\InitializedContextEnvironment;
use Behat\Behat\Context\Initializer\ContextInitializer;
use Behat\Testwork\Environment\Environment;
use Behat\Testwork\Environment\Exception\EnvironmentIsolationException;
use Behat\Testwork\Environment\Handler\EnvironmentHandler;
@@ -36,12 +37,20 @@ final class ContextServiceEnvironmentHandler implements EnvironmentHandler
/** @var EnvironmentHandler */
private $decoratedEnvironmentHandler;
/** @var ContextInitializer[] */
private $contextInitializers = [];
public function __construct(KernelInterface $symfonyKernel, EnvironmentHandler $decoratedEnvironmentHandler)
{
$this->symfonyKernel = $symfonyKernel;
$this->decoratedEnvironmentHandler = $decoratedEnvironmentHandler;
}
public function registerContextInitializer(ContextInitializer $contextInitializer): void
{
$this->contextInitializers[] = $contextInitializer;
}
public function supportsSuite(Suite $suite): bool
{
return $suite->hasSetting('contexts');
@@ -87,6 +96,8 @@ final class ContextServiceEnvironmentHandler implements EnvironmentHandler
/** @var Context $context */
$context = $this->getContainer()->get($serviceId);
$this->initializeContext($context);
$environment->registerContext($context);
}
@@ -100,6 +111,13 @@ final class ContextServiceEnvironmentHandler implements EnvironmentHandler
return $environment;
}
private function initializeContext(Context $context): void
{
foreach ($this->contextInitializers as $contextInitializer) {
$contextInitializer->initializeContext($context);
}
}
/**
* @return string[]
*

View File

@@ -91,6 +91,7 @@ final class SymfonyExtension implements Extension
public function process(ContainerBuilder $container): void
{
$this->processEnvironmentHandler($container);
}
private function registerMinkDriver(ExtensionManager $extensionManager): void
@@ -185,6 +186,14 @@ final class SymfonyExtension implements Extension
}
}
private function processEnvironmentHandler(ContainerBuilder $container): void
{
$definition = $container->findDefinition('fob_symfony.environment_handler.context_service');
foreach ($container->findTaggedServiceIds(ContextExtension::INITIALIZER_TAG) as $serviceId => $tags) {
$definition->addMethodCall('registerContextInitializer', [$container->getDefinition($serviceId)]);
}
}
private function autodiscoverKernelConfiguration(array $config): array
{
if ($config['class'] !== null) {