From 9d1004b59e0e741fecbd954af04919ff7001a1ce Mon Sep 17 00:00:00 2001 From: Lukas Kahwe Smith Date: Mon, 8 Jul 2013 14:02:04 +0200 Subject: [PATCH] fix handling of a default 'template' as a string --- .../Fragment/HIncludeFragmentRenderer.php | 6 +++++- .../Fragment/HIncludeFragmentRendererTest.php | 17 +++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php b/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php index fafa76368c..92c4cecdc9 100644 --- a/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php +++ b/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php @@ -99,7 +99,11 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer private function templateExists($template) { if ($this->templating instanceof EngineInterface) { - return $this->templating->exists($template); + try { + return $this->templating->exists($template); + } catch (\InvalidArgumentException $e) { + return false; + } } $loader = $this->templating->getLoader(); diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php index 1e77374901..89bf12eb35 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php @@ -50,7 +50,7 @@ class HIncludeFragmentRendererTest extends \PHPUnit_Framework_TestCase $this->assertEquals('', $strategy->render('/foo', Request::create('/'))->getContent()); } - public function testRenderWhithDefault() + public function testRenderWithDefault() { // only default $strategy = new HIncludeFragmentRenderer(); @@ -64,4 +64,17 @@ class HIncludeFragmentRendererTest extends \PHPUnit_Framework_TestCase $strategy = new HIncludeFragmentRenderer(null, null, 'global_default'); $this->assertEquals('default', $strategy->render('/foo', Request::create('/'), array('default' => 'default'))->getContent()); } -} + + public function testRenderWithDefaultText() + { + $engine = $this->getMock('Symfony\\Component\\Templating\\EngineInterface'); + $engine->expects($this->once()) + ->method('exists') + ->with('default') + ->will($this->throwException(new \InvalidArgumentException())); + + // only default + $strategy = new HIncludeFragmentRenderer($engine); + $this->assertEquals('default', $strategy->render('/foo', Request::create('/'), array('default' => 'default'))->getContent()); + } +} \ No newline at end of file