From 3c7d538254bbf4db31958763d85d350326866d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Ostroluck=C3=BD?= Date: Mon, 8 Jan 2018 01:32:00 +0100 Subject: [PATCH] Don't remove abstract plugins These abstract definitions are needed for client plugin definitions, even if plugins weren't configured at root level. Removal of unused abstract definitions is job of DI container. --- DependencyInjection/HttplugExtension.php | 2 -- .../config/cache_config_with_no_pool.yml | 3 +++ .../client_cache_config_with_no_pool.yml | 5 +++++ .../DependencyInjection/ConfigurationTest.php | 20 +++++++++++++++++++ .../HttplugExtensionTest.php | 6 ++++++ 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 Tests/Resources/Fixtures/config/cache_config_with_no_pool.yml create mode 100644 Tests/Resources/Fixtures/config/client_cache_config_with_no_pool.yml diff --git a/DependencyInjection/HttplugExtension.php b/DependencyInjection/HttplugExtension.php index e8afe492..d9aea61f 100644 --- a/DependencyInjection/HttplugExtension.php +++ b/DependencyInjection/HttplugExtension.php @@ -127,8 +127,6 @@ private function configurePlugins(ContainerBuilder $container, array $config) if ($this->isConfigEnabled($container, $pluginConfig)) { $def = $container->getDefinition($pluginId); $this->configurePluginByName($name, $def, $pluginConfig, $container, $pluginId); - } else { - $container->removeDefinition($pluginId); } } } diff --git a/Tests/Resources/Fixtures/config/cache_config_with_no_pool.yml b/Tests/Resources/Fixtures/config/cache_config_with_no_pool.yml new file mode 100644 index 00000000..3c292d13 --- /dev/null +++ b/Tests/Resources/Fixtures/config/cache_config_with_no_pool.yml @@ -0,0 +1,3 @@ +httplug: + plugins: + cache: ~ diff --git a/Tests/Resources/Fixtures/config/client_cache_config_with_no_pool.yml b/Tests/Resources/Fixtures/config/client_cache_config_with_no_pool.yml new file mode 100644 index 00000000..efe4a00e --- /dev/null +++ b/Tests/Resources/Fixtures/config/client_cache_config_with_no_pool.yml @@ -0,0 +1,5 @@ +httplug: + clients: + test: + plugins: + - cache: ~ diff --git a/Tests/Unit/DependencyInjection/ConfigurationTest.php b/Tests/Unit/DependencyInjection/ConfigurationTest.php index 0978cb8d..91200789 100644 --- a/Tests/Unit/DependencyInjection/ConfigurationTest.php +++ b/Tests/Unit/DependencyInjection/ConfigurationTest.php @@ -355,4 +355,24 @@ public function testProfilingToolbarCollision() $file = __DIR__.'/../../Resources/Fixtures/config/bc/profiling_toolbar.yml'; $this->assertProcessedConfigurationEquals([], [$file]); } + + /** + * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException + * @expectedExceptionMessage The child node "cache_pool" at path "httplug.clients.test.plugins.0.cache" must be configured. + */ + public function testClientCacheConfigMustHavePool() + { + $file = __DIR__.'/../../Resources/Fixtures/config/client_cache_config_with_no_pool.yml'; + $this->assertProcessedConfigurationEquals([], [$file]); + } + + /** + * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException + * @expectedExceptionMessage The child node "cache_pool" at path "httplug.plugins.cache" must be configured. + */ + public function testCacheConfigMustHavePool() + { + $file = __DIR__.'/../../Resources/Fixtures/config/cache_config_with_no_pool.yml'; + $this->assertProcessedConfigurationEquals([], [$file]); + } } diff --git a/Tests/Unit/DependencyInjection/HttplugExtensionTest.php b/Tests/Unit/DependencyInjection/HttplugExtensionTest.php index 686dae7c..29d71da2 100644 --- a/Tests/Unit/DependencyInjection/HttplugExtensionTest.php +++ b/Tests/Unit/DependencyInjection/HttplugExtensionTest.php @@ -110,6 +110,11 @@ public function testClientPlugins() ], ], ], + [ + 'cache' => [ + 'cache_pool' => 'my_cache_pool', + ], + ], ], ], ], @@ -124,6 +129,7 @@ public function testClientPlugins() 'httplug.client.acme.plugin.header_set', 'httplug.client.acme.plugin.header_remove', 'httplug.client.acme.authentication.my_basic', + 'httplug.client.acme.plugin.cache', ]; $pluginReferences = array_map(function ($id) { return new Reference($id);