Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit af62eac

Browse files
bug #27367 [FrameworkBundle] cleanup generated test container (nicolas-grekas)
This PR was merged into the 4.1 branch. Discussion ---------- [FrameworkBundle] cleanup generated test container | Q | A | ------------- | --- | Branch? | 4.1 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | - | License | MIT | Doc PR | - Cleans up removed and hidden services, fixes an issue when the private container locator is inlined. Commits ------- d8cbec0 [FrameworkBundle] cleanup generated test container
2 parents 2fd30a6 + d8cbec0 commit af62eac

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,21 @@ public function process(ContainerBuilder $container)
2727
}
2828

2929
$testContainer = $container->getDefinition('test.service_container');
30-
$privateContainer = $container->getDefinition((string) $testContainer->getArgument(2));
30+
$privateContainer = $testContainer->getArgument(2);
31+
if ($privateContainer instanceof Reference) {
32+
$privateContainer = $container->getDefinition((string) $privateContainer);
33+
}
3134
$definitions = $container->getDefinitions();
35+
$privateServices = $privateContainer->getArgument(0);
3236

33-
foreach ($privateContainer->getArgument(0) as $id => $argument) {
37+
foreach ($privateServices as $id => $argument) {
3438
if (isset($definitions[$target = (string) $argument->getValues()[0]])) {
3539
$argument->setValues(array(new Reference($target)));
40+
} else {
41+
unset($privateServices[$id]);
3642
}
3743
}
44+
45+
$privateContainer->replaceArgument(0, $privateServices);
3846
}
3947
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ public function process(ContainerBuilder $container)
3131
$definitions = $container->getDefinitions();
3232

3333
foreach ($definitions as $id => $definition) {
34-
if ((!$definition->isPublic() || $definition->isPrivate()) && !$definition->getErrors() && !$definition->isAbstract()) {
34+
if ($id && '.' !== $id[0] && (!$definition->isPublic() || $definition->isPrivate()) && !$definition->getErrors() && !$definition->isAbstract()) {
3535
$privateServices[$id] = new ServiceClosureArgument(new Reference($id, ContainerBuilder::IGNORE_ON_UNINITIALIZED_REFERENCE));
3636
}
3737
}
3838

3939
$aliases = $container->getAliases();
4040

4141
foreach ($aliases as $id => $alias) {
42-
if (!$alias->isPublic() || $alias->isPrivate()) {
42+
if ($id && '.' !== $id[0] && (!$alias->isPublic() || $alias->isPrivate())) {
4343
while (isset($aliases[$target = (string) $alias])) {
4444
$alias = $aliases[$target];
4545
}

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/TestServiceContainerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ public function testThatPrivateServicesAreAvailableIfTestConfigIsEnabled()
4242
$this->assertTrue(static::$container->has(NonPublicService::class));
4343
$this->assertTrue(static::$container->has(PrivateService::class));
4444
$this->assertTrue(static::$container->has('private_service'));
45-
$this->assertTrue(static::$container->has(UnusedPrivateService::class));
45+
$this->assertFalse(static::$container->has(UnusedPrivateService::class));
4646
}
4747
}

0 commit comments

Comments
 (0)