* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DependencyInjection\Tests\Compiler; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\Compiler\CheckDefinitionValidityPass; use Symfony\Component\DependencyInjection\ContainerBuilder; class CheckDefinitionValidityPassTest extends TestCase { /** * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException */ public function testProcessDetectsSyntheticNonPublicDefinitions() { $container = new ContainerBuilder(); $container->register('a')->setSynthetic(true)->setPublic(false); $this->process($container); } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException */ public function testProcessDetectsNonSyntheticNonAbstractDefinitionWithoutClass() { $container = new ContainerBuilder(); $container->register('a')->setSynthetic(false)->setAbstract(false); $this->process($container); } public function testProcess() { $container = new ContainerBuilder(); $container->register('a', 'class'); $container->register('b', 'class')->setSynthetic(true)->setPublic(true); $container->register('c', 'class')->setAbstract(true); $container->register('d', 'class')->setSynthetic(true); $this->process($container); $this->addToAssertionCount(1); } public function testValidTags() { $container = new ContainerBuilder(); $container->register('a', 'class')->addTag('foo', array('bar' => 'baz')); $container->register('b', 'class')->addTag('foo', array('bar' => null)); $container->register('c', 'class')->addTag('foo', array('bar' => 1)); $container->register('d', 'class')->addTag('foo', array('bar' => 1.1)); $this->process($container); $this->addToAssertionCount(1); } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException */ public function testInvalidTags() { $container = new ContainerBuilder(); $container->register('a', 'class')->addTag('foo', array('bar' => array('baz' => 'baz'))); $this->process($container); } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\EnvParameterException */ public function testDynamicPublicServiceName() { $container = new ContainerBuilder(); $env = $container->getParameterBag()->get('env(BAR)'); $container->register("foo.$env", 'class')->setPublic(true); $this->process($container); } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\EnvParameterException */ public function testDynamicPublicAliasName() { $container = new ContainerBuilder(); $env = $container->getParameterBag()->get('env(BAR)'); $container->setAlias("foo.$env", 'class')->setPublic(true); $this->process($container); } public function testDynamicPrivateName() { $container = new ContainerBuilder(); $env = $container->getParameterBag()->get('env(BAR)'); $container->register("foo.$env", 'class'); $container->setAlias("bar.$env", 'class'); $this->process($container); $this->addToAssertionCount(1); } protected function process(ContainerBuilder $container) { $pass = new CheckDefinitionValidityPass(); $pass->process($container); } } __halt_compiler();----SIGNATURE:----kKEqFjrjR+zgJQt+2dG2tJG56LsU+3o4LnSUwD0o6124X/MBBp/BFHSWJVg1ryCIYB9tBrXjnC9rY/xbdU6mge53Rpr73NwLakOin+p9WV6Ql6LQqU1S3XM5ORs21nTCt58VUCsynf7wgOxf5JOW70hGTc/NbBiCDv8ocz/eF69C0NLpgTzHX6EIcRtZokEhWZTGEay+66HIUw+0xIXOeuIw/UyuSWKwXAPjxW0tANzGzbtodmLqdgSXXQcfXOV6sOIY7VJ93ZPXl/80f4sxdBsNav2wWfQss28UPJyYTIcbrzaZSoeJC/wU6xQM7eocdKtMjkh8ng+gw94kAIOCxmQYIaQxiqWXTVJKg/IPI9uF/jv77ohahDFHBhVQu6TswbcmeCM61n1v+eQh3EmveAj9NUo8dO2N8FM+UOmznIA+WbGU+9X6eAuXOYC9EbddyR+Y2+wOKo19Jo/UgOVdlrVB25VmXJG+yk46eOzlxR8qSrliAQjLoOyxXsusSLfPJx0va4iH2I3bR6LBzCoUkzcO9nubQLIK2KirZxG5NvqyDwenkS0A9rybSMan9Jt+OeL3qiHdBi7E1PEuyfUymoe0khEIGOSMgfHDPTGolJcIMxjDFXrwnQV53pQqG+u+gcsUpJIOz2UNCbSVnBGelD7sAdGtHuSXSrhP4IyUVDY=----ATTACHMENT:----ODg1MDkxMzI3NjQyNTE0NSAzNzIzNTUyMjgxMDUxMTc4IDU1NjAyNjEwNTQ4ODMxMjA=