|
11 | 11 |
|
12 | 12 | namespace Symfony\Bundle\TwigBundle\Tests\DependencyInjection;
|
13 | 13 |
|
| 14 | +use Symfony\Bundle\TwigBundle\DependencyInjection\Compiler\RuntimeLoaderPass; |
14 | 15 | use Symfony\Bundle\TwigBundle\DependencyInjection\TwigExtension;
|
15 | 16 | use Symfony\Bundle\TwigBundle\Tests\TestCase;
|
16 | 17 | use Symfony\Component\Config\FileLocator;
|
| 18 | +use Symfony\Component\DependencyInjection\Compiler\PassConfig; |
17 | 19 | use Symfony\Component\DependencyInjection\ContainerBuilder;
|
18 | 20 | use Symfony\Component\DependencyInjection\Reference;
|
19 | 21 | use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
|
@@ -62,17 +64,17 @@ public function testLoadFullConfiguration($format)
|
62 | 64 | $calls = $container->getDefinition('twig')->getMethodCalls();
|
63 | 65 | $this->assertEquals('app', $calls[0][1][0], '->load() registers services as Twig globals');
|
64 | 66 | $this->assertEquals(new Reference('twig.app_variable'), $calls[0][1][1]);
|
65 |
| - $this->assertEquals('foo', $calls[1][1][0], '->load() registers services as Twig globals'); |
66 |
| - $this->assertEquals(new Reference('bar'), $calls[1][1][1], '->load() registers services as Twig globals'); |
67 |
| - $this->assertEquals('baz', $calls[2][1][0], '->load() registers variables as Twig globals'); |
68 |
| - $this->assertEquals('@qux', $calls[2][1][1], '->load() allows escaping of service identifiers'); |
69 |
| - $this->assertEquals('pi', $calls[3][1][0], '->load() registers variables as Twig globals'); |
70 |
| - $this->assertEquals(3.14, $calls[3][1][1], '->load() registers variables as Twig globals'); |
| 67 | + $this->assertEquals('foo', $calls[2][1][0], '->load() registers services as Twig globals'); |
| 68 | + $this->assertEquals(new Reference('bar'), $calls[2][1][1], '->load() registers services as Twig globals'); |
| 69 | + $this->assertEquals('baz', $calls[3][1][0], '->load() registers variables as Twig globals'); |
| 70 | + $this->assertEquals('@qux', $calls[3][1][1], '->load() allows escaping of service identifiers'); |
| 71 | + $this->assertEquals('pi', $calls[4][1][0], '->load() registers variables as Twig globals'); |
| 72 | + $this->assertEquals(3.14, $calls[4][1][1], '->load() registers variables as Twig globals'); |
71 | 73 |
|
72 | 74 | // Yaml and Php specific configs
|
73 | 75 | if (in_array($format, array('yml', 'php'))) {
|
74 |
| - $this->assertEquals('bad', $calls[4][1][0], '->load() registers variables as Twig globals'); |
75 |
| - $this->assertEquals(array('key' => 'foo'), $calls[4][1][1], '->load() registers variables as Twig globals'); |
| 76 | + $this->assertEquals('bad', $calls[5][1][0], '->load() registers variables as Twig globals'); |
| 77 | + $this->assertEquals(array('key' => 'foo'), $calls[5][1][1], '->load() registers variables as Twig globals'); |
76 | 78 | }
|
77 | 79 |
|
78 | 80 | // Twig options
|
@@ -133,7 +135,7 @@ public function testGlobalsWithDifferentTypesAndValues()
|
133 | 135 | $this->compileContainer($container);
|
134 | 136 |
|
135 | 137 | $calls = $container->getDefinition('twig')->getMethodCalls();
|
136 |
| - foreach (array_slice($calls, 1) as $call) { |
| 138 | + foreach (array_slice($calls, 2) as $call) { |
137 | 139 | list($name, $value) = each($globals);
|
138 | 140 | $this->assertEquals($name, $call[1][0]);
|
139 | 141 | $this->assertSame($value, $call[1][1]);
|
@@ -211,6 +213,29 @@ public function stopwatchExtensionAvailabilityProvider()
|
211 | 213 | );
|
212 | 214 | }
|
213 | 215 |
|
| 216 | + public function testRuntimeLoader() |
| 217 | + { |
| 218 | + $container = $this->createContainer(); |
| 219 | + $container->registerExtension(new TwigExtension()); |
| 220 | + $container->loadFromExtension('twig', array()); |
| 221 | + $container->setParameter('kernel.environment', 'test'); |
| 222 | + $container->setParameter('debug.file_link_format', 'test'); |
| 223 | + $container->setParameter('foo', 'FooClass'); |
| 224 | + $container->register('http_kernel', 'FooClass'); |
| 225 | + $container->register('templating.locator', 'FooClass'); |
| 226 | + $container->register('templating.name_parser', 'FooClass'); |
| 227 | + $container->register('foo', '%foo%')->addTag('twig.runtime'); |
| 228 | + $container->addCompilerPass(new RuntimeLoaderPass(), PassConfig::TYPE_BEFORE_REMOVING); |
| 229 | + $container->getCompilerPassConfig()->setRemovingPasses(array()); |
| 230 | + $container->compile(); |
| 231 | + |
| 232 | + $loader = $container->getDefinition('twig.runtime_loader'); |
| 233 | + $this->assertEquals(array( |
| 234 | + 'Symfony\Bridge\Twig\Form\TwigRenderer' => 'twig.form.renderer', |
| 235 | + 'FooClass' => 'foo', |
| 236 | + ), $loader->getArgument(1)); |
| 237 | + } |
| 238 | + |
214 | 239 | private function createContainer()
|
215 | 240 | {
|
216 | 241 | $container = new ContainerBuilder(new ParameterBag(array(
|
|
0 commit comments