[TwigBundle] fixed Twig template throwing InvalidArgumentException rather than returning false
This commit is contained in:
parent
5288381f61
commit
f217022ad5
@ -84,7 +84,14 @@ class FilesystemLoader implements \Twig_LoaderInterface
|
|||||||
return $this->cache[$key];
|
return $this->cache[$key];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (false === $file = $this->locator->locate($name)) {
|
$file = null;
|
||||||
|
try {
|
||||||
|
$file = $this->locator->locate($name);
|
||||||
|
} catch (\InvalidArgumentException $e) {
|
||||||
|
// File wasn't found, will throw twig load error
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($file === false || $file === null) {
|
||||||
throw new \Twig_Error_Loader(sprintf('Unable to find template "%s".', $name));
|
throw new \Twig_Error_Loader(sprintf('Unable to find template "%s".', $name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Bundle\TwigBundle\Tests\Loader;
|
||||||
|
|
||||||
|
use Symfony\Bundle\TwigBundle\Tests\TestCase;
|
||||||
|
use Symfony\Bundle\TwigBundle\Loader\FilesystemLoader;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocatorInterface;
|
||||||
|
use Symfony\Component\Templating\TemplateNameParserInterface;
|
||||||
|
use InvalidArgumentException;
|
||||||
|
|
||||||
|
class FilesystemLoaderTest extends TestCase
|
||||||
|
{
|
||||||
|
/** @var TemplateLocatorInterface */
|
||||||
|
private $locator;
|
||||||
|
/** @var TemplateNameParserInterface */
|
||||||
|
private $parser;
|
||||||
|
/** @var FilesystemLoader */
|
||||||
|
private $loader;
|
||||||
|
|
||||||
|
protected function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->locator = $this->getMock('Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocatorInterface');
|
||||||
|
$this->parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface');
|
||||||
|
$this->loader = new FilesystemLoader($this->locator, $this->parser);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testTwigErrorIfLocatorThrowsInvalid()
|
||||||
|
{
|
||||||
|
$this->setExpectedException('Twig_Error_Loader');
|
||||||
|
$invalidException = new InvalidArgumentException('Unable to find template "NonExistent".');
|
||||||
|
$this->locator->expects($this->once())
|
||||||
|
->method('locate')
|
||||||
|
->will($this->throwException($invalidException));
|
||||||
|
|
||||||
|
$this->loader->getCacheKey('NonExistent');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testTwigErrorIfLocatorReturnsFalse()
|
||||||
|
{
|
||||||
|
$this->setExpectedException('Twig_Error_Loader');
|
||||||
|
$this->locator->expects($this->once())
|
||||||
|
->method('locate')
|
||||||
|
->will($this->returnValue(false));
|
||||||
|
|
||||||
|
$this->loader->getCacheKey('NonExistent');
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user