8000 resolve parameters in definition classes · symfony/symfony@37ce682 · GitHub
[go: up one dir, main page]

Skip to content

Commit 37ce682

Browse files
committed
resolve parameters in definition classes
1 parent 5032477 commit 37ce682

File tree

2 files changed

+40
-9
lines changed

2 files changed

+40
-9
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/DataCollectorTranslatorPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public function process(ContainerBuilder $container)
2525
return;
2626
}
2727

28-
$translatorClass = $container->findDefinition('translator')->getClass();
28+
$translatorClass = $container->getParameterBag()->resolveValue($container->findDefinition('translator')->getClass());
2929

3030
if (!is_subclass_of($translatorClass, 'Symfony\Component\Translation\TranslatorBagInterface')) {
3131
$container->removeDefinition('translator.data_collector');

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/DataCollectorTranslatorPassTest.php

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ protected function setUp()
2626
$this->container = new ContainerBuilder();
2727
$this->dataCollectorTranslatorPass = new DataCollectorTranslatorPass();
2828

29+
$this->container->setParameter('translator_implementing_bag', 'Symfony\Component\Translation\Translator');
30+
$this->container->setParameter('translator_not_implementing_bag', 'Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\TranslatorWithTranslatorBag');
31+
2932
$this->container->register('translator.data_collector', 'Symfony\Component\Translation\DataCollectorTranslator')
3033
->setPublic(false)
3134
->setDecoratedService('translator')
@@ -37,41 +40,69 @@ protected function setUp()
3740
;
3841
}
3942

40-
public function testProcessKeepsDataCollectorTranslatorIfItImplementsTranslatorBagInterface()
43+
/**
44+
* @dataProvider getImplementingTranslatorBagInterfaceTranslatorClassNames
45+
*/
46+
public function testProcessKeepsDataCollectorTranslatorIfItImplementsTranslatorBagInterface($class)
4147
{
42-
$this->container->register('translator', 'Symfony\Component\Translation\Translator');
48+
$this->container->register('translator', $class);
4349

4450
$this->dataCollectorTranslatorPass->process($this->container);
4551

4652
$this->assertTrue($this->container->hasDefinition('translator.data_collector'));
4753
}
4854

49-
public function testProcessKeepsDataCollectorIfTranslatorImplementsTranslatorBagInterface()
55+
/**
56+
* @dataProvider getImplementingTranslatorBagInterfaceTranslatorClassNames
57+
*/
58+
public function testProcessKeepsDataCollectorIfTranslatorImplementsTranslatorBagInterface($class)
5059
{
51-
$this->container->register('translator', 'Symfony\Component\Translation\Translator');
60+
$this->container->register('translator', $class);
5261

5362
$this->dataCollectorTranslatorPass->process($this->container);
5463

5564
$this->assertTrue($this->container->hasDefinition('data_collector.translation'));
5665
}
5766

58-
public function testProcessRemovesDataCollectorTranslatorIfItDoesNotImplementTranslatorBagInterface()
67+
public function getImplementingTranslatorBagInterfaceTranslatorClassNames()
68+
{
69+
return array(
70+
array('Symfony\Component\Translation\Translator'),
71+
array('%translator_implementing_bag%'),
72+
);
73+
}
74+
75+
/**
76+
* @dataProvider getNotImplementingTranslatorBagInterfaceTranslatorClassNames
77+
*/
78+
public function testProcessRemovesDataCollectorTranslatorIfItDoesNotImplementTranslatorBagInterface($class)
5979
{
60-
$this->container->register('translator', 'Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\TranslatorWithTranslatorBag');
80+
$this->container->register('translator', $class);
6181

6282
$this->dataCollectorTranslatorPass->process($this->container);
6383

6484
$this->assertFalse($this->container->hasDefinition('translator.data_collector'));
6585
}
6686

67-
public function testProcessRemovesDataCollectorIfTranslatorDoesNotImplementTranslatorBagInterface()
87+
/**
88+
* @dataProvider getNotImplementingTranslatorBagInterfaceTranslatorClassNames
89+
*/
90+
public function testProcessRemovesDataCollectorIfTranslatorDoesNotImplementTranslatorBagInterface($class)
6891
{
69-
$this->container->register('translator', 'Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\TranslatorWithTranslatorBag');
92+
$this->container->register('translator', $class);
7093

7194
$this->dataCollectorTranslatorPass->process($this->container);
7295

7396
$this->assertFalse($this->container->hasDefinition('data_collector.translation'));
7497
}
98+
99+
public function getNotImplementingTranslatorBagInterfaceTranslatorClassNames()
100+
{
101+
return array(
102+
array('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\TranslatorWithTranslatorBag'),
103+
array('%translator_not_implementing_bag%'),
104+
);
105+
}
75106
}
76107

77108
class TranslatorWithTranslatorBag implements TranslatorInterface

0 commit comments

Comments
 (0)
0