Merge pull request #7 from pamil/cross-container-extension

Integrate with CrossContainerExtension
This commit is contained in:
Kamil Kokot
2016-11-03 13:35:37 +01:00
committed by GitHub
3 changed files with 72 additions and 1 deletions

View File

@@ -19,11 +19,13 @@
"behat/mink": "^1.7",
"behat/mink-browserkit-driver": "^1.3",
"behat/mink-extension": "^2.2",
"friends-of-behat/cross-container-extension": "^0.1",
"friends-of-behat/test-context": "^0.3",
"symfony/framework-bundle": "^2.7|^3.0"
},
"suggest": {
"behat/mink-browserkit-driver": "^1.3"
"behat/mink-browserkit-driver": "^1.3",
"friends-of-behat/cross-container-extension": "^0.1"
},
"autoload": {
"psr-4": { "FriendsOfBehat\\SymfonyExtension\\": "src/" }

View File

@@ -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

View File

@@ -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
*/