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": "^1.7",
"behat/mink-browserkit-driver": "^1.3", "behat/mink-browserkit-driver": "^1.3",
"behat/mink-extension": "^2.2", "behat/mink-extension": "^2.2",
"friends-of-behat/cross-container-extension": "^0.1",
"friends-of-behat/test-context": "^0.3", "friends-of-behat/test-context": "^0.3",
"symfony/framework-bundle": "^2.7|^3.0" "symfony/framework-bundle": "^2.7|^3.0"
}, },
"suggest": { "suggest": {
"behat/mink-browserkit-driver": "^1.3" "behat/mink-browserkit-driver": "^1.3",
"friends-of-behat/cross-container-extension": "^0.1"
}, },
"autoload": { "autoload": {
"psr-4": { "FriendsOfBehat\\SymfonyExtension\\": "src/" } "psr-4": { "FriendsOfBehat\\SymfonyExtension\\": "src/" }

View File

@@ -28,3 +28,31 @@ Feature: Not crashing Behat
And a feature file with passing scenario And a feature file with passing scenario
When I run Behat When I run Behat
Then it should pass 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\EventDispatcher\ServiceContainer\EventDispatcherExtension;
use Behat\Testwork\ServiceContainer\Extension; use Behat\Testwork\ServiceContainer\Extension;
use Behat\Testwork\ServiceContainer\ExtensionManager; 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\Driver\Factory\SymfonyDriverFactory;
use FriendsOfBehat\SymfonyExtension\Listener\KernelRebooter; use FriendsOfBehat\SymfonyExtension\Listener\KernelRebooter;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\Container; use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition; 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'; const SHARED_KERNEL_CONTAINER_ID = 'sylius_symfony_extension.shared_kernel.container';
/**
* @var CrossContainerProcessor|null
*/
private $crossContainerProcessor;
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@@ -69,6 +78,7 @@ final class SymfonyExtension implements Extension
public function initialize(ExtensionManager $extensionManager) public function initialize(ExtensionManager $extensionManager)
{ {
$this->registerSymfonyDriverFactory($extensionManager); $this->registerSymfonyDriverFactory($extensionManager);
$this->initializeCrossContainerProcessor($extensionManager);
} }
/** /**
@@ -104,6 +114,7 @@ final class SymfonyExtension implements Extension
$this->loadSharedKernelContainer($container); $this->loadSharedKernelContainer($container);
$this->loadKernelRebooter($container); $this->loadKernelRebooter($container);
$this->declareSymfonyContainers($container);
} }
/** /**
@@ -185,6 +196,36 @@ final class SymfonyExtension implements Extension
$container->setDefinition(self::KERNEL_ID . '.rebooter', $definition); $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 * @param ExtensionManager $extensionManager
*/ */