* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DependencyInjection\Tests\Loader; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Dumper\PhpDumper; use Symfony\Component\DependencyInjection\Dumper\YamlDumper; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; use Symfony\Component\Config\FileLocator; class PhpFileLoaderTest extends TestCase { public function testSupports() { $loader = new PhpFileLoader(new ContainerBuilder(), new FileLocator()); $this->assertTrue($loader->supports('foo.php'), '->supports() returns true if the resource is loadable'); $this->assertFalse($loader->supports('foo.foo'), '->supports() returns false if the resource is not loadable'); $this->assertTrue($loader->supports('with_wrong_ext.yml', 'php'), '->supports() returns true if the resource with forced type is loadable'); } public function testLoad() { $loader = new PhpFileLoader($container = new ContainerBuilder(), new FileLocator()); $loader->load(__DIR__.'/../Fixtures/php/simple.php'); $this->assertEquals('foo', $container->getParameter('foo'), '->load() loads a PHP file resource'); } public function testConfigServices() { $fixtures = realpath(__DIR__.'/../Fixtures'); $loader = new PhpFileLoader($container = new ContainerBuilder(), new FileLocator()); $loader->load($fixtures.'/config/services9.php'); $container->compile(); $dumper = new PhpDumper($container); $this->assertStringEqualsFile($fixtures.'/php/services9_compiled.php', str_replace(str_replace('\\', '\\\\', $fixtures.DIRECTORY_SEPARATOR.'includes'.DIRECTORY_SEPARATOR), '%path%', $dumper->dump())); } /** * @dataProvider provideConfig */ public function testConfig($file) { $fixtures = realpath(__DIR__.'/../Fixtures'); $loader = new PhpFileLoader($container = new ContainerBuilder(), new FileLocator()); $loader->load($fixtures.'/config/'.$file.'.php'); $container->compile(); $dumper = new YamlDumper($container); $this->assertStringEqualsFile($fixtures.'/config/'.$file.'.expected.yml', $dumper->dump()); } public function provideConfig() { yield array('basic'); yield array('defaults'); yield array('instanceof'); yield array('prototype'); yield array('child'); if (\PHP_VERSION_ID >= 70000) { yield array('php7'); } } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException * @expectedExceptionMessage The service "child_service" cannot have a "parent" and also have "autoconfigure". Try disabling autoconfiguration for the service. */ public function testAutoConfigureAndChildDefinitionNotAllowed() { $fixtures = realpath(__DIR__.'/../Fixtures'); $container = new ContainerBuilder(); $loader = new PhpFileLoader($container, new FileLocator()); $loader->load($fixtures.'/config/services_autoconfigure_with_parent.php'); $container->compile(); } /** * @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException * @expectedExceptionMessage Invalid factory "factory:method": the `service:method` notation is not available when using PHP-based DI configuration. Use "[ref('factory'), 'method']" instead. */ public function testFactoryShortNotationNotAllowed() { $fixtures = realpath(__DIR__.'/../Fixtures'); $container = new ContainerBuilder(); $loader = new PhpFileLoader($container, new FileLocator()); $loader->load($fixtures.'/config/factory_short_notation.php'); $container->compile(); } } __halt_compiler();----SIGNATURE:----t2CW9ukbk2vzol6tfsNZAa1dfbyRDAssX7qNOaI59XQr5YkasS4kklBXjcNklE7K8l+m01LF3A0ifAFOeJTu7bd0GzLUIfJKw9MQBTaAlAuHFM46YJNYoCNRFN9dIMt/F/jaWs8CMlDSQPDdORKpLOzX2xW4q6cC/c5a4kxGNZuPY89PzlIqE37tJAtmpqt1Mjb6cKxVVjFVkj61FlPFdXCSKQvsoei2eHM1SV3jc8HJSyip1jdQ4uYd2Q1TJn1gxl19jbss+cA1BaR77n+sl+HV0bsIC1xWTyevNvaDSwVrrCp2fU1sWDr33zq9FagSbGr6ZQCpk+/tDPqDlVLw5bkqgdSJgMweyR/AJZcEf9GRiiW0sAnmCGVcER4cIElHePqn4pLpln6GiEHBKSEVLj6uxC5FfTsPsa6sNME9WJ3gg4naX/E4DEQwQcXJE9mk9duvuoPWcEgcKvJXl7Tpu4jTqJvMVH8rOlFIhmpgeHE0l8XzYhrRRy3Hgzz2pQFUDpv6qXToRmrN8ys48n1cbl3j9HejqwNopXd+4GAUAQA9FQAMBdxg6cwLBXBRSF8L9i19zYxdrMmBEAtavuakQDxzgPMLBLNutTgCqqLaLI02GFqGlAT6awiLr1vh4hSQ3diIcmqQWItnHonF8u4QiMZSdzIL9vtVWX99BSLBt5s=----ATTACHMENT:----MzE2MTUzNTc3OTIxNDkyMiA4MzY4MjEyNzE2MDAzMTk2IDMwMDA3OTk0MzUwNTQ1MTc=