Skip to content

Commit

Permalink
Fix bug and add deprecated warning for removed
Browse files Browse the repository at this point in the history
  • Loading branch information
inverse committed Sep 2, 2019
1 parent 69e9e4b commit 63176d9
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
12 changes: 10 additions & 2 deletions DependencyInjection/MonologExtension.php
Expand Up @@ -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(
Expand Down
30 changes: 30 additions & 0 deletions Tests/DependencyInjection/MonologExtensionTest.php
Expand Up @@ -11,6 +11,7 @@

namespace Symfony\Bundle\MonologBundle\Tests\DependencyInjection;

use Monolog\Logger;
use Symfony\Bundle\MonologBundle\DependencyInjection\MonologExtension;
use Symfony\Bundle\MonologBundle\DependencyInjection\Compiler\LoggerChannelPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
Expand Down Expand Up @@ -532,6 +533,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();
Expand Down

0 comments on commit 63176d9

Please sign in to comment.