Merge branch '3.1'
* 3.1: [TwigBundle] fixed usage of getSource in tests Trim constant values in XmlFileLoader move test to the HttpKernel component [TwigBridge] fixed Twig_Source required argument [HttpKernel] Fix a regression in the RequestDataCollector [HttpKernel] Refactor a RequestDataCollector test case to use a data provider
This commit is contained in:
commit
728034c44d
@ -23,7 +23,7 @@ class RoutingExtensionTest extends \PHPUnit_Framework_TestCase
|
||||
$twig = new \Twig_Environment($this->getMock('Twig_LoaderInterface'), array('debug' => true, 'cache' => false, 'autoescape' => 'html', 'optimizations' => 0));
|
||||
$twig->addExtension(new RoutingExtension($this->getMock('Symfony\Component\Routing\Generator\UrlGeneratorInterface')));
|
||||
|
||||
$nodes = $twig->parse($twig->tokenize(new \Twig_Source($template)));
|
||||
$nodes = $twig->parse($twig->tokenize(new \Twig_Source($template, '')));
|
||||
|
||||
$this->assertSame($mustBeEscaped, $nodes->getNode('body')->getNode(0)->getNode('expr') instanceof \Twig_Node_Expression_Filter);
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ class TwigNodeProvider
|
||||
new \Twig_Node_Expression_Array(array(), 0),
|
||||
new \Twig_Node_Expression_Array(array(), 0),
|
||||
null,
|
||||
new \Twig_Source('')
|
||||
new \Twig_Source('', '')
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ class FormThemeTokenParserTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
$env = new \Twig_Environment($this->getMock('Twig_LoaderInterface'), array('cache' => false, 'autoescape' => false, 'optimizations' => 0));
|
||||
$env->addTokenParser(new FormThemeTokenParser());
|
||||
$stream = $env->tokenize(new \Twig_Source($source));
|
||||
$stream = $env->tokenize(new \Twig_Source($source, ''));
|
||||
$parser = new \Twig_Parser($env);
|
||||
|
||||
$this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0));
|
||||
|
@ -85,7 +85,7 @@ class TwigExtractor extends AbstractFileExtractor implements ExtractorInterface
|
||||
$visitor = $this->twig->getExtension('Symfony\Bridge\Twig\Extension\TranslationExtension')->getTranslationNodeVisitor();
|
||||
$visitor->enable();
|
||||
|
||||
$this->twig->parse($this->twig->tokenize(new \Twig_Source($template)));
|
||||
$this->twig->parse($this->twig->tokenize(new \Twig_Source($template, '')));
|
||||
|
||||
foreach ($visitor->getMessages() as $message) {
|
||||
$catalogue->set(trim($message[0]), $this->prefix.trim($message[0]), $message[1] ?: $this->defaultDomain);
|
||||
|
@ -90,26 +90,6 @@ class AddConsoleCommandPassTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$container->compile();
|
||||
}
|
||||
|
||||
public function testHttpKernelRegisterCommandsIngoreCommandAsAService()
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->addCompilerPass(new AddConsoleCommandPass());
|
||||
$definition = new Definition('Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler\MyCommand');
|
||||
$definition->addTag('console.command');
|
||||
$container->setDefinition('my-command', $definition);
|
||||
$container->compile();
|
||||
|
||||
$application = $this->getMock('Symfony\Component\Console\Application');
|
||||
// Never called, because it's the
|
||||
// Symfony\Bundle\FrameworkBundle\Console\Application that register
|
||||
// commands as a service
|
||||
$application->expects($this->never())->method('add');
|
||||
|
||||
$bundle = new ExtensionPresentBundle();
|
||||
$bundle->setContainer($container);
|
||||
$bundle->registerCommands($application);
|
||||
}
|
||||
}
|
||||
|
||||
class MyCommand extends Command
|
||||
|
@ -17,7 +17,7 @@ use Symfony\Bundle\TwigBundle\Tests\TestCase;
|
||||
|
||||
class FilesystemLoaderTest extends TestCase
|
||||
{
|
||||
public function testGetSource()
|
||||
public function testGetSourceContext()
|
||||
{
|
||||
$parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface');
|
||||
$locator = $this->getMock('Symfony\Component\Config\FileLocatorInterface');
|
||||
@ -30,10 +30,10 @@ class FilesystemLoaderTest extends TestCase
|
||||
$loader->addPath(__DIR__.'/../DependencyInjection/Fixtures/Resources/views', 'namespace');
|
||||
|
||||
// Twig-style
|
||||
$this->assertEquals("This is a layout\n", $loader->getSource('@namespace/layout.html.twig'));
|
||||
$this->assertEquals("This is a layout\n", $loader->getSourceContext('@namespace/layout.html.twig')->getCode());
|
||||
|
||||
// Symfony-style
|
||||
$this->assertEquals("This is a layout\n", $loader->getSource('TwigBundle::layout.html.twig'));
|
||||
$this->assertEquals("This is a layout\n", $loader->getSourceContext('TwigBundle::layout.html.twig')->getCode());
|
||||
}
|
||||
|
||||
public function testExists()
|
||||
|
@ -127,7 +127,11 @@ class TemplateManager
|
||||
}
|
||||
|
||||
try {
|
||||
$loader->getSource($template);
|
||||
if ($loader instanceof \Twig_SourceContextLoaderInterface) {
|
||||
$loader->getSourceContext($template);
|
||||
} else {
|
||||
$loader->getSource($template);
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (\Twig_Error_Loader $e) {
|
||||
|
@ -31,11 +31,6 @@ class TemplateManagerTest extends TestCase
|
||||
*/
|
||||
protected $profiler;
|
||||
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $profile;
|
||||
|
||||
/**
|
||||
* @var \Symfony\Bundle\WebProfilerBundle\Profiler\TemplateManager
|
||||
*/
|
||||
@ -129,11 +124,7 @@ class TemplateManagerTest extends TestCase
|
||||
|
||||
protected function mockProfile()
|
||||
{
|
||||
$this->profile = $this->getMockBuilder('Symfony\Component\HttpKernel\Profiler\Profile')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
return $this->profile;
|
||||
return $this->getMockBuilder('Symfony\Component\HttpKernel\Profiler\Profile')->disableOriginalConstructor()->getMock();
|
||||
}
|
||||
|
||||
protected function mockTwigEnvironment()
|
||||
@ -144,9 +135,12 @@ class TemplateManagerTest extends TestCase
|
||||
->method('loadTemplate')
|
||||
->will($this->returnValue('loadedTemplate'));
|
||||
|
||||
$this->twigEnvironment->expects($this->any())
|
||||
->method('getLoader')
|
||||
->will($this->returnValue($this->getMock('\Twig_LoaderInterface')));
|
||||
if (interface_exists('\Twig_SourceContextLoaderInterface')) {
|
||||
$loader = $this->getMock('\Twig_SourceContextLoaderInterface');
|
||||
} else {
|
||||
$loader = $this->getMock('\Twig_LoaderInterface');
|
||||
}
|
||||
$this->twigEnvironment->expects($this->any())->method('getLoader')->will($this->returnValue($loader));
|
||||
|
||||
return $this->twigEnvironment;
|
||||
}
|
||||
|
@ -391,7 +391,7 @@ class XmlFileLoader extends FileLoader
|
||||
$arguments[$key] = $arg->nodeValue;
|
||||
break;
|
||||
case 'constant':
|
||||
$arguments[$key] = constant($arg->nodeValue);
|
||||
$arguments[$key] = constant(trim($arg->nodeValue));
|
||||
break;
|
||||
default:
|
||||
$arguments[$key] = XmlUtils::phpize($arg->nodeValue);
|
||||
|
@ -379,7 +379,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
|
||||
);
|
||||
}
|
||||
|
||||
return (string) $controller ?: 'n/a';
|
||||
return is_string($controller) ? $controller : 'n/a';
|
||||
}
|
||||
|
||||
private function getCookieHeader($name, $value, $expires, $path, $domain, $secure, $httponly)
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\HttpKernel\Tests\Bundle;
|
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionNotValidBundle\ExtensionNotValidBundle;
|
||||
use Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\ExtensionPresentBundle;
|
||||
use Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionAbsentBundle\ExtensionAbsentBundle;
|
||||
@ -51,4 +52,18 @@ class BundleTest extends \PHPUnit_Framework_TestCase
|
||||
$bundle = new ExtensionNotValidBundle();
|
||||
$bundle->getContainerExtension();
|
||||
}
|
||||
|
||||
public function testHttpKernelRegisterCommandsIgnoresCommandsThatAreRegisteredAsServices()
|
||||
{
|
||||
$container = new ContainerBuilder();
|
||||
$container->register('console.command.Symfony_Component_HttpKernel_Tests_Fixtures_ExtensionPresentBundle_Command_FooCommand', 'Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\Command\FooCommand');
|
||||
|
||||
$application = $this->getMock('Symfony\Component\Console\Application');
|
||||
// add() is never called when the found command classes are already registered as services
|
||||
$application->expects($this->never())->method('add');
|
||||
|
||||
$bundle = new ExtensionPresentBundle();
|
||||
$bundle->setContainer($container);
|
||||
$bundle->registerCommands($application);
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\HttpKernel\Tests\DataCollector;
|
||||
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Session\Session;
|
||||
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
|
||||
use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;
|
||||
@ -73,16 +74,28 @@ class RequestDataCollectorTest extends \PHPUnit_Framework_TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Test various types of controller callables.
|
||||
* @dataProvider provideControllerCallables
|
||||
*/
|
||||
public function testControllerInspection()
|
||||
public function testControllerInspection($name, $callable, $expected)
|
||||
{
|
||||
$c = new RequestDataCollector();
|
||||
$request = $this->createRequest();
|
||||
$response = $this->createResponse();
|
||||
$this->injectController($c, $callable, $request);
|
||||
$c->collect($request, $response);
|
||||
|
||||
$this->assertSame($expected, $c->getController(), sprintf('Testing: %s', $name));
|
||||
}
|
||||
|
||||
public function provideControllerCallables()
|
||||
{
|
||||
// make sure we always match the line number
|
||||
$r1 = new \ReflectionMethod($this, 'testControllerInspection');
|
||||
$r2 = new \ReflectionMethod($this, 'staticControllerMethod');
|
||||
$r3 = new \ReflectionClass($this);
|
||||
|
||||
// test name, callable, expected
|
||||
$controllerTests = array(
|
||||
return array(
|
||||
array(
|
||||
'"Regular" callable',
|
||||
array($this, 'testControllerInspection'),
|
||||
@ -171,15 +184,17 @@ class RequestDataCollectorTest extends \PHPUnit_Framework_TestCase
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public function testItIgnoresInvalidCallables()
|
||||
{
|
||||
$request = $this->createRequestWithSession();
|
||||
$response = new RedirectResponse('/');
|
||||
|
||||
$c = new RequestDataCollector();
|
||||
$request = $this->createRequest();
|
||||
$response = $this->createResponse();
|
||||
foreach ($controllerTests as $controllerTest) {
|
||||
$this->injectController($c, $controllerTest[1], $request);
|
||||
$c->collect($request, $response);
|
||||
$this->assertSame($controllerTest[2], $c->getController(), sprintf('Testing: %s', $controllerTest[0]));
|
||||
}
|
||||
$c->collect($request, $response);
|
||||
|
||||
$this->assertSame('n/a', $c->getController());
|
||||
}
|
||||
|
||||
protected function createRequest()
|
||||
@ -194,6 +209,16 @@ class RequestDataCollectorTest extends \PHPUnit_Framework_TestCase
|
||||
return $request;
|
||||
}
|
||||
|
||||
private function createRequestWithSession()
|
||||
{
|
||||
$request = $this->createRequest();
|
||||
$request->attributes->set('_controller', 'Foo::bar');
|
||||
$request->setSession(new Session(new MockArraySessionStorage()));
|
||||
$request->getSession()->start();
|
||||
|
||||
return $request;
|
||||
}
|
||||
|
||||
protected function createResponse()
|
||||
{
|
||||
$response = new Response();
|
||||
|
Reference in New Issue
Block a user