123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <?php
-
- /*
- * This file is part of Twig.
- *
- * (c) Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
- class Twig_Tests_ErrorTest extends PHPUnit_Framework_TestCase
- {
- public function testErrorWithObjectFilename()
- {
- $error = new Twig_Error('foo');
- $error->setTemplateFile(new SplFileInfo(__FILE__));
-
- $this->assertContains('test'.DIRECTORY_SEPARATOR.'Twig'.DIRECTORY_SEPARATOR.'Tests'.DIRECTORY_SEPARATOR.'ErrorTest.php', $error->getMessage());
- }
-
- public function testErrorWithArrayFilename()
- {
- $error = new Twig_Error('foo');
- $error->setTemplateFile(array('foo' => 'bar'));
-
- $this->assertEquals('foo in {"foo":"bar"}', $error->getMessage());
- }
-
- public function testTwigExceptionAddsFileAndLineWhenMissing()
- {
- $loader = new Twig_Loader_Array(array('index' => "\n\n{{ foo.bar }}\n\n\n{{ 'foo' }}"));
- $twig = new Twig_Environment($loader, array('strict_variables' => true, 'debug' => true, 'cache' => false));
-
- $template = $twig->loadTemplate('index');
-
- try {
- $template->render(array());
-
- $this->fail();
- } catch (Twig_Error_Runtime $e) {
- $this->assertEquals('Variable "foo" does not exist in "index" at line 3', $e->getMessage());
- $this->assertEquals(3, $e->getTemplateLine());
- $this->assertEquals('index', $e->getTemplateFile());
- }
- }
-
- public function testRenderWrapsExceptions()
- {
- $loader = new Twig_Loader_Array(array('index' => "\n\n\n{{ foo.bar }}\n\n\n\n{{ 'foo' }}"));
- $twig = new Twig_Environment($loader, array('strict_variables' => true, 'debug' => true, 'cache' => false));
-
- $template = $twig->loadTemplate('index');
-
- try {
- $template->render(array('foo' => new Twig_Tests_ErrorTest_Foo()));
-
- $this->fail();
- } catch (Twig_Error_Runtime $e) {
- $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...") in "index" at line 4.', $e->getMessage());
- $this->assertEquals(4, $e->getTemplateLine());
- $this->assertEquals('index', $e->getTemplateFile());
- }
- }
-
- public function testTwigExceptionAddsFileAndLineWhenMissingWithInheritance()
- {
- $loader = new Twig_Loader_Array(array(
- 'index' => "{% extends 'base' %}
- {% block content %}
- {{ foo.bar }}
- {% endblock %}
- {% block foo %}
- {{ foo.bar }}
- {% endblock %}",
- 'base' => '{% block content %}{% endblock %}'
- ));
- $twig = new Twig_Environment($loader, array('strict_variables' => true, 'debug' => true, 'cache' => false));
-
- $template = $twig->loadTemplate('index');
- try {
- $template->render(array());
-
- $this->fail();
- } catch (Twig_Error_Runtime $e) {
- $this->assertEquals('Variable "foo" does not exist in "index" at line 3', $e->getMessage());
- $this->assertEquals(3, $e->getTemplateLine());
- $this->assertEquals('index', $e->getTemplateFile());
- }
-
- try {
- $template->render(array('foo' => new Twig_Tests_ErrorTest_Foo()));
-
- $this->fail();
- } catch (Twig_Error_Runtime $e) {
- $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...") in "index" at line 3.', $e->getMessage());
- $this->assertEquals(3, $e->getTemplateLine());
- $this->assertEquals('index', $e->getTemplateFile());
- }
- }
-
- public function testTwigExceptionAddsFileAndLineWhenMissingWithInheritanceOnDisk()
- {
- $loader = new Twig_Loader_Filesystem(dirname(__FILE__).'/Fixtures/errors');
- $twig = new Twig_Environment($loader, array('strict_variables' => true, 'debug' => true, 'cache' => false));
-
- $template = $twig->loadTemplate('index.html');
- try {
- $template->render(array());
-
- $this->fail();
- } catch (Twig_Error_Runtime $e) {
- $this->assertEquals('Variable "foo" does not exist in "index.html" at line 3', $e->getMessage());
- $this->assertEquals(3, $e->getTemplateLine());
- $this->assertEquals('index.html', $e->getTemplateFile());
- }
-
- try {
- $template->render(array('foo' => new Twig_Tests_ErrorTest_Foo()));
-
- $this->fail();
- } catch (Twig_Error_Runtime $e) {
- $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...") in "index.html" at line 3.', $e->getMessage());
- $this->assertEquals(3, $e->getTemplateLine());
- $this->assertEquals('index.html', $e->getTemplateFile());
- }
- }
- }
-
- class Twig_Tests_ErrorTest_Foo
- {
- public function bar()
- {
- throw new Exception('Runtime error...');
- }
- }
|