8000 bug #31749 [DoctrineBridge][Validator] do not enable validator auto m… · symfony/symfony@d38c19a · GitHub
[go: up one dir, main page]

Skip to content

Commit d38c19a

Browse files
bug #31749 [DoctrineBridge][Validator] do not enable validator auto mapping by default (xabbuh)
This PR was merged into the 4.3 branch. Discussion ---------- [DoctrineBridge][Validator] do not enable validator auto mapping by default | Q | A | ------------- | --- | Branch? | 4.3 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | part of #31715, #31752 | License | MIT | Doc PR | Commits ------- a3555fc do not enable validator auto mapping by default
2 parents 0b6a9f9 + a3555fc commit d38c19a

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

src/Symfony/Bridge/Doctrine/Tests/Validator/DoctrineLoaderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function testLoadClassMetadata()
3636

3737
$validator = Validation::createValidatorBuilder()
3838
->enableAnnotationMapping()
39-
->addLoader(new DoctrineLoader(DoctrineTestHelper::createTestEntityManager()))
39+
->addLoader(new DoctrineLoader(DoctrineTestHelper::createTestEntityManager(), '{^Symfony\\\\Bridge\\\\Doctrine\\\\Tests\\\\Fixtures\\\\DoctrineLoaderEntity$}'))
4040
->getValidator()
4141
;
4242

@@ -111,7 +111,7 @@ public function testClassValidator(bool $expected, string $classValidatorRegexp
111111
public function regexpProvider()
112112
{
113113
return [
114-
[true, null],
114+
[false, null],
115115
[true, '{^'.preg_quote(DoctrineLoaderEntity::class).'$|^'.preg_quote(Entity::class).'$}'],
116116
[false< 10000 /span>, '{^'.preg_quote(Entity::class).'$}'],
117117
];

src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function __construct(EntityManagerInterface $entityManager, string $class
4242
public function loadClassMetadata(ClassMetadata $metadata): bool
4343
{
4444
$className = $metadata->getClassName();
45-
if (null !== $this->classValidatorRegexp && !preg_match($this->classValidatorRegexp, $className)) {
45+
if (null === $this->classValidatorRegexp || !preg_match($this->classValidatorRegexp, $className)) {
4646
return false;
4747
}
4848

src/Symfony/Component/Validator/DependencyInjection/AddAutoMappingConfigurationPass.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,12 @@ public function process(ContainerBuilder $container)
7070
/**
7171
* Builds a regexp to check if a class is auto-mapped.
7272
*/
73-
private function getRegexp(array $patterns): string
73+
private function getRegexp(array $patterns): ?string
7474
{
75+
if (!$patterns) {
76+
return null;
77+
}
78+
7579
$regexps = [];
7680
foreach ($patterns as $pattern) {
7781
// Escape namespace

src/Symfony/Component/Validator/Tests/DependencyInjection/AddAutoMappingConfigurationPassTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,17 @@ public function mappingProvider(): array
7070
['Symfony\Component\Validator\Tests\Fixtures\\**', ['trailing_double_star'], '{^App\\\\|^Symfony\\\\Component\\\\Validator\\\\Tests\\\\Fixtures\\\\.*?$}'],
7171
];
7272
}
73+
74+
public function testDoNotMapAllClassesWhenConfigIsEmpty()
75+
{
76+
$container = new ContainerBuilder();
77+
$container->setParameter('validator.auto_mapping', []);
78+
79+
$container->register('validator.builder', ValidatorBuilder::class);
80+
$container->register('loader')->addTag('validator.auto_mapper');
81+
82+
(new AddAutoMappingConfigurationPass())->process($container);
83+
84+
$this->assertNull($container->getDefinition('loader')->getArgument('$classValidatorRegexp'));
85+
}
7386
}

0 commit comments

Comments
 (0)
0