From e64f8f54573184c1c92437d2875d8f96b5f24638 Mon Sep 17 00:00:00 2001 From: Malachi Soord Date: Mon, 2 Sep 2019 13:39:20 +0200 Subject: [PATCH] Fix bug and add deprecated warning for removed --- DependencyInjection/MonologExtension.php | 12 ++++++-- .../MonologExtensionTest.php | 29 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/DependencyInjection/MonologExtension.php b/DependencyInjection/MonologExtension.php index fdf56c30..ec1e3220 100644 --- a/DependencyInjection/MonologExtension.php +++ b/DependencyInjection/MonologExtension.php @@ -947,15 +947,23 @@ private function getHandlerClassByType($handlerType) $v2HandlerTypesRemoved = [ 'hipchat', 'raven', + 'slackbot', ]; if (Logger::API === 2) { $typeToClassMapping = array_merge($typeToClassMapping, $v2HandlerTypesAdded); - foreach($v2HandlerTypesRemoved as $handlerType) { - unset($typeToClassMapping[$handlerType]); + foreach($v2HandlerTypesRemoved as $v2HandlerTypeRemoved) { + unset($typeToClassMapping[$v2HandlerTypeRemoved]); } } + if (Logger::API === 1 && array_key_exists($handlerType, $v2HandlerTypesRemoved)) { + @trigger_error( + sprintf('"%s" is deprecated and will be removed in MonoLog v2.', $handlerType), + E_USER_DEPRECATED + ); + } + if (!isset($typeToClassMapping[$handlerType])) { if (Logger::API === 1 && array_key_exists($handlerType, $v2HandlerTypesAdded)) { throw new InvalidArgumentException( diff --git a/Tests/DependencyInjection/MonologExtensionTest.php b/Tests/DependencyInjection/MonologExtensionTest.php index 41f31b4f..e2d44e8b 100644 --- a/Tests/DependencyInjection/MonologExtensionTest.php +++ b/Tests/DependencyInjection/MonologExtensionTest.php @@ -532,6 +532,35 @@ public function testFingersCrossedHandlerWhenExcludedHttpCodesAreSpecified() $this->assertDICConstructorArguments($handler, [new Reference('monolog.handler.nested'), new Reference('monolog.handler.main.http_code_strategy'), 0, true, true, null]); } + /** + * @param string $handlerType + * @dataProvider v2RemovedDataProvider + */ + public function testMonologV2RemovedOnV1($handlerType) + { + if (Logger::API === 2) { + $this->doesNotPerformAssertions(); + + return; + } + + $this->expectException(InvalidConfigurationException::class); + + $container = new ContainerBuilder(); + $loader = new MonologExtension(); + + $loader->load([['handlers' => ['main' => ['type' => $handlerType]]]], $container); + } + + public function v2RemovedDataProvider() + { + return [ + ['hipchat'], + ['raven'], + ['slackbot'], + ]; + } + protected function getContainer(array $config = [], array $thirdPartyDefinitions = []) { $container = new ContainerBuilder();