Skip to content

Commit

Permalink
Merge branch '3.1'
Browse files Browse the repository at this point in the history
* 3.1:
  Fix edge case with StreamedResponse where headers are sent twice
  removed usage of Twig_Compiler::addIndentation
  A decorated service should not keep the autowiring types
  merge tags instead of completely replacing them
  • Loading branch information
fabpot committed Oct 24, 2016
2 parents c021b37 + c578891 commit cb1d754
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 5 deletions.
4 changes: 3 additions & 1 deletion Compiler/DecoratorServicePass.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,12 @@ public function process(ContainerBuilder $container)
$container->setAlias($renamedId, new Alias((string) $alias, false));
} else {
$decoratedDefinition = $container->getDefinition($inner);
$definition->setTags($decoratedDefinition->getTags(), $definition->getTags());
$definition->setTags(array_merge($decoratedDefinition->getTags(), $definition->getTags()));
$definition->setAutowiringTypes(array_merge($decoratedDefinition->getAutowiringTypes(), $definition->getAutowiringTypes()));
$public = $decoratedDefinition->isPublic();
$decoratedDefinition->setPublic(false);
$decoratedDefinition->setTags(array());
$decoratedDefinition->setAutowiringTypes(array());
$container->setDefinition($renamedId, $decoratedDefinition);
}

Expand Down
26 changes: 24 additions & 2 deletions Tests/Compiler/DecoratorServicePassTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -129,17 +129,39 @@ public function testProcessMovesTagsFromDecoratedDefinitionToDecoratingDefinitio
$container = new ContainerBuilder();
$container
->register('foo')
->setTags(array('name' => 'bar'))
->setTags(array('bar' => array('attr' => 'baz')))
;
$container
->register('baz')
->setTags(array('foobar' => array('attr' => 'bar')))
->setDecoratedService('foo')
;

$this->process($container);

$this->assertEmpty($container->getDefinition('baz.inner')->getTags());
$this->assertEquals(array('name' => 'bar'), $container->getDefinition('baz')->getTags());
$this->assertEquals(array('bar' => array('attr' => 'baz'), 'foobar' => array('attr' => 'bar')), $container->getDefinition('baz')->getTags());
}

public function testProcessMergesAutowiringTypesInDecoratingDefinitionAndRemoveThemFromDecoratedDefinition()
{
$container = new ContainerBuilder();

$container
->register('parent')
->addAutowiringType('Bar')
;

$container
->register('child')
->setDecoratedService('parent')
->addAutowiringType('Foo')
;

$this->process($container);

$this->assertEquals(array('Bar', 'Foo'), $container->getDefinition('child')->getAutowiringTypes());
$this->assertEmpty($container->getDefinition('child.inner')->getAutowiringTypes());
}

protected function process(ContainerBuilder $container)
Expand Down
7 changes: 5 additions & 2 deletions Tests/Compiler/ResolveDefinitionTemplatesPassTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -337,8 +337,11 @@ public function testProcessMergeAutowiringTypes()

$this->process($container);

$def = $container->getDefinition('child');
$this->assertEquals(array('Foo', 'Bar'), $def->getAutowiringTypes());
$childDef = $container->getDefinition('child');
$this->assertEquals(array('Foo', 'Bar'), $childDef->getAutowiringTypes());

$parentDef = $container->getDefinition('parent');
$this->assertSame(array('Foo'), $parentDef->getAutowiringTypes());
}

public function testProcessResolvesAliases()
Expand Down

0 comments on commit cb1d754

Please sign in to comment.