Integrate with CrossContainerExtension
This commit is contained in:
@@ -28,3 +28,31 @@ Feature: Not crashing Behat
|
||||
And a feature file with passing scenario
|
||||
When I run Behat
|
||||
Then it should pass
|
||||
|
||||
Scenario: Not crashing Behat with CrossContainerExtension
|
||||
Given a Behat configuration containing:
|
||||
"""
|
||||
default:
|
||||
extensions:
|
||||
FriendsOfBehat\SymfonyExtension:
|
||||
kernel:
|
||||
bootstrap: ~
|
||||
|
||||
FriendsOfBehat\CrossContainerExtension: ~
|
||||
"""
|
||||
And a file "app/AppKernel.php" containing:
|
||||
"""
|
||||
<?php
|
||||
|
||||
use Symfony\Component\HttpKernel\Kernel;
|
||||
use Symfony\Component\Config\Loader\LoaderInterface;
|
||||
|
||||
class AppKernel extends Kernel
|
||||
{
|
||||
public function registerBundles() { return []; }
|
||||
public function registerContainerConfiguration(LoaderInterface $loader) {}
|
||||
}
|
||||
"""
|
||||
And a feature file with passing scenario
|
||||
When I run Behat
|
||||
Then it should pass
|
||||
|
||||
@@ -15,9 +15,13 @@ use Behat\MinkExtension\ServiceContainer\MinkExtension;
|
||||
use Behat\Testwork\EventDispatcher\ServiceContainer\EventDispatcherExtension;
|
||||
use Behat\Testwork\ServiceContainer\Extension;
|
||||
use Behat\Testwork\ServiceContainer\ExtensionManager;
|
||||
use FriendsOfBehat\CrossContainerExtension\CrossContainerProcessor;
|
||||
use FriendsOfBehat\CrossContainerExtension\KernelBasedContainerAccessor;
|
||||
use FriendsOfBehat\CrossContainerExtension\ServiceContainer\CrossContainerExtension;
|
||||
use FriendsOfBehat\SymfonyExtension\Driver\Factory\SymfonyDriverFactory;
|
||||
use FriendsOfBehat\SymfonyExtension\Listener\KernelRebooter;
|
||||
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
|
||||
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
||||
use Symfony\Component\DependencyInjection\Container;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Definition;
|
||||
@@ -55,6 +59,11 @@ final class SymfonyExtension implements Extension
|
||||
*/
|
||||
const SHARED_KERNEL_CONTAINER_ID = 'sylius_symfony_extension.shared_kernel.container';
|
||||
|
||||
/**
|
||||
* @var CrossContainerProcessor|null
|
||||
*/
|
||||
private $crossContainerProcessor;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
@@ -69,6 +78,7 @@ final class SymfonyExtension implements Extension
|
||||
public function initialize(ExtensionManager $extensionManager)
|
||||
{
|
||||
$this->registerSymfonyDriverFactory($extensionManager);
|
||||
$this->initializeCrossContainerProcessor($extensionManager);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -104,6 +114,7 @@ final class SymfonyExtension implements Extension
|
||||
$this->loadSharedKernelContainer($container);
|
||||
|
||||
$this->loadKernelRebooter($container);
|
||||
$this->declareSymfonyContainers($container);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -185,6 +196,36 @@ final class SymfonyExtension implements Extension
|
||||
$container->setDefinition(self::KERNEL_ID . '.rebooter', $definition);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ContainerBuilder $container
|
||||
*/
|
||||
private function declareSymfonyContainers(ContainerBuilder $container)
|
||||
{
|
||||
if (null !== $this->crossContainerProcessor) {
|
||||
$this->crossContainerProcessor->addContainerAccessor(
|
||||
'symfony',
|
||||
new KernelBasedContainerAccessor($container->get(self::KERNEL_ID))
|
||||
);
|
||||
|
||||
$this->crossContainerProcessor->addContainerAccessor(
|
||||
'symfony',
|
||||
new KernelBasedContainerAccessor($container->get(self::SHARED_KERNEL_ID))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ExtensionManager $extensionManager
|
||||
*/
|
||||
private function initializeCrossContainerProcessor(ExtensionManager $extensionManager)
|
||||
{
|
||||
/** @var CrossContainerExtension $extension */
|
||||
$extension = $extensionManager->getExtension('fob_cross_container');
|
||||
if (null !== $extension) {
|
||||
$this->crossContainerProcessor = $extension->getCrossContainerProcessor();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ExtensionManager $extensionManager
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user