From 1788c6bd32f90f96bc1db72f408c44328580e48d Mon Sep 17 00:00:00 2001 From: WouterJ Date: Tue, 7 May 2013 18:20:13 +0200 Subject: [PATCH 01/10] Fixed 2 namespaces --- .../Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php | 2 +- .../TwigBundle/Tests/TokenParser/RenderTokenParserTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php b/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php index 8cccf7e8d6..21486a7a3d 100644 --- a/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php +++ b/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Compiler/TwigLoaderPassTest.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace symfony\src\Symfony\Bundle\TwigBundle\Tests\DependencyInjection\Compiler; +namespace Symfony\Bundle\TwigBundle\Tests\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; diff --git a/src/Symfony/Bundle/TwigBundle/Tests/TokenParser/RenderTokenParserTest.php b/src/Symfony/Bundle/TwigBundle/Tests/TokenParser/RenderTokenParserTest.php index f7d6d90bf9..cec9d47d6b 100644 --- a/src/Symfony/Bundle/TwigBundle/Tests/TokenParser/RenderTokenParserTest.php +++ b/src/Symfony/Bundle/TwigBundle/Tests/TokenParser/RenderTokenParserTest.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Bridge\Twig\Tests\Node; +namespace Symfony\Bundle\TwigBundle\Tests\TokenParser; use Symfony\Bundle\TwigBundle\Tests\TestCase; use Symfony\Bundle\TwigBundle\TokenParser\RenderTokenParser; From 60edc583252cb35846617a7a4902a692061f9ddf Mon Sep 17 00:00:00 2001 From: Lin Clark Date: Tue, 7 May 2013 18:53:47 -0400 Subject: [PATCH 02/10] Fixed fatal error in normalize/denormalizeObject. --- .../Component/Serializer/Serializer.php | 6 ++- .../Tests/Normalizer/TestDenormalizer.php | 38 +++++++++++++++++++ .../Tests/Normalizer/TestNormalizer.php | 38 +++++++++++++++++++ .../Serializer/Tests/SerializerTest.php | 21 ++++++++++ 4 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 src/Symfony/Component/Serializer/Tests/Normalizer/TestDenormalizer.php create mode 100644 src/Symfony/Component/Serializer/Tests/Normalizer/TestNormalizer.php diff --git a/src/Symfony/Component/Serializer/Serializer.php b/src/Symfony/Component/Serializer/Serializer.php index ab6fd58b5f..c19951a9bd 100644 --- a/src/Symfony/Component/Serializer/Serializer.php +++ b/src/Symfony/Component/Serializer/Serializer.php @@ -239,7 +239,8 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz } foreach ($this->normalizers as $normalizer) { - if ($normalizer->supportsNormalization($object, $format)) { + if ($normalizer instanceof NormalizerInterface + && $normalizer->supportsNormalization($object, $format)) { $this->normalizerCache[$class][$format] = $normalizer; return $normalizer->normalize($object, $format, $context); @@ -273,7 +274,8 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz } foreach ($this->normalizers as $normalizer) { - if ($normalizer->supportsDenormalization($data, $class, $format)) { + if ($normalizer instanceof DenormalizerInterface + && $normalizer->supportsDenormalization($data, $class, $format)) { $this->denormalizerCache[$class][$format] = $normalizer; return $normalizer->denormalize($data, $class, $format, $context); diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/TestDenormalizer.php b/src/Symfony/Component/Serializer/Tests/Normalizer/TestDenormalizer.php new file mode 100644 index 0000000000..ce1c7d2f7f --- /dev/null +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/TestDenormalizer.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Serializer\Tests\Normalizer; + +use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; + +/** + * Provides a test Normalizer which only implements the DenormalizerInterface. + * + * @author Lin Clark + */ +class TestDenormalizer implements DenormalizerInterface +{ + /** + * {@inheritdoc} + */ + public function denormalize($data, $class, $format = null, array $context = array()) + { + + } + + /** + * {@inheritdoc} + */ + public function supportsDenormalization($data, $type, $format = null) + { + return TRUE; + } +} diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/TestNormalizer.php b/src/Symfony/Component/Serializer/Tests/Normalizer/TestNormalizer.php new file mode 100644 index 0000000000..149c402110 --- /dev/null +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/TestNormalizer.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Serializer\Tests\Normalizer; + +use Symfony\Component\Serializer\Normalizer\NormalizerInterface; + +/** + * Provides a test Normalizer which only implements the NormalizerInterface. + * + * @author Lin Clark + */ +class TestNormalizer implements NormalizerInterface +{ + /** + * {@inheritdoc} + */ + public function normalize($object, $format = null, array $context = array()) + { + + } + + /** + * {@inheritdoc} + */ + public function supportsNormalization($data, $format = null) + { + return TRUE; + } +} diff --git a/src/Symfony/Component/Serializer/Tests/SerializerTest.php b/src/Symfony/Component/Serializer/Tests/SerializerTest.php index 6470393b13..99ec90cfe3 100644 --- a/src/Symfony/Component/Serializer/Tests/SerializerTest.php +++ b/src/Symfony/Component/Serializer/Tests/SerializerTest.php @@ -17,6 +17,8 @@ use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer; use Symfony\Component\Serializer\Normalizer\CustomNormalizer; use Symfony\Component\Serializer\Tests\Fixtures\TraversableDummy; use Symfony\Component\Serializer\Tests\Fixtures\NormalizableTraversableDummy; +use Symfony\Component\Serializer\Tests\Normalizer\TestNormalizer; +use Symfony\Component\Serializer\Tests\Normalizer\TestDenormalizer; class SerializerTest extends \PHPUnit_Framework_TestCase { @@ -43,6 +45,15 @@ class SerializerTest extends \PHPUnit_Framework_TestCase $this->assertEquals('{"foo":"normalizedFoo","bar":"normalizedBar"}', $result); } + /** + * @expectedException \Symfony\Component\Serializer\Exception\UnexpectedValueException + */ + public function testNormalizeOnDenormalizer() + { + $this->serializer = new Serializer(array(new TestDenormalizer()), array()); + $this->assertTrue($this->serializer->normalize(new \stdClass, 'json')); + } + /** * @expectedException \Symfony\Component\Serializer\Exception\UnexpectedValueException */ @@ -52,6 +63,16 @@ class SerializerTest extends \PHPUnit_Framework_TestCase $this->serializer->denormalize('foo', 'stdClass'); } + /** + * @expectedException \Symfony\Component\Serializer\Exception\UnexpectedValueException + */ + public function testDenormalizeOnNormalizer() + { + $this->serializer = new Serializer(array(new TestNormalizer()), array()); + $data = array('title' => 'foo', 'numbers' => array(5, 3)); + $this->assertTrue($this->serializer->denormalize(json_encode($data), 'stdClass', 'json')); + } + public function testSerialize() { $this->serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new JsonEncoder())); From e3187590c0d3d90a01f5d92c80a7347b984ef73e Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 8 May 2013 10:39:40 +0200 Subject: [PATCH 03/10] [Serializer] fixed CS (refs #7971) --- .../Component/Serializer/Serializer.php | 8 ++---- .../Tests/Normalizer/TestDenormalizer.php | 27 +++++++++---------- .../Tests/Normalizer/TestNormalizer.php | 27 +++++++++---------- .../Serializer/Tests/SerializerTest.php | 11 ++++---- 4 files changed, 33 insertions(+), 40 deletions(-) diff --git a/src/Symfony/Component/Serializer/Serializer.php b/src/Symfony/Component/Serializer/Serializer.php index c19951a9bd..23a8a0795b 100644 --- a/src/Symfony/Component/Serializer/Serializer.php +++ b/src/Symfony/Component/Serializer/Serializer.php @@ -173,9 +173,7 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz private function getNormalizer($data, $format = null) { foreach ($this->normalizers as $normalizer) { - if ($normalizer instanceof NormalizerInterface - && $normalizer->supportsNormalization($data, $format) - ) { + if ($normalizer instanceof NormalizerInterface && $normalizer->supportsNormalization($data, $format)) { return $normalizer; } } @@ -189,9 +187,7 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz private function getDenormalizer($data, $type, $format = null) { foreach ($this->normalizers as $normalizer) { - if ($normalizer instanceof DenormalizerInterface - && $normalizer->supportsDenormalization($data, $type, $format) - ) { + if ($normalizer instanceof DenormalizerInterface && $normalizer->supportsDenormalization($data, $type, $format)) { return $normalizer; } } diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/TestDenormalizer.php b/src/Symfony/Component/Serializer/Tests/Normalizer/TestDenormalizer.php index ce1c7d2f7f..e881ad1397 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/TestDenormalizer.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/TestDenormalizer.php @@ -20,19 +20,18 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; */ class TestDenormalizer implements DenormalizerInterface { - /** - * {@inheritdoc} - */ - public function denormalize($data, $class, $format = null, array $context = array()) - { + /** + * {@inheritdoc} + */ + public function denormalize($data, $class, $format = null, array $context = array()) + { + } - } - - /** - * {@inheritdoc} - */ - public function supportsDenormalization($data, $type, $format = null) - { - return TRUE; - } + /** + * {@inheritdoc} + */ + public function supportsDenormalization($data, $type, $format = null) + { + return true; + } } diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/TestNormalizer.php b/src/Symfony/Component/Serializer/Tests/Normalizer/TestNormalizer.php index 149c402110..4c000b3eb4 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/TestNormalizer.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/TestNormalizer.php @@ -20,19 +20,18 @@ use Symfony\Component\Serializer\Normalizer\NormalizerInterface; */ class TestNormalizer implements NormalizerInterface { - /** - * {@inheritdoc} - */ - public function normalize($object, $format = null, array $context = array()) - { - - } + /** + * {@inheritdoc} + */ + public function normalize($object, $format = null, array $context = array()) + { + } - /** - * {@inheritdoc} - */ - public function supportsNormalization($data, $format = null) - { - return TRUE; - } + /** + * {@inheritdoc} + */ + public function supportsNormalization($data, $format = null) + { + return true; + } } diff --git a/src/Symfony/Component/Serializer/Tests/SerializerTest.php b/src/Symfony/Component/Serializer/Tests/SerializerTest.php index 99ec90cfe3..3c189461f2 100644 --- a/src/Symfony/Component/Serializer/Tests/SerializerTest.php +++ b/src/Symfony/Component/Serializer/Tests/SerializerTest.php @@ -50,8 +50,8 @@ class SerializerTest extends \PHPUnit_Framework_TestCase */ public function testNormalizeOnDenormalizer() { - $this->serializer = new Serializer(array(new TestDenormalizer()), array()); - $this->assertTrue($this->serializer->normalize(new \stdClass, 'json')); + $this->serializer = new Serializer(array(new TestDenormalizer()), array()); + $this->assertTrue($this->serializer->normalize(new \stdClass, 'json')); } /** @@ -68,9 +68,9 @@ class SerializerTest extends \PHPUnit_Framework_TestCase */ public function testDenormalizeOnNormalizer() { - $this->serializer = new Serializer(array(new TestNormalizer()), array()); - $data = array('title' => 'foo', 'numbers' => array(5, 3)); - $this->assertTrue($this->serializer->denormalize(json_encode($data), 'stdClass', 'json')); + $this->serializer = new Serializer(array(new TestNormalizer()), array()); + $data = array('title' => 'foo', 'numbers' => array(5, 3)); + $this->assertTrue($this->serializer->denormalize(json_encode($data), 'stdClass', 'json')); } public function testSerialize() @@ -244,5 +244,4 @@ class Model { return array('title' => $this->title, 'numbers' => $this->numbers); } - } From 37af7714afa33361c4ffa10cc59dc1ff770001f9 Mon Sep 17 00:00:00 2001 From: Stefan Warman Date: Tue, 7 May 2013 19:29:43 +0100 Subject: [PATCH 04/10] [Console] Added dedicated testcase for HelperSet class --- .../Console/Tests/Helper/HelperSetTest.php | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php diff --git a/src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php b/src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php new file mode 100644 index 0000000000..c9832736a2 --- /dev/null +++ b/src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php @@ -0,0 +1,136 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Tests\Helper; + +use Symfony\Component\Console\Helper\HelperSet; +use Symfony\Component\Console\Command\Command; + +class HelperSetTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers \Symfony\Component\Console\Helper\HelperSet::__construct + */ + public function testConstructor() + { + $mock_helper = $this->getGenericMockHelper('fake_helper'); + $helperset = new HelperSet(array('fake_helper_alias' => $mock_helper)); + + $this->assertEquals($mock_helper, $helperset->get('fake_helper_alias'), '__construct sets given helper to helpers'); + $this->assertTrue($helperset->has('fake_helper_alias'), '__construct sets helper alias for given helper'); + } + + /** + * @covers \Symfony\Component\Console\Helper\HelperSet::set + */ + public function testSet() + { + $helperset = new HelperSet(); + $helperset->set($this->getGenericMockHelper('fake_helper', $helperset)); + $this->assertTrue($helperset->has('fake_helper'), '->set() adds helper to helpers'); + + $helperset = new HelperSet(); + $helperset->set($this->getGenericMockHelper('fake_helper_01', $helperset)); + $helperset->set($this->getGenericMockHelper('fake_helper_02', $helperset)); + $this->assertTrue($helperset->has('fake_helper_01'), '->set() will set multiple helpers on consecutive calls'); + $this->assertTrue($helperset->has('fake_helper_02'), '->set() will set multiple helpers on consecutive calls'); + + $helperset = new HelperSet(); + $helperset->set($this->getGenericMockHelper('fake_helper', $helperset), 'fake_helper_alias'); + $this->assertTrue($helperset->has('fake_helper'), '->set() adds helper alias when set'); + $this->assertTrue($helperset->has('fake_helper_alias'), '->set() adds helper alias when set'); + } + + /** + * @covers \Symfony\Component\Console\Helper\HelperSet::has + */ + public function testHas() + { + $helperset = new HelperSet(array('fake_helper_alias' => $this->getGenericMockHelper('fake_helper'))); + $this->assertTrue($helperset->has('fake_helper'), '->has() finds set helper'); + $this->assertTrue($helperset->has('fake_helper_alias'), '->has() finds set helper by alias'); + } + + /** + * @covers \Symfony\Component\Console\Helper\HelperSet::get + */ + public function testGet() + { + $helper_01 = $this->getGenericMockHelper('fake_helper_01'); + $helper_02 = $this->getGenericMockHelper('fake_helper_02'); + $helperset = new HelperSet(array('fake_helper_01_alias' => $helper_01, 'fake_helper_02_alias' => $helper_02)); + $this->assertEquals($helper_01, $helperset->get('fake_helper_01'), '->get() returns correct helper by name'); + $this->assertEquals($helper_01, $helperset->get('fake_helper_01_alias'), '->get() returns correct helper by alias'); + $this->assertEquals($helper_02, $helperset->get('fake_helper_02'), '->get() returns correct helper by name'); + $this->assertEquals($helper_02, $helperset->get('fake_helper_02_alias'), '->get() returns correct helper by alias'); + + $helperset = new HelperSet(); + try { + $helperset->get('foo'); + $this->fail('->get() throws \InvalidArgumentException when helper not found'); + } catch (\Exception $e) { + $this->assertInstanceOf('\InvalidArgumentException', $e, '->get() throws \InvalidArgumentException when helper not found'); + $this->assertContains('The helper "foo" is not defined.', $e->getMessage(), '->get() throws \InvalidArgumentException when helper not found'); + } + } + + /** + * @covers \Symfony\Component\Console\Helper\HelperSet::setCommand + */ + public function testSetCommand() + { + $cmd_01 = new Command('foo'); + $cmd_02 = new Command('bar'); + + $helperset = new HelperSet(); + $helperset->setCommand($cmd_01); + $this->assertEquals($cmd_01, $helperset->getCommand(), '->setCommand() stores given command'); + + $helperset = new HelperSet(); + $helperset->setCommand($cmd_01); + $helperset->setCommand($cmd_02); + $this->assertEquals($cmd_02, $helperset->getCommand(), '->setCommand() overwrites stored command with consecutive calls'); + } + + /** + * @covers \Symfony\Component\Console\Helper\HelperSet::getCommand + */ + public function testGetCommand() + { + $cmd = new Command('foo'); + $helperset = new HelperSet(); + $helperset->setCommand($cmd); + $this->assertEquals($cmd, $helperset->getCommand(), '->getCommand() retrieves stored command'); + } + + /** + * Create a generic mock for the helper interface. Optionally check for a call to setHelperSet with a specific + * helperset instance. + * + * @param string $name + * @param HelperSet $helperset allows a mock to verify a particular helperset set is being added to the Helper + */ + private function getGenericMockHelper($name, HelperSet $helperset = null) + { + $mock_helper = $this->getMock('\Symfony\Component\Console\Helper\HelperInterface'); + $mock_helper->expects($this->any()) + ->method('getName') + ->will($this->returnValue($name)); + + if ($helperset) { + $mock_helper->expects($this->any()) + ->method('setHelperSet') + ->with($this->equalTo($helperset)); + } + + return $mock_helper; + } +} From e8d5d16a13a9cfbe3245d485a83ea4e7fa10b4a6 Mon Sep 17 00:00:00 2001 From: Myke79 Date: Thu, 9 May 2013 12:39:03 +0300 Subject: [PATCH 05/10] Fixed Loader import --- src/Symfony/Component/Config/Loader/Loader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Config/Loader/Loader.php b/src/Symfony/Component/Config/Loader/Loader.php index 9acfb7b0c0..705a6a78e9 100644 --- a/src/Symfony/Component/Config/Loader/Loader.php +++ b/src/Symfony/Component/Config/Loader/Loader.php @@ -52,7 +52,7 @@ abstract class Loader implements LoaderInterface */ public function import($resource, $type = null) { - return $this->resolve($resource)->load($resource, $type); + return $this->resolve($resource, $type)->load($resource, $type); } /** From c93b9f72e55e2d2993bd6bef702f63122518d419 Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Thu, 9 May 2013 13:34:06 +0100 Subject: [PATCH 06/10] Added a test case for Loader::import(). --- .../Config/Tests/Loader/LoaderTest.php | 86 +++++++++++++------ 1 file changed, 60 insertions(+), 26 deletions(-) diff --git a/src/Symfony/Component/Config/Tests/Loader/LoaderTest.php b/src/Symfony/Component/Config/Tests/Loader/LoaderTest.php index 8ce5a8b68e..05ea772a7f 100644 --- a/src/Symfony/Component/Config/Tests/Loader/LoaderTest.php +++ b/src/Symfony/Component/Config/Tests/Loader/LoaderTest.php @@ -11,59 +11,93 @@ namespace Symfony\Component\Config\Tests\Loader; -use Symfony\Component\Config\Loader\LoaderResolver; use Symfony\Component\Config\Loader\Loader; -use Symfony\Component\Config\Exception\FileLoaderLoadException; class LoaderTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\Config\Loader\Loader::getResolver - * @covers Symfony\Component\Config\Loader\Loader::setResolver - */ public function testGetSetResolver() { - $resolver = new LoaderResolver(); + $resolver = $this->getMock('Symfony\Component\Config\Loader\LoaderResolverInterface'); + $loader = new ProjectLoader1(); $loader->setResolver($resolver); + $this->assertSame($resolver, $loader->getResolver(), '->setResolver() sets the resolver loader'); } - /** - * @covers Symfony\Component\Config\Loader\Loader::resolve - */ public function testResolve() { - $loader1 = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface'); - $loader1->expects($this->once())->method('supports')->will($this->returnValue(true)); - $resolver = new LoaderResolver(array($loader1)); + $resolvedLoader = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface'); + + $resolver = $this->getMock('Symfony\Component\Config\Loader\LoaderResolverInterface'); + $resolver->expects($this->once()) + ->method('resolve') + ->with('foo.xml') + ->will($this->returnValue($resolvedLoader)); + $loader = new ProjectLoader1(); $loader->setResolver($resolver); $this->assertSame($loader, $loader->resolve('foo.foo'), '->resolve() finds a loader'); - $this->assertSame($loader1, $loader->resolve('foo.xml'), '->resolve() finds a loader'); + $this->assertSame($resolvedLoader, $loader->resolve('foo.xml'), '->resolve() finds a loader'); + } + + /** + * @expectedException Symfony\Component\Config\Exception\FileLoaderLoadException + */ + public function testResolveWhenResolverCannotFindLoader() + { + $resolver = $this->getMock('Symfony\Component\Config\Loader\LoaderResolverInterface'); + $resolver->expects($this->once()) + ->method('resolve') + ->with('FOOBAR') + ->will($this->returnValue(false)); - $loader1 = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface'); - $loader1->expects($this->once())->method('supports')->will($this->returnValue(false)); - $resolver = new LoaderResolver(array($loader1)); $loader = new ProjectLoader1(); $loader->setResolver($resolver); - try { - $loader->resolve('FOOBAR'); - $this->fail('->resolve() throws a FileLoaderLoadException if the resource cannot be loaded'); - } catch (FileLoaderLoadException $e) { - $this->assertInstanceOf('Symfony\Component\Config\Exception\FileLoaderLoadException', $e, '->resolve() throws a FileLoaderLoadException if the resource cannot be loaded'); - } + + $loader->resolve('FOOBAR'); } public function testImport() { - $loader = $this->getMock('Symfony\Component\Config\Loader\Loader', array('supports', 'load')); - $loader->expects($this->once())->method('supports')->will($this->returnValue(true)); - $loader->expects($this->once())->method('load')->will($this->returnValue('yes')); + $resolvedLoader = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface'); + $resolvedLoader->expects($this->once()) + ->method('load') + ->with('foo') + ->will($this->returnValue('yes')); + + $resolver = $this->getMock('Symfony\Component\Config\Loader\LoaderResolverInterface'); + $resolver->expects($this->once()) + ->method('resolve') + ->with('foo') + ->will($this->returnValue($resolvedLoader)); + + $loader = new ProjectLoader1(); + $loader->setResolver($resolver); $this->assertEquals('yes', $loader->import('foo')); } + + public function testImportWithType() + { + $resolvedLoader = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface'); + $resolvedLoader->expects($this->once()) + ->method('load') + ->with('foo', 'bar') + ->will($this->returnValue('yes')); + + $resolver = $this->getMock('Symfony\Component\Config\Loader\LoaderResolverInterface'); + $resolver->expects($this->once()) + ->method('resolve') + ->with('foo', 'bar') + ->will($this->returnValue($resolvedLoader)); + + $loader = new ProjectLoader1(); + $loader->setResolver($resolver); + + $this->assertEquals('yes', $loader->import('foo', 'bar')); + } } class ProjectLoader1 extends Loader From ef87ba79137e7c1351c556d108664a82aa8aed7c Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Thu, 9 May 2013 23:31:20 +0100 Subject: [PATCH 07/10] [Form] Fixed a method name. 1858b96b7dc473fcab09533b17ace9a24b8d3d86 introduced a mocked context and therefore getExecutionContext() is now called getMockExectionContext(). --- .../Validator/Constraints/FormValidatorTest.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php index 48f6123426..f1ee046551 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php @@ -293,17 +293,16 @@ class FormValidatorTest extends \PHPUnit_Framework_TestCase public function testDontExecuteFunctionNames() { - $context = $this->getExecutionContext(); - $graphWalker = $context->getGraphWalker(); + $context = $this->getMockExecutionContext(); $object = $this->getMock('\stdClass'); $options = array('validation_groups' => 'header'); $form = $this->getBuilder('name', '\stdClass', $options) ->setData($object) ->getForm(); - $graphWalker->expects($this->once()) - ->method('walkReference') - ->with($object, 'header', 'data', true); + $context->expects($this->once()) + ->method('validate') + ->with($object, 'data', 'header', true); $this->validator->initialize($context); $this->validator->validate($form, new Form()); From a5441b2d573eccf4664632a2d1ddba14e877dbd0 Mon Sep 17 00:00:00 2001 From: Erin Millard Date: Fri, 10 May 2013 10:09:46 +1000 Subject: [PATCH 08/10] Fixed parsing of leading blank lines in folded scalars. Closes #7989. --- src/Symfony/Component/Yaml/Parser.php | 14 +++++++++++-- .../Component/Yaml/Tests/ParserTest.php | 21 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Yaml/Parser.php b/src/Symfony/Component/Yaml/Parser.php index 1e88f85d4a..4a82b784bc 100644 --- a/src/Symfony/Component/Yaml/Parser.php +++ b/src/Symfony/Component/Yaml/Parser.php @@ -419,6 +419,18 @@ class Parser return ''; } + $isCurrentLineBlank = $this->isCurrentLineBlank(); + $text = ''; + + // leading blank lines are consumed before determining indentation + while ($notEOF && $isCurrentLineBlank) { + // newline only if not EOF + if ($notEOF = $this->moveToNextLine()) { + $text .= "\n"; + $isCurrentLineBlank = $this->isCurrentLineBlank(); + } + } + // determine indentation if not specified if (0 === $indentation) { if (preg_match('/^ +/', $this->currentLine, $matches)) { @@ -426,11 +438,9 @@ class Parser } } - $text = ''; if ($indentation > 0) { $pattern = sprintf('/^ {%d}(.*)$/', $indentation); - $isCurrentLineBlank = $this->isCurrentLineBlank(); while ( $notEOF && ( $isCurrentLineBlank || diff --git a/src/Symfony/Component/Yaml/Tests/ParserTest.php b/src/Symfony/Component/Yaml/Tests/ParserTest.php index 4eea6d5308..5e0e7634a6 100644 --- a/src/Symfony/Component/Yaml/Tests/ParserTest.php +++ b/src/Symfony/Component/Yaml/Tests/ParserTest.php @@ -396,6 +396,27 @@ EOF; $this->assertSame($expected, $this->parser->parse($yaml)); } + /** + * Regression test for issue #7989. + * + * @see https://github.com/symfony/symfony/issues/7989 + */ + public function testBlockLiteralWithLeadingNewlines() + { + $yaml = <<<'EOF' +foo: |- + + + bar + +EOF; + $expected = array( + 'foo' => "\n\nbar" + ); + + $this->assertSame($expected, $this->parser->parse($yaml)); + } + public function testObjectSupportEnabled() { $input = << Date: Fri, 10 May 2013 19:13:09 +0300 Subject: [PATCH 09/10] Fixed XML syntax. --- .../Validator/Resources/translations/validators.et.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.et.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.et.xlf index 06aa4d8614..d525d3245c 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.et.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.et.xlf @@ -184,7 +184,7 @@ The file was only partially uploaded. - Fail ei laetud täielikult üles. + Fail ei laetud täielikult üles. No file was uploaded. From a00abf6cda43ca7ec61841d11e8e23ae7c055261 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 10 May 2013 18:49:00 +0200 Subject: [PATCH 10/10] fixed CS --- src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php | 1 + .../HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php | 2 +- src/Symfony/Component/Routing/Tests/RouteCollectionTest.php | 2 +- src/Symfony/Component/Translation/Translator.php | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php b/src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php index 9260f4ad22..07a80772d6 100644 --- a/src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php +++ b/src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php @@ -91,6 +91,7 @@ class ErrorHandler $stack = array_map( function ($row) { unset($row['args']); + return $row; }, array_slice(debug_backtrace(false), 0, 10) diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php index b0d300780f..ea6c724453 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php @@ -142,7 +142,7 @@ class InlineFragmentRendererTest extends \PHPUnit_Framework_TestCase { $expectedSubRequest = Request::create('/'); $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); - + $kernel = $this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'); $kernel ->expects($this->any()) diff --git a/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php b/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php index 901317663f..3d78adf923 100644 --- a/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php +++ b/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php @@ -97,7 +97,7 @@ class RouteCollectionTest extends \PHPUnit_Framework_TestCase $collection->addCollection($collection1); $collection->add('last', $last = new Route('/last')); - $this->assertSame(array('bar' => $bar, 'foo' => $foo, 'grandchild' => $grandchild, 'last' => $last), $collection->all(), + $this->assertSame(array('bar' => $bar, 'foo' => $foo, 'grandchild' => $grandchild, 'last' => $last), $collection->all(), '->addCollection() imports routes of another collection, overrides if necessary and adds them at the end'); } diff --git a/src/Symfony/Component/Translation/Translator.php b/src/Symfony/Component/Translation/Translator.php index a45dd0b75e..cf308af764 100644 --- a/src/Symfony/Component/Translation/Translator.php +++ b/src/Symfony/Component/Translation/Translator.php @@ -94,7 +94,7 @@ class Translator implements TranslatorInterface { $this->resources[$locale][] = array($format, $resource, $domain); - if(in_array($locale, $this->fallbackLocales)) { + if (in_array($locale, $this->fallbackLocales)) { $this->catalogues = array(); } else { unset($this->catalogues[$locale]);