mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-14 03:16:34 +00:00
Fix adding mock extension to Twig environment
When the extension class is not defined in a file but in eval'd code we cannot assume ReflectionObject::getFileName will return a valid file path. https://bugs.php.net/bug.php?id=63901
This commit is contained in:
committed by
Jerome TAMARELLE
parent
53aa70a3f4
commit
a57b1cc3be
@@ -462,7 +462,7 @@ class Twig_Environment
|
||||
if (0 === $this->lastModifiedExtension) {
|
||||
foreach ($this->extensions as $extension) {
|
||||
$r = new ReflectionObject($extension);
|
||||
if (($extensionTime = filemtime($r->getFileName())) > $this->lastModifiedExtension) {
|
||||
if (file_exists($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModifiedExtension) {
|
||||
$this->lastModifiedExtension = $extensionTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,6 +292,22 @@ class Twig_Tests_EnvironmentTest extends PHPUnit_Framework_TestCase
|
||||
$this->assertCount(2, $twig->getNodeVisitors());
|
||||
}
|
||||
|
||||
public function testAddMockExtension()
|
||||
{
|
||||
$extension = $this->getMock('Twig_ExtensionInterface');
|
||||
$extension->expects($this->once())
|
||||
->method('getName')
|
||||
->will($this->returnValue('mock'));
|
||||
|
||||
$loader = new Twig_Loader_Array(array('page' => 'hey'));
|
||||
|
||||
$twig = new Twig_Environment($loader);
|
||||
$twig->addExtension($extension);
|
||||
|
||||
$this->assertInstanceOf('Twig_ExtensionInterface', $twig->getExtension('mock'));
|
||||
$this->assertTrue($twig->isTemplateFresh('page', time()));
|
||||
}
|
||||
|
||||
protected function getMockLoader($templateName, $templateContent)
|
||||
{
|
||||
$loader = $this->getMock('Twig_LoaderInterface');
|
||||
|
||||
Reference in New Issue
Block a user