$this->process($container);
$configurator = $container->getDefinition('sibling')->getConfigurator();
- $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($configurator));
+ $this->assertSame('Symfony\Component\DependencyInjection\Definition', \get_class($configurator));
$this->assertSame('parentClass', $configurator->getClass());
$factory = $container->getDefinition('sibling')->getFactory();
- $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($factory[0]));
+ $this->assertSame('Symfony\Component\DependencyInjection\Definition', \get_class($factory[0]));
$this->assertSame('parentClass', $factory[0]->getClass());
$argument = $container->getDefinition('sibling')->getArgument(0);
- $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($argument));
+ $this->assertSame('Symfony\Component\DependencyInjection\Definition', \get_class($argument));
$this->assertSame('parentClass', $argument->getClass());
$properties = $container->getDefinition('sibling')->getProperties();
- $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($properties['prop']));
+ $this->assertSame('Symfony\Component\DependencyInjection\Definition', \get_class($properties['prop']));
$this->assertSame('parentClass', $properties['prop']->getClass());
$methodCalls = $container->getDefinition('sibling')->getMethodCalls();
- $this->assertSame('Symfony\Component\DependencyInjection\Definition', get_class($methodCalls[0][1][0]));
+ $this->assertSame('Symfony\Component\DependencyInjection\Definition', \get_class($methodCalls[0][1][0]));
$this->assertSame('parentClass', $methodCalls[0][1][0]->getClass());
}
$pass = new ResolveChildDefinitionsPass();
$pass->process($container);
}
+
+ /**
+ * @expectedException \Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException
+ * @expectedExceptionMessageRegExp /^Circular reference detected for service "c", path: "c -> b -> a -> c"./
+ */
+ public function testProcessDetectsChildDefinitionIndirectCircularReference()
+ {
+ $container = new ContainerBuilder();
+
+ $container->register('a');
+
+ $container->setDefinition('b', new ChildDefinition('a'));
+ $container->setDefinition('c', new ChildDefinition('b'));
+ $container->setDefinition('a', new ChildDefinition('c'));
+
+ $this->process($container);
+ }
}