8000 Ignore abstract definitions · symfony/symfony@7518b5c · GitHub
[go: up one dir, main page]

Skip to content

Commit 7518b5c

Browse files
committed
Ignore abstract definitions
1 parent 2928fbe commit 7518b5c

File tree

2 files changed

+24
-43
lines changed

2 files changed

+24
-43
lines changed

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,16 @@ public function process(ContainerBuilder $container)
2626

2727
$validators = array();
2828
foreach ($container->findTaggedServiceIds('validator.constraint_validator') as $id => $attributes) {
29+
$definition = $container->getDefinition($id);
30+
31+
if ($definition->isAbstract()) {
32+
continue;
33+
}
34+
2935
if (isset($attributes[0]['alias'])) {
3036
$validators[$attributes[0]['alias']] = new Reference($id);
3137
10000 }
3238

33-
$definition = $container->getDefinition($id);
3439
$validators[$definition->getClass()] = new Reference($id);
3540
}
3641

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

Lines changed: 18 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,57 +14,33 @@
1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConstraintValidatorsPass;
1616
use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
17+
use Symfony\Component\DependencyInjection\ContainerBuilder;
1718
use Symfony\Component\DependencyInjection\Reference;
1819

1920
class AddConstraintValidatorsPassTest extends TestCase
2021
{
2122
public function testThatConstraintValidatorServicesAreProcessed()
2223
{
23-
$services = array(
24-
'my_constraint_validator_service1' => array(0 => array('alias' => 'my_constraint_validator_alias1')),
25-
'my_constraint_validator_service2' => array(),
26-
);
27-
28-
$validatorFactoryDefinition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
29-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds', 'getDefinition', 'hasDefinition'))->getMock();
30-
31-
$validatorDefinition1 = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->setMethods(array('getClass'))->getMock();
32-
$validatorDefinition2 = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->setMethods(array('getClass'))->getMock();
33-
34-
$validatorDefinition1->expects($this->atLeastOnce())
35-
->method('getClass')
36-
->willReturn('My\Fully\Qualified\Class\Named\Validator1');
37-
$validatorDefinition2->expects($this->atLeastOnce())
38-
->method('getClass')
39-
->willReturn('My\Fully\Qualified\Class\Named\Validator2');
40-
41-
$container->expects($this->any())
42-
->method('getDefinition')
43-
->with($this->anything())
44-
->will($this->returnValueMap(array(
45-
array('my_constraint_validator_service1', $validatorDefinition1),
46-
array('my_constraint_validator_service2', $validatorDefinition2),
47-
array('validator.validator_factory', $validatorFactoryDefinition),
48-
)));
49-
50-
$container->expects($this->atLeastOnce())
51-
->method('findTaggedServiceIds')
52-
->will($this->returnValue($services));
53-
$container->expects($this->atLeastOnce())
54-
->method('hasDefinition')
55-
->with('validator.validator_factory')
56-
->will($this->returnValue(true));
57-
58-
$validatorFactoryDefinition->expects($this->once())
59-
->method('replaceArgument')
60-
->with(0, new ServiceLocatorArgument(array(
61-
'My\Fully\Qualified\Class\Named\Validator1' => new Reference('my_constraint_validator_service1'),
62-
'my_constraint_validator_alias1' => new Reference('my_constraint_validator_service1'),
63-
'My\Fully\Qualified\Class\Named\Validator2' => new Reference('my_constraint_validator_service2'),
64-
)));
24+
$container = new ContainerBuilder();
25+
$validatorFactory = $container->register('validator.validator_factory')
26+
->setArguments(array(new ServiceLocatorArgument()));
27+
28+
$container->register('my_constraint_validator_service1', Validator1::class)
29+
->addTag('validator.constraint_validator', array('alias' => 'my_constraint_validator_alias1'));
30+
$container->register('my_constraint_validator_service2', Validator2::class)
31+
->addTag('validator.constraint_validator');
32+
$container->register('my_abstract_constraint_validator')
33+
->setAbstract(true)
34+
->addTag('validator.constraint_validator');
6535

6636
$addConstraintValidatorsPass = new AddConstraintValidatorsPass();
6737
$addConstraintValidatorsPass->process($container);
38+
39+
$this->assertEquals(new ServiceLocatorArgument(array(
40+
Validator1::class => new Reference('my_constraint_validator_service1'),
41+
'my_constraint_validator_alias1' => new Reference('my_constraint_validator_service1'),
42+
Validator2::class => new Reference('my_constraint_validator_service2'),
43+
)), $validatorFactory->getArgument(0));
6844
}
6945

7046
public function testThatCompilerPassIsIgnoredIfThereIsNoConstraintValidatorFactoryDefinition()

0 commit comments

Comments
 (0)
0