From 1bdd127938058a1f34fd0bc883ebb9e4d6ccf67d Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sat, 24 Oct 2015 22:25:19 +0200 Subject: [PATCH 01/43] fixed Twig deprecation notices --- composer.json | 2 +- src/Symfony/Bridge/Twig/Extension/FormExtension.php | 2 +- src/Symfony/Bridge/Twig/composer.json | 2 +- src/Symfony/Bundle/SecurityBundle/composer.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 521ccade6dad1..7bdf39d8ba52a 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "require": { "php": ">=5.3.3", "doctrine/common": "~2.4", - "twig/twig": "~1.20|~2.0", + "twig/twig": "~1.23|~2.0", "psr/log": "~1.0" }, "replace": { diff --git a/src/Symfony/Bridge/Twig/Extension/FormExtension.php b/src/Symfony/Bridge/Twig/Extension/FormExtension.php index 9c7339f70295f..e972ac4354baa 100644 --- a/src/Symfony/Bridge/Twig/Extension/FormExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/FormExtension.php @@ -21,7 +21,7 @@ * @author Fabien Potencier * @author Bernhard Schussek */ -class FormExtension extends \Twig_Extension +class FormExtension extends \Twig_Extension implements \Twig_Extension_InitRuntimeInterface { /** * This property is public so that it can be accessed directly from compiled diff --git a/src/Symfony/Bridge/Twig/composer.json b/src/Symfony/Bridge/Twig/composer.json index 8ba426b6b16bc..4f11b6b06520c 100644 --- a/src/Symfony/Bridge/Twig/composer.json +++ b/src/Symfony/Bridge/Twig/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=5.3.3", - "twig/twig": "~1.20|~2.0" + "twig/twig": "~1.23|~2.0" }, "require-dev": { "symfony/finder": "~2.3", diff --git a/src/Symfony/Bundle/SecurityBundle/composer.json b/src/Symfony/Bundle/SecurityBundle/composer.json index f3a001b649896..8cfad2ff6ee18 100644 --- a/src/Symfony/Bundle/SecurityBundle/composer.json +++ b/src/Symfony/Bundle/SecurityBundle/composer.json @@ -34,7 +34,7 @@ "symfony/process": "~2.0,>=2.0.5", "symfony/validator": "~2.2", "symfony/yaml": "~2.0,>=2.0.5", - "twig/twig": "~1.20|~2.0" + "twig/twig": "~1.23|~2.0" }, "autoload": { "psr-0": { "Symfony\\Bundle\\SecurityBundle\\": "" } From 437e268036811d3c59c62fe961ee7e6f8482f7cf Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sun, 25 Oct 2015 21:44:48 +0100 Subject: [PATCH 02/43] [travis] Fail early when an invalid composer.json is found --- .travis.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.travis.php b/.travis.php index 1334f14ad4ace..511e05008a335 100644 --- a/.travis.php +++ b/.travis.php @@ -19,8 +19,11 @@ } echo "$dir\n"; - $json = file_get_contents($dir.'/composer.json'); - $package = json_decode($json); + $json = ltrim(file_get_contents($dir.'/composer.json')); + if (null === $package = json_decode($json)) { + passthru("composer validate $dir/composer.json"); + exit(1); + } $package->repositories = array(array( 'type' => 'composer', From acf9d7e65c2bd8212f2c56062b7ab51f2bd7337a Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 27 Oct 2015 11:54:58 -0700 Subject: [PATCH 03/43] bumped Symfony version to 2.3.35 --- src/Symfony/Component/HttpKernel/Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 1013e31bb0c72..d0defb1c9cfc7 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -58,12 +58,12 @@ abstract class Kernel implements KernelInterface, TerminableInterface protected $startTime; protected $loadClassCache; - const VERSION = '2.3.34'; - const VERSION_ID = 20334; + const VERSION = '2.3.35-DEV'; + const VERSION_ID = 20335; const MAJOR_VERSION = 2; const MINOR_VERSION = 3; - const RELEASE_VERSION = 34; - const EXTRA_VERSION = ''; + const RELEASE_VERSION = 35; + const EXTRA_VERSION = 'DEV'; /** * Constructor. From 0d140642e0af6ef84acae59d8c729c91bd460e37 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Tue, 6 Oct 2015 14:38:55 +0200 Subject: [PATCH 04/43] don't allow to install the split Security packages Currently, you would be able to install the Security component fromm Symfony 2.3 together with one of the split packages from a higher Symfony vesion like this: ```json { "require": { "symfony/symfony": "2.3.*", "symfony/security-core": "~2.7" } } ``` However, you will end up with classes being present twice. This must be reverted after merging up in the `2.7` branch. --- composer.json | 3 +++ src/Symfony/Component/Security/composer.json | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/composer.json b/composer.json index bf85b666a6547..49489eb282d4c 100644 --- a/composer.json +++ b/composer.json @@ -48,7 +48,10 @@ "symfony/proxy-manager-bridge": "self.version", "symfony/routing": "self.version", "symfony/security": "self.version", + "symfony/security-acl": "self.version", "symfony/security-bundle": "self.version", + "symfony/security-core": "self.version", + "symfony/security-http": "self.version", "symfony/serializer": "self.version", "symfony/stopwatch": "self.version", "symfony/swiftmailer-bridge": "self.version", diff --git a/src/Symfony/Component/Security/composer.json b/src/Symfony/Component/Security/composer.json index 2026fc48100e8..4c2b07036c359 100644 --- a/src/Symfony/Component/Security/composer.json +++ b/src/Symfony/Component/Security/composer.json @@ -32,6 +32,11 @@ "psr/log": "~1.0", "ircmaxell/password-compat": "~1.0" }, + "replace": { + "symfony/security-acl": "self.version", + "symfony/security-core": "self.version", + "symfony/security-http": "self.version" + }, "suggest": { "symfony/class-loader": "", "symfony/finder": "", From e6c89f15e4b8bcc8eb4e35dd0219b121f5e34487 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 28 Oct 2015 00:14:24 +0100 Subject: [PATCH 05/43] Use mb_detect_encoding with $strict = true --- src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php | 2 +- src/Symfony/Component/Console/Application.php | 4 ++-- src/Symfony/Component/Console/Helper/Helper.php | 2 +- src/Symfony/Component/Console/Helper/TableHelper.php | 2 +- .../DataTransformer/NumberToLocalizedStringTransformer.php | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php b/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php index 59e866479858a..92fec99b5b47f 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php @@ -160,7 +160,7 @@ public function testLogUTF8LongString() $dbalLogger ->expects($this->once()) ->method('log') - ->with('SQL', array('short' => $shortString, 'long' => mb_substr($longString, 0, DbalLogger::MAX_STRING_LENGTH - 6, mb_detect_encoding($longString)).' [...]')) + ->with('SQL', array('short' => $shortString, 'long' => mb_substr($longString, 0, DbalLogger::MAX_STRING_LENGTH - 6, 'UTF-8').' [...]')) ; $dbalLogger->startQuery('SQL', array( diff --git a/src/Symfony/Component/Console/Application.php b/src/Symfony/Component/Console/Application.php index f8bd1d05828b5..eb665e5bdb49a 100644 --- a/src/Symfony/Component/Console/Application.php +++ b/src/Symfony/Component/Console/Application.php @@ -1089,7 +1089,7 @@ private function stringWidth($string) return strlen($string); } - if (false === $encoding = mb_detect_encoding($string)) { + if (false === $encoding = mb_detect_encoding($string, null, true)) { return strlen($string); } @@ -1106,7 +1106,7 @@ private function splitStringByWidth($string, $width) return str_split($string, $width); } - if (false === $encoding = mb_detect_encoding($string)) { + if (false === $encoding = mb_detect_encoding($string, null, true)) { return str_split($string, $width); } diff --git a/src/Symfony/Component/Console/Helper/Helper.php b/src/Symfony/Component/Console/Helper/Helper.php index dc42600de88c2..dcdca6da24eff 100644 --- a/src/Symfony/Component/Console/Helper/Helper.php +++ b/src/Symfony/Component/Console/Helper/Helper.php @@ -53,7 +53,7 @@ protected function strlen($string) return strlen($string); } - if (false === $encoding = mb_detect_encoding($string)) { + if (false === $encoding = mb_detect_encoding($string, null, true)) { return strlen($string); } diff --git a/src/Symfony/Component/Console/Helper/TableHelper.php b/src/Symfony/Component/Console/Helper/TableHelper.php index 7d624771db259..00814ecdd922a 100644 --- a/src/Symfony/Component/Console/Helper/TableHelper.php +++ b/src/Symfony/Component/Console/Helper/TableHelper.php @@ -386,7 +386,7 @@ private function renderCell(array $row, $column, $cellFormat) $width = $this->getColumnWidth($column); // str_pad won't work properly with multi-byte strings, we need to fix the padding - if (function_exists('mb_strwidth') && false !== $encoding = mb_detect_encoding($cell)) { + if (function_exists('mb_strwidth') && false !== $encoding = mb_detect_encoding($cell, null, true)) { $width += strlen($cell) - mb_strwidth($cell, $encoding); } diff --git a/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php b/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php index 79423cea3bc48..7cc3d5c805369 100644 --- a/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php +++ b/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php @@ -132,7 +132,7 @@ public function reverseTransform($value) throw new TransformationFailedException('I don\'t have a clear idea what infinity looks like'); } - if (function_exists('mb_detect_encoding') && false !== $encoding = mb_detect_encoding($value)) { + if (function_exists('mb_detect_encoding') && false !== $encoding = mb_detect_encoding($value, null, true)) { $length = mb_strlen($value, $encoding); $remainder = mb_substr($value, $position, $length, $encoding); } else { From 3490e98226cf7a0f6e7e1a5f97149ac89e918d31 Mon Sep 17 00:00:00 2001 From: Baachi Date: Wed, 21 Oct 2015 18:38:56 +0200 Subject: [PATCH 06/43] [DoctrineBridge] Fix issue which prevent the profiler to explain a query --- .../DataCollector/DoctrineDataCollector.php | 3 ++ .../DoctrineDataCollectorTest.php | 28 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php b/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php index b4a2acd4e650f..a57b9ae6ea151 100644 --- a/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php +++ b/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php @@ -117,6 +117,9 @@ private function sanitizeQueries($connectionName, $queries) private function sanitizeQuery($connectionName, $query) { $query['explainable'] = true; + if (null === $query['params']) { + $query['params'] = array(); + } if (!is_array($query['params'])) { $query['params'] = array($query['params']); } diff --git a/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php b/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php index 1870aa650c009..45d0310e6dac8 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php @@ -79,9 +79,25 @@ public function testCollectQueries($param, $types, $expected, $explainable) $c = $this->createCollector($queries); $c->collect(new Request(), new Response()); - $collected_queries = $c->getQueries(); - $this->assertEquals($expected, $collected_queries['default'][0]['params'][0]); - $this->assertEquals($explainable, $collected_queries['default'][0]['explainable']); + $collectedQueries = $c->getQueries(); + $this->assertEquals($expected, $collectedQueries['default'][0]['params'][0]); + $this->assertEquals($explainable, $collectedQueries['default'][0]['explainable']); + } + + public function testCollectQueryWithNoParams() + { + $queries = array( + array('sql' => 'SELECT * FROM table1', 'params' => array(), 'types' => array(), 'executionMS' => 1), + array('sql' => 'SELECT * FROM table1', 'params' => null, 'types' => null, 'executionMS' => 1), + ); + $c = $this->createCollector($queries); + $c->collect(new Request(), new Response()); + + $collectedQueries = $c->getQueries(); + $this->assertEquals(array(), $collectedQueries['default'][0]['params']); + $this->assertTrue($collectedQueries['default'][0]['explainable']); + $this->assertEquals(array(), $collectedQueries['default'][1]['params']); + $this->assertTrue($collectedQueries['default'][1]['explainable']); } /** @@ -96,9 +112,9 @@ public function testSerialization($param, $types, $expected, $explainable) $c->collect(new Request(), new Response()); $c = unserialize(serialize($c)); - $collected_queries = $c->getQueries(); - $this->assertEquals($expected, $collected_queries['default'][0]['params'][0]); - $this->assertEquals($explainable, $collected_queries['default'][0]['explainable']); + $collectedQueries = $c->getQueries(); + $this->assertEquals($expected, $collectedQueries['default'][0]['params'][0]); + $this->assertEquals($explainable, $collectedQueries['default'][0]['explainable']); } public function paramProvider() From 6a7d27082008e6bce646c1e3c02b1603b8f6ce9b Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 28 Oct 2015 04:01:13 +0100 Subject: [PATCH 07/43] [HttpKernel] Add `@group time-sensitive` on some transient tests --- .../HttpKernel/Tests/DataCollector/TimeDataCollectorTest.php | 3 +++ .../HttpKernel/Tests/EventListener/ExceptionListenerTest.php | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/Symfony/Component/HttpKernel/Tests/DataCollector/TimeDataCollectorTest.php b/src/Symfony/Component/HttpKernel/Tests/DataCollector/TimeDataCollectorTest.php index b5d64bffe350a..0bdcccd53d0cb 100644 --- a/src/Symfony/Component/HttpKernel/Tests/DataCollector/TimeDataCollectorTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/DataCollector/TimeDataCollectorTest.php @@ -15,6 +15,9 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +/** + * @group time-sensitive + */ class TimeDataCollectorTest extends \PHPUnit_Framework_TestCase { public function testCollect() diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/ExceptionListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/ExceptionListenerTest.php index 8fb00f51c1e6e..947af1122850d 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/ExceptionListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/ExceptionListenerTest.php @@ -23,6 +23,8 @@ * ExceptionListenerTest. * * @author Robert Schönthal + * + * @group time-sensitive */ class ExceptionListenerTest extends \PHPUnit_Framework_TestCase { From 87c08d5fe51d3c2f334ca4b27a5be3ec5288f4fc Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 27 Oct 2015 21:13:05 -0700 Subject: [PATCH 08/43] added missing quotes in YAML files --- .../DependencyInjection/Tests/Fixtures/yaml/services6.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml index d9dc85265f190..b79697b6e9399 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml @@ -8,7 +8,7 @@ services: file: { class: FooClass, file: %path%/foo.php } arguments: { class: FooClass, arguments: [foo, '@foo', [true, false]] } configurator1: { class: FooClass, configurator: sc_configure } - configurator2: { class: FooClass, configurator: [@baz, configure] } + configurator2: { class: FooClass, configurator: ['@baz', configure] } configurator3: { class: FooClass, configurator: [BazClass, configureStatic] } method_call1: class: FooClass From 6541b8b72610d5838b2f9ed02592071f49382f28 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 28 Oct 2015 22:19:48 +0100 Subject: [PATCH 09/43] don't call constructors on Mongo mock objects Calling the parent constructor of the mocked `Mongo` class tries to connect to a local MongoDB server which fails in case no local server was configured. Similarly, when the parent constructor of the mocked `MongoCollection` class is called it performs checks on the passed arguments which fails again when a connection was not established successfully before. --- .../Session/Storage/Handler/MongoDbSessionHandlerTest.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php index c72358afc8436..755be2fcf36c5 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php @@ -34,6 +34,7 @@ protected function setUp() $mongoClass = version_compare(phpversion('mongo'), '1.3.0', '<') ? 'Mongo' : 'MongoClient'; $this->mongo = $this->getMockBuilder($mongoClass) + ->disableOriginalConstructor() ->getMock(); $this->options = array( @@ -202,13 +203,8 @@ public function testGc() private function createMongoCollectionMock() { - $mongoClient = $this->getMockBuilder('MongoClient') - ->getMock(); - $mongoDb = $this->getMockBuilder('MongoDB') - ->setConstructorArgs(array($mongoClient, 'database-name')) - ->getMock(); $collection = $this->getMockBuilder('MongoCollection') - ->setConstructorArgs(array($mongoDb, 'collection-name')) + ->disableOriginalConstructor() ->getMock(); return $collection; From 29d696944cf4877f1c417d6e3ebe4495d22ab9c2 Mon Sep 17 00:00:00 2001 From: Possum Date: Thu, 29 Oct 2015 11:26:44 +0100 Subject: [PATCH 10/43] Set back libxml settings after testings. --- src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php | 7 +++++-- .../Translation/Tests/Loader/XliffFileLoaderTest.php | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php b/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php index f592e571c213f..cff40b1232725 100644 --- a/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php +++ b/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php @@ -63,11 +63,14 @@ public function testLoadFile() public function testLoadFileWithInternalErrorsEnabled() { - libxml_use_internal_errors(true); + $internalErrors = libxml_use_internal_errors(true); $this->assertSame(array(), libxml_get_errors()); $this->assertInstanceOf('DOMDocument', XmlUtils::loadFile(__DIR__.'/../Fixtures/Util/invalid_schema.xml')); $this->assertSame(array(), libxml_get_errors()); + + libxml_clear_errors(); + libxml_use_internal_errors($internalErrors); } /** @@ -144,7 +147,7 @@ public function getDataForPhpize() public function testLoadEmptyXmlFile() { $file = __DIR__.'/../Fixtures/foo.xml'; - $this->setExpectedException('InvalidArgumentException', 'File '.$file.' does not contain valid XML, it is empty.'); + $this->setExpectedException('InvalidArgumentException', sprintf('File %s does not contain valid XML, it is empty.', $file)); XmlUtils::loadFile($file); } diff --git a/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php b/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php index ff986d2f33016..a3aa89597a03b 100644 --- a/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php +++ b/src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php @@ -30,7 +30,7 @@ public function testLoad() public function testLoadWithInternalErrorsEnabled() { - libxml_use_internal_errors(true); + $internalErrors = libxml_use_internal_errors(true); $this->assertSame(array(), libxml_get_errors()); @@ -41,6 +41,9 @@ public function testLoadWithInternalErrorsEnabled() $this->assertEquals('en', $catalogue->getLocale()); $this->assertEquals(array(new FileResource($resource)), $catalogue->getResources()); $this->assertSame(array(), libxml_get_errors()); + + libxml_clear_errors(); + libxml_use_internal_errors($internalErrors); } public function testLoadWithResname() From 1c01ebc48d6501c9da1cf43fd7965f09ab8445ff Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 28 Oct 2015 23:41:55 +0100 Subject: [PATCH 11/43] fix expected argument type docblock --- src/Symfony/Component/HttpFoundation/ParameterBag.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpFoundation/ParameterBag.php b/src/Symfony/Component/HttpFoundation/ParameterBag.php index 125a4d041cb42..7df267db02ddb 100644 --- a/src/Symfony/Component/HttpFoundation/ParameterBag.php +++ b/src/Symfony/Component/HttpFoundation/ParameterBag.php @@ -172,7 +172,7 @@ public function remove($key) * Returns the alphabetic characters of the parameter value. * * @param string $key The parameter key - * @param mixed $default The default value if the parameter key does not exist + * @param string $default The default value if the parameter key does not exist * @param bool $deep If true, a path like foo[bar] will find deeper items * * @return string The filtered value @@ -186,7 +186,7 @@ public function getAlpha($key, $default = '', $deep = false) * Returns the alphabetic characters and digits of the parameter value. * * @param string $key The parameter key - * @param mixed $default The default value if the parameter key does not exist + * @param string $default The default value if the parameter key does not exist * @param bool $deep If true, a path like foo[bar] will find deeper items * * @return string The filtered value @@ -200,7 +200,7 @@ public function getAlnum($key, $default = '', $deep = false) * Returns the digits of the parameter value. * * @param string $key The parameter key - * @param mixed $default The default value if the parameter key does not exist + * @param string $default The default value if the parameter key does not exist * @param bool $deep If true, a path like foo[bar] will find deeper items * * @return string The filtered value @@ -215,7 +215,7 @@ public function getDigits($key, $default = '', $deep = false) * Returns the parameter value converted to integer. * * @param string $key The parameter key - * @param mixed $default The default value if the parameter key does not exist + * @param int $default The default value if the parameter key does not exist * @param bool $deep If true, a path like foo[bar] will find deeper items * * @return int The filtered value From 65bef75befeb53952de1e5c8dc989a2859fdbaac Mon Sep 17 00:00:00 2001 From: Anne-Sophie Bachelard Date: Fri, 30 Oct 2015 12:48:51 -0700 Subject: [PATCH 12/43] added the new Composer exclude-from-classmap option --- composer.json | 5 ++++- src/Symfony/Bridge/Doctrine/composer.json | 5 ++++- src/Symfony/Bridge/Monolog/composer.json | 5 ++++- src/Symfony/Bridge/Propel1/composer.json | 5 ++++- src/Symfony/Bridge/ProxyManager/composer.json | 5 ++++- src/Symfony/Bridge/Swiftmailer/composer.json | 5 ++++- src/Symfony/Bridge/Twig/composer.json | 5 ++++- src/Symfony/Bundle/FrameworkBundle/composer.json | 5 ++++- src/Symfony/Bundle/SecurityBundle/composer.json | 5 ++++- src/Symfony/Bundle/TwigBundle/composer.json | 5 ++++- src/Symfony/Bundle/WebProfilerBundle/composer.json | 5 ++++- src/Symfony/Component/BrowserKit/composer.json | 5 ++++- src/Symfony/Component/ClassLoader/composer.json | 5 ++++- src/Symfony/Component/Config/composer.json | 5 ++++- src/Symfony/Component/Console/composer.json | 5 ++++- src/Symfony/Component/CssSelector/composer.json | 5 ++++- src/Symfony/Component/Debug/composer.json | 5 ++++- src/Symfony/Component/DependencyInjection/composer.json | 5 ++++- src/Symfony/Component/DomCrawler/composer.json | 5 ++++- src/Symfony/Component/EventDispatcher/composer.json | 5 ++++- src/Symfony/Component/Filesystem/composer.json | 5 ++++- src/Symfony/Component/Finder/composer.json | 5 ++++- src/Symfony/Component/Form/composer.json | 5 ++++- src/Symfony/Component/HttpFoundation/composer.json | 5 ++++- src/Symfony/Component/HttpKernel/composer.json | 5 ++++- src/Symfony/Component/Intl/composer.json | 5 ++++- src/Symfony/Component/Locale/composer.json | 5 ++++- src/Symfony/Component/OptionsResolver/composer.json | 5 ++++- src/Symfony/Component/Process/composer.json | 5 ++++- src/Symfony/Component/PropertyAccess/composer.json | 5 ++++- src/Symfony/Component/Routing/composer.json | 5 ++++- src/Symfony/Component/Security/composer.json | 5 ++++- src/Symfony/Component/Serializer/composer.json | 5 ++++- src/Symfony/Component/Stopwatch/composer.json | 5 ++++- src/Symfony/Component/Templating/composer.json | 5 ++++- src/Symfony/Component/Translation/composer.json | 5 ++++- src/Symfony/Component/Validator/composer.json | 5 ++++- src/Symfony/Component/Yaml/composer.json | 5 ++++- 38 files changed, 152 insertions(+), 38 deletions(-) diff --git a/composer.json b/composer.json index 521ccade6dad1..54cb58c234e2f 100644 --- a/composer.json +++ b/composer.json @@ -75,7 +75,10 @@ "src/Symfony/Component/HttpFoundation/Resources/stubs", "src/Symfony/Component/Intl/Resources/stubs" ], - "files": [ "src/Symfony/Component/Intl/Resources/stubs/functions.php" ] + "files": [ "src/Symfony/Component/Intl/Resources/stubs/functions.php" ], + "exclude-from-classmap": [ + "**/Tests/" + ] }, "minimum-stability": "dev", "extra": { diff --git a/src/Symfony/Bridge/Doctrine/composer.json b/src/Symfony/Bridge/Doctrine/composer.json index 7012ab771cda0..03e1376503c06 100644 --- a/src/Symfony/Bridge/Doctrine/composer.json +++ b/src/Symfony/Bridge/Doctrine/composer.json @@ -40,7 +40,10 @@ "doctrine/orm": "" }, "autoload": { - "psr-0": { "Symfony\\Bridge\\Doctrine\\": "" } + "psr-0": { "Symfony\\Bridge\\Doctrine\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bridge/Doctrine", "minimum-stability": "dev", diff --git a/src/Symfony/Bridge/Monolog/composer.json b/src/Symfony/Bridge/Monolog/composer.json index bd4cfa54324f9..c38fe461fdcf1 100644 --- a/src/Symfony/Bridge/Monolog/composer.json +++ b/src/Symfony/Bridge/Monolog/composer.json @@ -21,7 +21,10 @@ "monolog/monolog": "~1.3" }, "autoload": { - "psr-0": { "Symfony\\Bridge\\Monolog\\": "" } + "psr-0": { "Symfony\\Bridge\\Monolog\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bridge/Monolog", "minimum-stability": "dev", diff --git a/src/Symfony/Bridge/Propel1/composer.json b/src/Symfony/Bridge/Propel1/composer.json index ab92f4d22e020..296c4e84a5351 100644 --- a/src/Symfony/Bridge/Propel1/composer.json +++ b/src/Symfony/Bridge/Propel1/composer.json @@ -27,7 +27,10 @@ "symfony/stopwatch": "~2.2" }, "autoload": { - "psr-0": { "Symfony\\Bridge\\Propel1\\": "" } + "psr-0": { "Symfony\\Bridge\\Propel1\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bridge/Propel1", "minimum-stability": "dev", diff --git a/src/Symfony/Bridge/ProxyManager/composer.json b/src/Symfony/Bridge/ProxyManager/composer.json index 8a2a81bf17bd6..82b119b164898 100644 --- a/src/Symfony/Bridge/ProxyManager/composer.json +++ b/src/Symfony/Bridge/ProxyManager/composer.json @@ -26,7 +26,10 @@ "autoload": { "psr-0": { "Symfony\\Bridge\\ProxyManager\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bridge/ProxyManager", "minimum-stability": "dev", diff --git a/src/Symfony/Bridge/Swiftmailer/composer.json b/src/Symfony/Bridge/Swiftmailer/composer.json index 09cdce00a6fd1..ad203340e3f40 100644 --- a/src/Symfony/Bridge/Swiftmailer/composer.json +++ b/src/Symfony/Bridge/Swiftmailer/composer.json @@ -23,7 +23,10 @@ "symfony/http-kernel": "" }, "autoload": { - "psr-0": { "Symfony\\Bridge\\Swiftmailer\\": "" } + "psr-0": { "Symfony\\Bridge\\Swiftmailer\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bridge/Swiftmailer", "minimum-stability": "dev", diff --git a/src/Symfony/Bridge/Twig/composer.json b/src/Symfony/Bridge/Twig/composer.json index 8ba426b6b16bc..f450f8257e32f 100644 --- a/src/Symfony/Bridge/Twig/composer.json +++ b/src/Symfony/Bridge/Twig/composer.json @@ -42,7 +42,10 @@ "symfony/security": "" }, "autoload": { - "psr-0": { "Symfony\\Bridge\\Twig\\": "" } + "psr-0": { "Symfony\\Bridge\\Twig\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bridge/Twig", "minimum-stability": "dev", diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json index 03d183040bb66..9983848d7bf0b 100644 --- a/src/Symfony/Bundle/FrameworkBundle/composer.json +++ b/src/Symfony/Bundle/FrameworkBundle/composer.json @@ -51,7 +51,10 @@ "symfony/serializer": "For using the serializer service" }, "autoload": { - "psr-0": { "Symfony\\Bundle\\FrameworkBundle\\": "" } + "psr-0": { "Symfony\\Bundle\\FrameworkBundle\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bundle/FrameworkBundle", "minimum-stability": "dev", diff --git a/src/Symfony/Bundle/SecurityBundle/composer.json b/src/Symfony/Bundle/SecurityBundle/composer.json index f3a001b649896..2a98e911c61c5 100644 --- a/src/Symfony/Bundle/SecurityBundle/composer.json +++ b/src/Symfony/Bundle/SecurityBundle/composer.json @@ -37,7 +37,10 @@ "twig/twig": "~1.20|~2.0" }, "autoload": { - "psr-0": { "Symfony\\Bundle\\SecurityBundle\\": "" } + "psr-0": { "Symfony\\Bundle\\SecurityBundle\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bundle/SecurityBundle", "minimum-stability": "dev", diff --git a/src/Symfony/Bundle/TwigBundle/composer.json b/src/Symfony/Bundle/TwigBundle/composer.json index ea7e9e72e363a..168701fa6547b 100644 --- a/src/Symfony/Bundle/TwigBundle/composer.json +++ b/src/Symfony/Bundle/TwigBundle/composer.json @@ -28,7 +28,10 @@ "symfony/framework-bundle": "~2.1" }, "autoload": { - "psr-0": { "Symfony\\Bundle\\TwigBundle\\": "" } + "psr-0": { "Symfony\\Bundle\\TwigBundle\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bundle/TwigBundle", "minimum-stability": "dev", diff --git a/src/Symfony/Bundle/WebProfilerBundle/composer.json b/src/Symfony/Bundle/WebProfilerBundle/composer.json index 1bef0d7698247..16235d8b8699b 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/composer.json +++ b/src/Symfony/Bundle/WebProfilerBundle/composer.json @@ -28,7 +28,10 @@ "symfony/stopwatch": "~2.2" }, "autoload": { - "psr-0": { "Symfony\\Bundle\\WebProfilerBundle\\": "" } + "psr-0": { "Symfony\\Bundle\\WebProfilerBundle\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Bundle/WebProfilerBundle", "minimum-stability": "dev", diff --git a/src/Symfony/Component/BrowserKit/composer.json b/src/Symfony/Component/BrowserKit/composer.json index 429aa0cb07161..ab104ecc5c4c9 100644 --- a/src/Symfony/Component/BrowserKit/composer.json +++ b/src/Symfony/Component/BrowserKit/composer.json @@ -27,7 +27,10 @@ "symfony/process": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\BrowserKit\\": "" } + "psr-0": { "Symfony\\Component\\BrowserKit\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/BrowserKit", "minimum-stability": "dev", diff --git a/src/Symfony/Component/ClassLoader/composer.json b/src/Symfony/Component/ClassLoader/composer.json index 447cf1f92654f..1796ab0b51f5b 100644 --- a/src/Symfony/Component/ClassLoader/composer.json +++ b/src/Symfony/Component/ClassLoader/composer.json @@ -23,7 +23,10 @@ "symfony/finder": "~2.0,>=2.0.5" }, "autoload": { - "psr-0": { "Symfony\\Component\\ClassLoader\\": "" } + "psr-0": { "Symfony\\Component\\ClassLoader\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/ClassLoader", "extra": { diff --git a/src/Symfony/Component/Config/composer.json b/src/Symfony/Component/Config/composer.json index b093afb6d6840..bdc180de76014 100644 --- a/src/Symfony/Component/Config/composer.json +++ b/src/Symfony/Component/Config/composer.json @@ -20,7 +20,10 @@ "symfony/filesystem": "~2.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Config\\": "" } + "psr-0": { "Symfony\\Component\\Config\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Config", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Console/composer.json b/src/Symfony/Component/Console/composer.json index f3ce3e6b00476..309ca91a24c64 100644 --- a/src/Symfony/Component/Console/composer.json +++ b/src/Symfony/Component/Console/composer.json @@ -25,7 +25,10 @@ "symfony/event-dispatcher": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\Console\\": "" } + "psr-0": { "Symfony\\Component\\Console\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Console", "minimum-stability": "dev", diff --git a/src/Symfony/Component/CssSelector/composer.json b/src/Symfony/Component/CssSelector/composer.json index 076852c53a2ab..3f7913d07b779 100644 --- a/src/Symfony/Component/CssSelector/composer.json +++ b/src/Symfony/Component/CssSelector/composer.json @@ -23,7 +23,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\CssSelector\\": "" } + "psr-0": { "Symfony\\Component\\CssSelector\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/CssSelector", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Debug/composer.json b/src/Symfony/Component/Debug/composer.json index a3243d77222f5..7b98c4ff733f8 100644 --- a/src/Symfony/Component/Debug/composer.json +++ b/src/Symfony/Component/Debug/composer.json @@ -31,7 +31,10 @@ "symfony/class-loader": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\Debug\\": "" } + "psr-0": { "Symfony\\Component\\Debug\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Debug", "minimum-stability": "dev", diff --git a/src/Symfony/Component/DependencyInjection/composer.json b/src/Symfony/Component/DependencyInjection/composer.json index 9c813a59483eb..e7691eb8822ba 100644 --- a/src/Symfony/Component/DependencyInjection/composer.json +++ b/src/Symfony/Component/DependencyInjection/composer.json @@ -28,7 +28,10 @@ "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them" }, "autoload": { - "psr-0": { "Symfony\\Component\\DependencyInjection\\": "" } + "psr-0": { "Symfony\\Component\\DependencyInjection\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/DependencyInjection", "minimum-stability": "dev", diff --git a/src/Symfony/Component/DomCrawler/composer.json b/src/Symfony/Component/DomCrawler/composer.json index dda76b8fc704c..6ce2171e66980 100644 --- a/src/Symfony/Component/DomCrawler/composer.json +++ b/src/Symfony/Component/DomCrawler/composer.json @@ -25,7 +25,10 @@ "symfony/css-selector": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\DomCrawler\\": "" } + "psr-0": { "Symfony\\Component\\DomCrawler\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/DomCrawler", "minimum-stability": "dev", diff --git a/src/Symfony/Component/EventDispatcher/composer.json b/src/Symfony/Component/EventDispatcher/composer.json index 18703ac346a07..c48b1417f62e2 100644 --- a/src/Symfony/Component/EventDispatcher/composer.json +++ b/src/Symfony/Component/EventDispatcher/composer.json @@ -26,7 +26,10 @@ "symfony/http-kernel": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\EventDispatcher\\": "" } + "psr-0": { "Symfony\\Component\\EventDispatcher\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/EventDispatcher", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Filesystem/composer.json b/src/Symfony/Component/Filesystem/composer.json index 70a5839126e14..8dce266b59056 100644 --- a/src/Symfony/Component/Filesystem/composer.json +++ b/src/Symfony/Component/Filesystem/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Filesystem\\": "" } + "psr-0": { "Symfony\\Component\\Filesystem\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Filesystem", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Finder/composer.json b/src/Symfony/Component/Finder/composer.json index 6b5e01d9b1a5f..5572f2937be04 100644 --- a/src/Symfony/Component/Finder/composer.json +++ b/src/Symfony/Component/Finder/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Finder\\": "" } + "psr-0": { "Symfony\\Component\\Finder\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Finder", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Form/composer.json b/src/Symfony/Component/Form/composer.json index b42fdf6916d07..00f185208cc5b 100644 --- a/src/Symfony/Component/Form/composer.json +++ b/src/Symfony/Component/Form/composer.json @@ -33,7 +33,10 @@ "symfony/http-foundation": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\Form\\": "" } + "psr-0": { "Symfony\\Component\\Form\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Form", "minimum-stability": "dev", diff --git a/src/Symfony/Component/HttpFoundation/composer.json b/src/Symfony/Component/HttpFoundation/composer.json index bae2bc8e90ce3..8fa1a00ec9f27 100644 --- a/src/Symfony/Component/HttpFoundation/composer.json +++ b/src/Symfony/Component/HttpFoundation/composer.json @@ -20,7 +20,10 @@ }, "autoload": { "psr-0": { "Symfony\\Component\\HttpFoundation\\": "" }, - "classmap": [ "Symfony/Component/HttpFoundation/Resources/stubs" ] + "classmap": [ "Symfony/Component/HttpFoundation/Resources/stubs" ], + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/HttpFoundation", "minimum-stability": "dev", diff --git a/src/Symfony/Component/HttpKernel/composer.json b/src/Symfony/Component/HttpKernel/composer.json index e66ce54a9377d..fe2f8921bd142 100644 --- a/src/Symfony/Component/HttpKernel/composer.json +++ b/src/Symfony/Component/HttpKernel/composer.json @@ -45,7 +45,10 @@ "symfony/finder": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\HttpKernel\\": "" } + "psr-0": { "Symfony\\Component\\HttpKernel\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/HttpKernel", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Intl/composer.json b/src/Symfony/Component/Intl/composer.json index 4247b591c9b02..e641cadd70fcb 100644 --- a/src/Symfony/Component/Intl/composer.json +++ b/src/Symfony/Component/Intl/composer.json @@ -35,7 +35,10 @@ "autoload": { "psr-0": { "Symfony\\Component\\Intl\\": "" }, "classmap": [ "Symfony/Component/Intl/Resources/stubs" ], - "files": [ "Symfony/Component/Intl/Resources/stubs/functions.php" ] + "files": [ "Symfony/Component/Intl/Resources/stubs/functions.php" ], + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Intl", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Locale/composer.json b/src/Symfony/Component/Locale/composer.json index 8b83867a1752b..e71439dc21f8f 100644 --- a/src/Symfony/Component/Locale/composer.json +++ b/src/Symfony/Component/Locale/composer.json @@ -20,7 +20,10 @@ "symfony/intl": "~2.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Locale\\": "" } + "psr-0": { "Symfony\\Component\\Locale\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Locale", "minimum-stability": "dev", diff --git a/src/Symfony/Component/OptionsResolver/composer.json b/src/Symfony/Component/OptionsResolver/composer.json index 80fbbc4b010f2..ada190d46020d 100644 --- a/src/Symfony/Component/OptionsResolver/composer.json +++ b/src/Symfony/Component/OptionsResolver/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\OptionsResolver\\": "" } + "psr-0": { "Symfony\\Component\\OptionsResolver\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/OptionsResolver", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Process/composer.json b/src/Symfony/Component/Process/composer.json index 502166df3bcd3..ab7e8c4ec033a 100644 --- a/src/Symfony/Component/Process/composer.json +++ b/src/Symfony/Component/Process/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Process\\": "" } + "psr-0": { "Symfony\\Component\\Process\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Process", "minimum-stability": "dev", diff --git a/src/Symfony/Component/PropertyAccess/composer.json b/src/Symfony/Component/PropertyAccess/composer.json index 060ff8ef2c133..e9c5c41183b6c 100644 --- a/src/Symfony/Component/PropertyAccess/composer.json +++ b/src/Symfony/Component/PropertyAccess/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\PropertyAccess\\": "" } + "psr-0": { "Symfony\\Component\\PropertyAccess\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/PropertyAccess", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Routing/composer.json b/src/Symfony/Component/Routing/composer.json index 824561077e187..6af426012881d 100644 --- a/src/Symfony/Component/Routing/composer.json +++ b/src/Symfony/Component/Routing/composer.json @@ -31,7 +31,10 @@ "doctrine/common": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\Routing\\": "" } + "psr-0": { "Symfony\\Component\\Routing\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Routing", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Security/composer.json b/src/Symfony/Component/Security/composer.json index e62f028b732f8..a2314d017d734 100644 --- a/src/Symfony/Component/Security/composer.json +++ b/src/Symfony/Component/Security/composer.json @@ -42,7 +42,10 @@ "paragonie/random_compat": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\Security\\": "" } + "psr-0": { "Symfony\\Component\\Security\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Security", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Serializer/composer.json b/src/Symfony/Component/Serializer/composer.json index dbc270748106a..305ab003789ab 100644 --- a/src/Symfony/Component/Serializer/composer.json +++ b/src/Symfony/Component/Serializer/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Serializer\\": "" } + "psr-0": { "Symfony\\Component\\Serializer\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Serializer", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Stopwatch/composer.json b/src/Symfony/Component/Stopwatch/composer.json index 3fb113b796116..c2b5d08739cc1 100644 --- a/src/Symfony/Component/Stopwatch/composer.json +++ b/src/Symfony/Component/Stopwatch/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Stopwatch\\": "" } + "psr-0": { "Symfony\\Component\\Stopwatch\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Stopwatch", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Templating/composer.json b/src/Symfony/Component/Templating/composer.json index f39b8f3600433..d9ee9981bc634 100644 --- a/src/Symfony/Component/Templating/composer.json +++ b/src/Symfony/Component/Templating/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Templating\\": "" } + "psr-0": { "Symfony\\Component\\Templating\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Templating", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Translation/composer.json b/src/Symfony/Component/Translation/composer.json index 19b2d8ebf6d0e..9979bd1b72485 100644 --- a/src/Symfony/Component/Translation/composer.json +++ b/src/Symfony/Component/Translation/composer.json @@ -28,7 +28,10 @@ "symfony/yaml": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\Translation\\": "" } + "psr-0": { "Symfony\\Component\\Translation\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Translation", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Validator/composer.json b/src/Symfony/Component/Validator/composer.json index 4510ff3253c59..ea79565660ae1 100644 --- a/src/Symfony/Component/Validator/composer.json +++ b/src/Symfony/Component/Validator/composer.json @@ -34,7 +34,10 @@ "symfony/config": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\Validator\\": "" } + "psr-0": { "Symfony\\Component\\Validator\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Validator", "minimum-stability": "dev", diff --git a/src/Symfony/Component/Yaml/composer.json b/src/Symfony/Component/Yaml/composer.json index 791dbe2b2640a..96aa97dab0acc 100644 --- a/src/Symfony/Component/Yaml/composer.json +++ b/src/Symfony/Component/Yaml/composer.json @@ -19,7 +19,10 @@ "php": ">=5.3.3" }, "autoload": { - "psr-0": { "Symfony\\Component\\Yaml\\": "" } + "psr-0": { "Symfony\\Component\\Yaml\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "target-dir": "Symfony/Component/Yaml", "minimum-stability": "dev", From 284dc75796b693562e2c091fd770c4a04c179a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 20 Oct 2015 10:40:31 +0200 Subject: [PATCH 13/43] [PropertyAccess] Major performance improvement --- .../PropertyAccess/PropertyAccessor.php | 324 ++++++++++++------ 1 file changed, 219 insertions(+), 105 deletions(-) diff --git a/src/Symfony/Component/PropertyAccess/PropertyAccessor.php b/src/Symfony/Component/PropertyAccess/PropertyAccessor.php index 76ef8c1d5cfb6..c9466b8cbdf56 100644 --- a/src/Symfony/Component/PropertyAccess/PropertyAccessor.php +++ b/src/Symfony/Component/PropertyAccess/PropertyAccessor.php @@ -23,8 +23,21 @@ class PropertyAccessor implements PropertyAccessorInterface { const VALUE = 0; const IS_REF = 1; + const ACCESS_HAS_PROPERTY = 0; + const ACCESS_TYPE = 1; + const ACCESS_NAME = 2; + const ACCESS_REF = 3; + const ACCESS_ADDER = 4; + const ACCESS_REMOVER = 5; + const ACCESS_TYPE_METHOD = 0; + const ACCESS_TYPE_PROPERTY = 1; + const ACCESS_TYPE_MAGIC = 2; + const ACCESS_TYPE_ADDER_AND_REMOVER = 3; + const ACCESS_TYPE_NOT_FOUND = 4; private $magicCall; + private $readPropertyCache = array(); + private $writePropertyCache = array(); /** * Should not be used by application code. Use @@ -202,48 +215,31 @@ private function &readProperty(&$object, $property) throw new NoSuchPropertyException(sprintf('Cannot read property "%s" from an array. Maybe you should write the property path as "[%s]" instead?', $property, $property)); } - $camelProp = $this->camelize($property); - $reflClass = new \ReflectionClass($object); - $getter = 'get'.$camelProp; - $isser = 'is'.$camelProp; - $hasser = 'has'.$camelProp; - $classHasProperty = $reflClass->hasProperty($property); - - if ($reflClass->hasMethod($getter) && $reflClass->getMethod($getter)->isPublic()) { - $result[self::VALUE] = $object->$getter(); - } elseif ($reflClass->hasMethod($isser) && $reflClass->getMethod($isser)->isPublic()) { - $result[self::VALUE] = $object->$isser(); - } elseif ($reflClass->hasMethod($hasser) && $reflClass->getMethod($hasser)->isPublic()) { - $result[self::VALUE] = $object->$hasser(); - } elseif ($reflClass->hasMethod('__get') && $reflClass->getMethod('__get')->isPublic()) { - $result[self::VALUE] = $object->$property; - } elseif ($classHasProperty && $reflClass->getProperty($property)->isPublic()) { - $result[self::VALUE] = &$object->$property; - $result[self::IS_REF] = true; - } elseif (!$classHasProperty && property_exists($object, $property)) { + $access = $this->getReadAccessInfo($object, $property); + + if (self::ACCESS_TYPE_METHOD === $access[self::ACCESS_TYPE]) { + $result[self::VALUE] = $object->{$access[self::ACCESS_NAME]}(); + } elseif (self::ACCESS_TYPE_PROPERTY === $access[self::ACCESS_TYPE]) { + if ($access[self::ACCESS_REF]) { + $result[self::VALUE] = &$object->{$access[self::ACCESS_NAME]}; + $result[self::IS_REF] = true; + } else { + $result[self::VALUE] = $object->{$access[self::ACCESS_NAME]}; + } + } elseif (!$access[self::ACCESS_HAS_PROPERTY] && property_exists($object, $property)) { // Needed to support \stdClass instances. We need to explicitly // exclude $classHasProperty, otherwise if in the previous clause // a *protected* property was found on the class, property_exists() // returns true, consequently the following line will result in a // fatal error. + $result[self::VALUE] = &$object->$property; $result[self::IS_REF] = true; - } elseif ($this->magicCall && $reflClass->hasMethod('__call') && $reflClass->getMethod('__call')->isPublic()) { + } elseif (self::ACCESS_TYPE_MAGIC === $access[self::ACCESS_TYPE]) { // we call the getter and hope the __call do the job - $result[self::VALUE] = $object->$getter(); + $result[self::VALUE] = $object->{$access[self::ACCESS_NAME]}(); } else { - $methods = array($getter, $isser, $hasser, '__get'); - if ($this->magicCall) { - $methods[] = '__call'; - } - - throw new NoSuchPropertyException(sprintf( - 'Neither the property "%s" nor one of the methods "%s()" '. - 'exist and have public access in class "%s".', - $property, - implode('()", "', $methods), - $reflClass->name - )); + throw new NoSuchPropertyException($access[self::ACCESS_NAME]); } // Objects are always passed around by reference @@ -254,6 +250,77 @@ private function &readProperty(&$object, $property) return $result; } + /** + * Guesses how to read the property value. + * + * @param string $object + * @param string $property + * + * @return array + */ + private function getReadAccessInfo($object, $property) + { + $key = get_class($object).'::'.$property; + + if (isset($this->readPropertyCache[$key])) { + $access = $this->readPropertyCache[$key]; + } else { + $access = array(); + + $reflClass = new \ReflectionClass($object); + $access[self::ACCESS_HAS_PROPERTY] = $reflClass->hasProperty($property); + $camelProp = $this->camelize($property); + $getter = 'get'.$camelProp; + $isser = 'is'.$camelProp; + $hasser = 'has'.$camelProp; + $classHasProperty = $reflClass->hasProperty($property); + + if ($reflClass->hasMethod($getter) && $reflClass->getMethod($getter)->isPublic()) { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_METHOD; + $access[self::ACCESS_NAME] = $getter; + } elseif ($reflClass->hasMethod($isser) && $reflClass->getMethod($isser)->isPublic()) { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_METHOD; + $access[self::ACCESS_NAME] = $isser; + } elseif ($reflClass->hasMethod($hasser) && $reflClass->getMethod($hasser)->isPublic()) { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_METHOD; + $access[self::ACCESS_NAME] = $hasser; + } elseif ($reflClass->hasMethod('__get') && $reflClass->getMethod('__get')->isPublic()) { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_PROPERTY; + $access[self::ACCESS_NAME] = $property; + $access[self::ACCESS_REF] = false; + } elseif ($classHasProperty && $reflClass->getProperty($property)->isPublic()) { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_PROPERTY; + $access[self::ACCESS_NAME] = $property; + $access[self::ACCESS_REF] = true; + + $result[self::VALUE] = &$object->$property; + $result[self::IS_REF] = true; + } elseif ($this->magicCall && $reflClass->hasMethod('__call') && $reflClass->getMethod('__call')->isPublic()) { + // we call the getter and hope the __call do the job + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_MAGIC; + $access[self::ACCESS_NAME] = $getter; + } else { + $methods = array($getter, $isser, $hasser, '__get'); + if ($this->magicCall) { + $methods[] = '__call'; + } + + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_NOT_FOUND; + $access[self::ACCESS_NAME] = sprintf( + 'Neither the property "%s" nor one of the methods "%s()" '. + 'exist and have public access in class "%s".', + $property, + implode('()", "', $methods), + $reflClass->name + ); + } + + $this->readPropertyCache[$key] = $access; + } + + return $access; + } + /** * Sets the value of the property at the given index in the path. * @@ -285,96 +352,143 @@ private function writeIndex(&$array, $index, $value) */ private function writeProperty(&$object, $property, $singular, $value) { - $guessedAdders = ''; - if (!is_object($object)) { throw new NoSuchPropertyException(sprintf('Cannot write property "%s" to an array. Maybe you should write the property path as "[%s]" instead?', $property, $property)); } - $reflClass = new \ReflectionClass($object); - $plural = $this->camelize($property); - - // Any of the two methods is required, but not yet known - $singulars = null !== $singular ? array($singular) : (array) StringUtil::singularify($plural); - - if (is_array($value) || $value instanceof \Traversable) { - $methods = $this->findAdderAndRemover($reflClass, $singulars); - - if (null !== $methods) { - // At this point the add and remove methods have been found - // Use iterator_to_array() instead of clone in order to prevent side effects - // see https://github.com/symfony/symfony/issues/4670 - $itemsToAdd = is_object($value) ? iterator_to_array($value) : $value; - $itemToRemove = array(); - $propertyValue = &$this->readProperty($object, $property); - $previousValue = $propertyValue[self::VALUE]; - // remove reference to avoid modifications - unset($propertyValue); - - if (is_array($previousValue) || $previousValue instanceof \Traversable) { - foreach ($previousValue as $previousItem) { - foreach ($value as $key => $item) { - if ($item === $previousItem) { - // Item found, don't add - unset($itemsToAdd[$key]); - - // Next $previousItem - continue 2; - } + $access = $this->getWriteAccessInfo($object, $property, $singular, $value); + + if (self::ACCESS_TYPE_METHOD === $access[self::ACCESS_TYPE]) { + $object->{$access[self::ACCESS_NAME]}($value); + } elseif (self::ACCESS_TYPE_PROPERTY === $access[self::ACCESS_TYPE]) { + $object->{$access[self::ACCESS_NAME]} = $value; + } elseif (self::ACCESS_TYPE_ADDER_AND_REMOVER === $access[self::ACCESS_TYPE]) { + // At this point the add and remove methods have been found + // Use iterator_to_array() instead of clone in order to prevent side effects + // see https://github.com/symfony/symfony/issues/4670 + $itemsToAdd = is_object($value) ? iterator_to_array($value) : $value; + $itemToRemove = array(); + $propertyValue = &$this->readProperty($object, $property); + $previousValue = $propertyValue[self::VALUE]; + // remove reference to avoid modifications + unset($propertyValue); + + if (is_array($previousValue) || $previousValue instanceof \Traversable) { + foreach ($previousValue as $previousItem) { + foreach ($value as $key => $item) { + if ($item === $previousItem) { + // Item found, don't add + unset($itemsToAdd[$key]); + + // Next $previousItem + continue 2; } - - // Item not found, add to remove list - $itemToRemove[] = $previousItem; } - } - - foreach ($itemToRemove as $item) { - call_user_func(array($object, $methods[1]), $item); - } - foreach ($itemsToAdd as $item) { - call_user_func(array($object, $methods[0]), $item); + // Item not found, add to remove list + $itemToRemove[] = $previousItem; } - - return; - } else { - // It is sufficient to include only the adders in the error - // message. If the user implements the adder but not the remover, - // an exception will be thrown in findAdderAndRemover() that - // the remover has to be implemented as well. - $guessedAdders = '"add'.implode('()", "add', $singulars).'()", '; } - } - $setter = 'set'.$this->camelize($property); - $classHasProperty = $reflClass->hasProperty($property); + foreach ($itemToRemove as $item) { + call_user_func(array($object, $access[self::ACCESS_REMOVER]), $item); + } - if ($reflClass->hasMethod($setter) && $reflClass->getMethod($setter)->isPublic()) { - $object->$setter($value); - } elseif ($reflClass->hasMethod('__set') && $reflClass->getMethod('__set')->isPublic()) { - $object->$property = $value; - } elseif ($classHasProperty && $reflClass->getProperty($property)->isPublic()) { - $object->$property = $value; - } elseif (!$classHasProperty && property_exists($object, $property)) { + foreach ($itemsToAdd as $item) { + call_user_func(array($object, $access[self::ACCESS_ADDER]), $item); + } + } elseif (!$access[self::ACCESS_HAS_PROPERTY] && property_exists($object, $property)) { // Needed to support \stdClass instances. We need to explicitly // exclude $classHasProperty, otherwise if in the previous clause // a *protected* property was found on the class, property_exists() // returns true, consequently the following line will result in a // fatal error. - $object->$property = $value; - } elseif ($this->magicCall && $reflClass->hasMethod('__call') && $reflClass->getMethod('__call')->isPublic()) { - // we call the getter and hope the __call do the job - $object->$setter($value); + + $object->{$access[self::ACCESS_NAME]} = $value; + } elseif (self::ACCESS_TYPE_MAGIC === $access[self::ACCESS_TYPE]) { + $object->{$access[self::ACCESS_NAME]}($value); + } else { + throw new NoSuchPropertyException($access[self::ACCESS_NAME]); + } + } + + /** + * Guesses how to write the property value. + * + * @param string $object + * @param string $property + * @param string|null $singular + * @param mixed $value + * + * @return array + */ + private function getWriteAccessInfo($object, $property, $singular, $value) + { + $key = get_class($object).'::'.$property; + $guessedAdders = ''; + + if (isset($this->writePropertyCache[$key])) { + $access = $this->writePropertyCache[$key]; } else { - throw new NoSuchPropertyException(sprintf( - 'Neither the property "%s" nor one of the methods %s"%s()", '. - '"__set()" or "__call()" exist and have public access in class "%s".', - $property, - $guessedAdders, - $setter, - $reflClass->name - )); + $access = array(); + + $reflClass = new \ReflectionClass($object); + $access[self::ACCESS_HAS_PROPERTY] = $reflClass->hasProperty($property); + $plural = $this->camelize($property); + + // Any of the two methods is required, but not yet known + $singulars = null !== $singular ? array($singular) : (array) StringUtil::singularify($plural); + + if (is_array($value) || $value instanceof \Traversable) { + $methods = $this->findAdderAndRemover($reflClass, $singulars); + + if (null === $methods) { + // It is sufficient to include only the adders in the error + // message. If the user implements the adder but not the remover, + // an exception will be thrown in findAdderAndRemover() that + // the remover has to be implemented as well. + $guessedAdders = '"add'.implode('()", "add', $singulars).'()", '; + } else { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_ADDER_AND_REMOVER; + $access[self::ACCESS_ADDER] = $methods[0]; + $access[self::ACCESS_REMOVER] = $methods[1]; + } + } + + if (!isset($access[self::ACCESS_TYPE])) { + $setter = 'set'.$this->camelize($property); + $classHasProperty = $reflClass->hasProperty($property); + + if ($reflClass->hasMethod($setter) && $reflClass->getMethod($setter)->isPublic()) { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_METHOD; + $access[self::ACCESS_NAME] = $setter; + } elseif ($reflClass->hasMethod('__set') && $reflClass->getMethod('__set')->isPublic()) { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_PROPERTY; + $access[self::ACCESS_NAME] = $property; + } elseif ($classHasProperty && $reflClass->getProperty($property)->isPublic()) { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_PROPERTY; + $access[self::ACCESS_NAME] = $property; + } elseif ($this->magicCall && $reflClass->hasMethod('__call') && $reflClass->getMethod('__call')->isPublic()) { + // we call the getter and hope the __call do the job + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_MAGIC; + $access[self::ACCESS_NAME] = $setter; + } else { + $access[self::ACCESS_TYPE] = self::ACCESS_TYPE_NOT_FOUND; + $access[self::ACCESS_NAME] = sprintf( + 'Neither the property "%s" nor one of the methods %s"%s()", '. + '"__set()" or "__call()" exist and have public access in class "%s".', + $property, + $guessedAdders, + $setter, + $reflClass->name + ); + } + } + + $this->writePropertyCache[$key] = $access; } + + return $access; } /** From 1e0af36c7dc0ccbfe164f264cc71273b929cf5fb Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sun, 1 Nov 2015 14:17:24 -0800 Subject: [PATCH 14/43] removed all @covers annotations --- .../Tests/LazyProxy/ContainerBuilderTest.php | 3 - .../Instantiator/RuntimeInstantiatorTest.php | 2 - .../LazyProxy/PhpDumper/ProxyDumperTest.php | 2 - .../Component/BrowserKit/Tests/ClientTest.php | 12 --- .../Tests/Loader/DelegatingLoaderTest.php | 13 --- .../Config/Tests/Loader/FileLoaderTest.php | 3 - .../Tests/Loader/LoaderResolverTest.php | 10 -- .../Console/Tests/Helper/HelperSetTest.php | 18 ---- .../Tests/ContainerBuilderTest.php | 102 ------------------ .../Tests/ContainerTest.php | 37 ------- .../Tests/DefinitionTest.php | 65 ----------- .../RealServiceInstantiatorTest.php | 2 - .../LazyProxy/PhpDumper/NullDumperTest.php | 2 - .../Tests/Loader/ClosureLoaderTest.php | 6 -- .../Tests/Loader/IniFileLoaderTest.php | 13 --- .../Tests/Loader/PhpFileLoaderTest.php | 6 -- .../Tests/Loader/XmlFileLoaderTest.php | 3 - .../Tests/Loader/YamlFileLoaderTest.php | 3 - .../ParameterBag/FrozenParameterBagTest.php | 6 -- .../Tests/ParameterBag/ParameterBagTest.php | 29 ----- .../Tests/ParameterTest.php | 3 - .../Tests/ReferenceTest.php | 3 - .../DomCrawler/Tests/CrawlerTest.php | 47 -------- .../HttpFoundation/Tests/CookieTest.php | 4 - .../HttpFoundation/Tests/HeaderBagTest.php | 21 ---- .../HttpFoundation/Tests/ParameterBagTest.php | 39 ------- .../HttpFoundation/Tests/RequestTest.php | 36 ------- .../Tests/ResponseHeaderBagTest.php | 1 - .../Session/Attribute/AttributeBagTest.php | 6 -- .../Tests/Session/Flash/FlashBagTest.php | 3 - .../Tests/Session/SessionTest.php | 6 -- .../AbstractIntlDateFormatterTest.php | 3 - .../OptionsResolver/Tests/OptionsTest.php | 3 - .../Token/AbstractTokenTest.php | 18 ---- .../Security/Tests/Core/User/UserTest.php | 31 ------ 35 files changed, 561 deletions(-) diff --git a/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/ContainerBuilderTest.php b/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/ContainerBuilderTest.php index b6c3b4fd36b42..ae13d543b0e1e 100644 --- a/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/ContainerBuilderTest.php +++ b/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/ContainerBuilderTest.php @@ -24,9 +24,6 @@ */ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateProxyServiceWithRuntimeInstantiator() { $builder = new ContainerBuilder(); diff --git a/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/Instantiator/RuntimeInstantiatorTest.php b/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/Instantiator/RuntimeInstantiatorTest.php index a6605c2a533e8..8b2402b045f28 100644 --- a/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/Instantiator/RuntimeInstantiatorTest.php +++ b/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/Instantiator/RuntimeInstantiatorTest.php @@ -18,8 +18,6 @@ * Tests for {@see \Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator}. * * @author Marco Pivetta - * - * @covers \Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator */ class RuntimeInstantiatorTest extends \PHPUnit_Framework_TestCase { diff --git a/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php b/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php index 8ef46b4d962fe..fd20192d86e4f 100644 --- a/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php +++ b/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php @@ -18,8 +18,6 @@ * Tests for {@see \Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper}. * * @author Marco Pivetta - * - * @covers \Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper */ class ProxyDumperTest extends \PHPUnit_Framework_TestCase { diff --git a/src/Symfony/Component/BrowserKit/Tests/ClientTest.php b/src/Symfony/Component/BrowserKit/Tests/ClientTest.php index cc7db71fd2f94..36a0fbc6ee26b 100644 --- a/src/Symfony/Component/BrowserKit/Tests/ClientTest.php +++ b/src/Symfony/Component/BrowserKit/Tests/ClientTest.php @@ -73,27 +73,18 @@ protected function getScript($request) class ClientTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\BrowserKit\Client::getHistory - */ public function testGetHistory() { $client = new TestClient(array(), $history = new History()); $this->assertSame($history, $client->getHistory(), '->getHistory() returns the History'); } - /** - * @covers Symfony\Component\BrowserKit\Client::getCookieJar - */ public function testGetCookieJar() { $client = new TestClient(array(), null, $cookieJar = new CookieJar()); $this->assertSame($cookieJar, $client->getCookieJar(), '->getCookieJar() returns the CookieJar'); } - /** - * @covers Symfony\Component\BrowserKit\Client::getRequest - */ public function testGetRequest() { $client = new TestClient(); @@ -140,9 +131,6 @@ public function testGetContent() $this->assertEquals($json, $client->getRequest()->getContent()); } - /** - * @covers Symfony\Component\BrowserKit\Client::getCrawler - */ public function testGetCrawler() { $client = new TestClient(); diff --git a/src/Symfony/Component/Config/Tests/Loader/DelegatingLoaderTest.php b/src/Symfony/Component/Config/Tests/Loader/DelegatingLoaderTest.php index 7641e24825956..cdb0980307f8b 100644 --- a/src/Symfony/Component/Config/Tests/Loader/DelegatingLoaderTest.php +++ b/src/Symfony/Component/Config/Tests/Loader/DelegatingLoaderTest.php @@ -16,19 +16,12 @@ class DelegatingLoaderTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\Config\Loader\DelegatingLoader::__construct - */ public function testConstructor() { $loader = new DelegatingLoader($resolver = new LoaderResolver()); $this->assertTrue(true, '__construct() takes a loader resolver as its first argument'); } - /** - * @covers Symfony\Component\Config\Loader\DelegatingLoader::getResolver - * @covers Symfony\Component\Config\Loader\DelegatingLoader::setResolver - */ public function testGetSetResolver() { $resolver = new LoaderResolver(); @@ -38,9 +31,6 @@ public function testGetSetResolver() $this->assertSame($resolver, $loader->getResolver(), '->setResolver() sets the resolver loader'); } - /** - * @covers Symfony\Component\Config\Loader\DelegatingLoader::supports - */ public function testSupports() { $loader1 = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface'); @@ -54,9 +44,6 @@ public function testSupports() $this->assertFalse($loader->supports('foo.foo'), '->supports() returns false if the resource is not loadable'); } - /** - * @covers Symfony\Component\Config\Loader\DelegatingLoader::load - */ public function testLoad() { $loader = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface'); diff --git a/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php b/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php index 1442e94e8045c..1e8e91eda1c16 100644 --- a/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php +++ b/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php @@ -16,9 +16,6 @@ class FileLoaderTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\Config\Loader\FileLoader - */ public function testImportWithFileLocatorDelegation() { $locatorMock = $this->getMock('Symfony\Component\Config\FileLocatorInterface'); diff --git a/src/Symfony/Component/Config/Tests/Loader/LoaderResolverTest.php b/src/Symfony/Component/Config/Tests/Loader/LoaderResolverTest.php index 8ee276b0c4aa9..03db21be4e2c0 100644 --- a/src/Symfony/Component/Config/Tests/Loader/LoaderResolverTest.php +++ b/src/Symfony/Component/Config/Tests/Loader/LoaderResolverTest.php @@ -15,9 +15,6 @@ class LoaderResolverTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\Config\Loader\LoaderResolver::__construct - */ public function testConstructor() { $resolver = new LoaderResolver(array( @@ -27,9 +24,6 @@ public function testConstructor() $this->assertEquals(array($loader), $resolver->getLoaders(), '__construct() takes an array of loaders as its first argument'); } - /** - * @covers Symfony\Component\Config\Loader\LoaderResolver::resolve - */ public function testResolve() { $loader = $this->getMock('Symfony\Component\Config\Loader\LoaderInterface'); @@ -42,10 +36,6 @@ public function testResolve() $this->assertEquals($loader, $resolver->resolve(function () {}), '->resolve() returns the loader for the given resource'); } - /** - * @covers Symfony\Component\Config\Loader\LoaderResolver::getLoaders - * @covers Symfony\Component\Config\Loader\LoaderResolver::addLoader - */ public function testLoaders() { $resolver = new LoaderResolver(); diff --git a/src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php b/src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php index 4df4134889434..6328b24e9f51d 100644 --- a/src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php +++ b/src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php @@ -16,9 +16,6 @@ class HelperSetTest extends \PHPUnit_Framework_TestCase { - /** - * @covers \Symfony\Component\Console\Helper\HelperSet::__construct - */ public function testConstructor() { $mock_helper = $this->getGenericMockHelper('fake_helper'); @@ -28,9 +25,6 @@ public function testConstructor() $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(); @@ -49,9 +43,6 @@ public function testSet() $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'))); @@ -59,9 +50,6 @@ public function testHas() $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'); @@ -82,9 +70,6 @@ public function testGet() } } - /** - * @covers \Symfony\Component\Console\Helper\HelperSet::setCommand - */ public function testSetCommand() { $cmd_01 = new Command('foo'); @@ -100,9 +85,6 @@ public function testSetCommand() $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'); diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index 2d4eee0a61c2d..e215b9d00a394 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -29,12 +29,6 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::setDefinitions - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getDefinitions - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::setDefinition - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getDefinition - */ public function testDefinitions() { $builder = new ContainerBuilder(); @@ -62,9 +56,6 @@ public function testDefinitions() } } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::register - */ public function testRegister() { $builder = new ContainerBuilder(); @@ -73,9 +64,6 @@ public function testRegister() $this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $builder->getDefinition('foo'), '->register() returns the newly created Definition instance'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::has - */ public function testHas() { $builder = new ContainerBuilder(); @@ -86,9 +74,6 @@ public function testHas() $this->assertTrue($builder->has('bar'), '->has() returns true if a service exists'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::get - */ public function testGet() { $builder = new ContainerBuilder(); @@ -121,7 +106,6 @@ public function testGet() } /** - * @covers \Symfony\Component\DependencyInjection\ContainerBuilder::get * @expectedException \Symfony\Component\DependencyInjection\Exception\RuntimeException * @expectedExceptionMessage You have requested a synthetic service ("foo"). The DIC does not know how to construct this service. */ @@ -140,9 +124,6 @@ public function testGetUnsetLoadingServiceWhenCreateServiceThrowsAnException() $builder->get('foo'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::get - */ public function testGetReturnsNullOnInactiveScope() { $builder = new ContainerBuilder(); @@ -151,9 +132,6 @@ public function testGetReturnsNullOnInactiveScope() $this->assertNull($builder->get('foo', ContainerInterface::NULL_ON_INVALID_REFERENCE)); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::get - */ public function testGetReturnsNullOnInactiveScopeWhenServiceIsCreatedByAMethod() { $builder = new ProjectContainer(); @@ -161,9 +139,6 @@ public function testGetReturnsNullOnInactiveScopeWhenServiceIsCreatedByAMethod() $this->assertNull($builder->get('foobaz', ContainerInterface::NULL_ON_INVALID_REFERENCE)); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getServiceIds - */ public function testGetServiceIds() { $builder = new ContainerBuilder(); @@ -173,11 +148,6 @@ public function testGetServiceIds() $this->assertEquals(array('foo', 'bar', 'service_container'), $builder->getServiceIds(), '->getServiceIds() returns all defined service ids'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::setAlias - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::hasAlias - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getAlias - */ public function testAliases() { $builder = new ContainerBuilder(); @@ -204,9 +174,6 @@ public function testAliases() } } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getAliases - */ public function testGetAliases() { $builder = new ContainerBuilder(); @@ -229,9 +196,6 @@ public function testGetAliases() $this->assertCount(0, $builder->getAliases(), '->getAliases() does not return aliased services that have been overridden'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::setAliases - */ public function testSetAliases() { $builder = new ContainerBuilder(); @@ -242,9 +206,6 @@ public function testSetAliases() $this->assertTrue(isset($aliases['foobar'])); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::addAliases - */ public function testAddAliases() { $builder = new ContainerBuilder(); @@ -256,10 +217,6 @@ public function testAddAliases() $this->assertTrue(isset($aliases['foobar'])); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::addCompilerPass - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getCompilerPassConfig - */ public function testAddGetCompilerPass() { $builder = new ContainerBuilder(); @@ -270,9 +227,6 @@ public function testAddGetCompilerPass() $this->assertCount(count($builder->getCompiler()->getPassConfig()->getPasses()) - 1, $builderCompilerPasses); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateService() { $builder = new ContainerBuilder(); @@ -283,9 +237,6 @@ public function testCreateService() $this->assertInstanceOf('\FooClass', $builder->get('foo2'), '->createService() replaces parameters in the file provided by the service definition'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateProxyWithRealServiceInstantiator() { $builder = new ContainerBuilder(); @@ -299,9 +250,6 @@ public function testCreateProxyWithRealServiceInstantiator() $this->assertSame('FooClass', get_class($foo1)); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateServiceClass() { $builder = new ContainerBuilder(); @@ -310,9 +258,6 @@ public function testCreateServiceClass() $this->assertInstanceOf('\stdClass', $builder->get('foo1'), '->createService() replaces parameters in the class provided by the service definition'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateServiceArguments() { $builder = new ContainerBuilder(); @@ -322,9 +267,6 @@ public function testCreateServiceArguments() $this->assertEquals(array('foo' => 'bar', 'bar' => 'foo', $builder->get('bar'), '%unescape_it%'), $builder->get('foo1')->arguments, '->createService() replaces parameters and service references in the arguments provided by the service definition'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateServiceFactoryMethod() { $builder = new ContainerBuilder(); @@ -341,9 +283,6 @@ public function testCreateServiceFactoryMethod() $this->assertEquals(array('foo' => 'bar', 'bar' => 'foo', $builder->get('bar')), $builder->get('foo1')->arguments, '->createService() passes the arguments to the factory method'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateServiceFactoryService() { $builder = new ContainerBuilder(); @@ -357,9 +296,6 @@ public function testCreateServiceFactoryService() $this->assertTrue($builder->get('foo')->called, '->createService() calls the factory method to create the service instance'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateServiceMethodCalls() { $builder = new ContainerBuilder(); @@ -369,9 +305,6 @@ public function testCreateServiceMethodCalls() $this->assertEquals(array('bar', $builder->get('bar')), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService - */ public function testCreateServiceConfigurator() { $builder = new ContainerBuilder(); @@ -396,7 +329,6 @@ public function testCreateServiceConfigurator() } /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::createService * @expectedException \RuntimeException */ public function testCreateSyntheticService() @@ -406,9 +338,6 @@ public function testCreateSyntheticService() $builder->get('foo'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::resolveServices - */ public function testResolveServices() { $builder = new ContainerBuilder(); @@ -417,9 +346,6 @@ public function testResolveServices() $this->assertEquals(array('foo' => array('foo', $builder->get('foo'))), $builder->resolveServices(array('foo' => array('foo', new Reference('foo')))), '->resolveServices() resolves service references to service instances in nested arrays'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::merge - */ public function testMerge() { $container = new ContainerBuilder(new ParameterBag(array('bar' => 'foo'))); @@ -467,7 +393,6 @@ public function testMerge() } /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::merge * @expectedException \LogicException */ public function testMergeLogicException() @@ -478,9 +403,6 @@ public function testMergeLogicException() $container->merge(new ContainerBuilder()); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::findTaggedServiceIds - */ public function testfindTaggedServiceIds() { $builder = new ContainerBuilder(); @@ -499,9 +421,6 @@ public function testfindTaggedServiceIds() $this->assertEquals(array(), $builder->findTaggedServiceIds('foobar'), '->findTaggedServiceIds() returns an empty array if there is annotated services'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::findDefinition - */ public function testFindDefinition() { $container = new ContainerBuilder(); @@ -511,9 +430,6 @@ public function testFindDefinition() $this->assertEquals($definition, $container->findDefinition('foobar'), '->findDefinition() returns a Definition'); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::addObjectResource - */ public function testAddObjectResource() { $container = new ContainerBuilder(); @@ -537,9 +453,6 @@ public function testAddObjectResource() $this->assertSame(realpath(__DIR__.'/Fixtures/includes/classes.php'), realpath($resource->getResource())); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::addClassResource - */ public function testAddClassResource() { $container = new ContainerBuilder(); @@ -563,9 +476,6 @@ public function testAddClassResource() $this->assertSame(realpath(__DIR__.'/Fixtures/includes/classes.php'), realpath($resource->getResource())); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::compile - */ public function testCompilesClassDefinitionsOfLazyServices() { $container = new ContainerBuilder(); @@ -588,10 +498,6 @@ function (ResourceInterface $resource) use ($classesPath) { $this->assertNotEmpty($matchingResources); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getResources - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::addResource - */ public function testResources() { $container = new ContainerBuilder(); @@ -608,10 +514,6 @@ public function testResources() $this->assertEquals(array(), $container->getResources()); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::registerExtension - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getExtension - */ public function testExtension() { $container = new ContainerBuilder(); @@ -757,10 +659,6 @@ public function testThrowsExceptionWhenSetDefinitionOnAFrozenContainer() $container->setDefinition('a', new Definition()); } - /** - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::getExtensionConfig - * @covers Symfony\Component\DependencyInjection\ContainerBuilder::prependExtensionConfig - */ public function testExtensionConfig() { $container = new ContainerBuilder(); diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerTest.php index e2d4ab13f5bf7..5acc3c3b842e2 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerTest.php @@ -19,9 +19,6 @@ class ContainerTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\Container::__construct - */ public function testConstructor() { $sc = new Container(); @@ -55,9 +52,6 @@ public function dataForTestCamelize() ); } - /** - * @covers Symfony\Component\DependencyInjection\Container::compile - */ public function testCompile() { $sc = new Container(new ParameterBag(array('foo' => 'bar'))); @@ -66,9 +60,6 @@ public function testCompile() $this->assertEquals(array('foo' => 'bar'), $sc->getParameterBag()->all(), '->compile() copies the current parameters to the new parameter bag'); } - /** - * @covers Symfony\Component\DependencyInjection\Container::isFrozen - */ public function testIsFrozen() { $sc = new Container(new ParameterBag(array('foo' => 'bar'))); @@ -77,19 +68,12 @@ public function testIsFrozen() $this->assertTrue($sc->isFrozen(), '->isFrozen() returns true if the parameters are frozen'); } - /** - * @covers Symfony\Component\DependencyInjection\Container::getParameterBag - */ public function testGetParameterBag() { $sc = new Container(); $this->assertEquals(array(), $sc->getParameterBag()->all(), '->getParameterBag() returns an empty array if no parameter has been defined'); } - /** - * @covers Symfony\Component\DependencyInjection\Container::setParameter - * @covers Symfony\Component\DependencyInjection\Container::getParameter - */ public function testGetSetParameter() { $sc = new Container(new ParameterBag(array('foo' => 'bar'))); @@ -112,9 +96,6 @@ public function testGetSetParameter() } } - /** - * @covers Symfony\Component\DependencyInjection\Container::getServiceIds - */ public function testGetServiceIds() { $sc = new Container(); @@ -126,9 +107,6 @@ public function testGetServiceIds() $this->assertEquals(array('scoped', 'scoped_foo', 'inactive', 'bar', 'foo_bar', 'foo.baz', 'circular', 'throw_exception', 'throws_exception_on_service_configuration', 'service_container'), $sc->getServiceIds(), '->getServiceIds() returns defined service ids by getXXXService() methods'); } - /** - * @covers Symfony\Component\DependencyInjection\Container::set - */ public function testSet() { $sc = new Container(); @@ -136,9 +114,6 @@ public function testSet() $this->assertEquals($foo, $sc->get('foo'), '->set() sets a service'); } - /** - * @covers Symfony\Component\DependencyInjection\Container::set - */ public function testSetWithNullResetTheService() { $sc = new Container(); @@ -177,9 +152,6 @@ public function testSetAlsoSetsScopedService() $this->assertSame($foo, $services['foo']['foo']); } - /** - * @covers Symfony\Component\DependencyInjection\Container::get - */ public function testGet() { $sc = new ProjectServiceContainer(); @@ -238,18 +210,12 @@ public function testGetCircularReference() } } - /** - * @covers Symfony\Component\DependencyInjection\Container::get - */ public function testGetReturnsNullOnInactiveScope() { $sc = new ProjectServiceContainer(); $this->assertNull($sc->get('inactive', ContainerInterface::NULL_ON_INVALID_REFERENCE)); } - /** - * @covers Symfony\Component\DependencyInjection\Container::has - */ public function testHas() { $sc = new ProjectServiceContainer(); @@ -262,9 +228,6 @@ public function testHas() $this->assertTrue($sc->has('foo\\baz'), '->has() returns true if a get*Method() is defined'); } - /** - * @covers Symfony\Component\DependencyInjection\Container::initialized - */ public function testInitialized() { $sc = new ProjectServiceContainer(); diff --git a/src/Symfony/Component/DependencyInjection/Tests/DefinitionTest.php b/src/Symfony/Component/DependencyInjection/Tests/DefinitionTest.php index 4fcef3828dc6f..6a1da0698cd3e 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/DefinitionTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/DefinitionTest.php @@ -15,9 +15,6 @@ class DefinitionTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\Definition::__construct - */ public function testConstructor() { $def = new Definition('stdClass'); @@ -51,10 +48,6 @@ public function testSetGetFactoryService() $this->assertEquals('foo.bar', $def->getFactoryService(), '->getFactoryService() returns current service to construct this service.'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setClass - * @covers Symfony\Component\DependencyInjection\Definition::getClass - */ public function testSetGetClass() { $def = new Definition('stdClass'); @@ -62,11 +55,6 @@ public function testSetGetClass() $this->assertEquals('foo', $def->getClass(), '->getClass() returns the class name'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setArguments - * @covers Symfony\Component\DependencyInjection\Definition::getArguments - * @covers Symfony\Component\DependencyInjection\Definition::addArgument - */ public function testArguments() { $def = new Definition('stdClass'); @@ -76,12 +64,6 @@ public function testArguments() $this->assertEquals(array('foo', 'bar'), $def->getArguments(), '->addArgument() adds an argument'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setMethodCalls - * @covers Symfony\Component\DependencyInjection\Definition::addMethodCall - * @covers Symfony\Component\DependencyInjection\Definition::hasMethodCall - * @covers Symfony\Component\DependencyInjection\Definition::removeMethodCall - */ public function testMethodCalls() { $def = new Definition('stdClass'); @@ -105,10 +87,6 @@ public function testExceptionOnEmptyMethodCall() $def->addMethodCall(''); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setFile - * @covers Symfony\Component\DependencyInjection\Definition::getFile - */ public function testSetGetFile() { $def = new Definition('stdClass'); @@ -116,10 +94,6 @@ public function testSetGetFile() $this->assertEquals('foo', $def->getFile(), '->getFile() returns the file to include'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setScope - * @covers Symfony\Component\DependencyInjection\Definition::getScope - */ public function testSetGetScope() { $def = new Definition('stdClass'); @@ -128,10 +102,6 @@ public function testSetGetScope() $this->assertEquals('foo', $def->getScope()); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setPublic - * @covers Symfony\Component\DependencyInjection\Definition::isPublic - */ public function testSetIsPublic() { $def = new Definition('stdClass'); @@ -140,10 +110,6 @@ public function testSetIsPublic() $this->assertFalse($def->isPublic(), '->isPublic() returns false if the instance must not be public.'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setSynthetic - * @covers Symfony\Component\DependencyInjection\Definition::isSynthetic - */ public function testSetIsSynthetic() { $def = new Definition('stdClass'); @@ -152,10 +118,6 @@ public function testSetIsSynthetic() $this->assertTrue($def->isSynthetic(), '->isSynthetic() returns true if the service is synthetic.'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setSynchronized - * @covers Symfony\Component\DependencyInjection\Definition::isSynchronized - */ public function testSetIsSynchronized() { $def = new Definition('stdClass'); @@ -164,10 +126,6 @@ public function testSetIsSynchronized() $this->assertTrue($def->isSynchronized(), '->isSynchronized() returns true if the service is synchronized.'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setLazy - * @covers Symfony\Component\DependencyInjection\Definition::isLazy - */ public function testSetIsLazy() { $def = new Definition('stdClass'); @@ -176,10 +134,6 @@ public function testSetIsLazy() $this->assertTrue($def->isLazy(), '->isLazy() returns true if the service is lazy.'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setAbstract - * @covers Symfony\Component\DependencyInjection\Definition::isAbstract - */ public function testSetIsAbstract() { $def = new Definition('stdClass'); @@ -188,10 +142,6 @@ public function testSetIsAbstract() $this->assertTrue($def->isAbstract(), '->isAbstract() returns true if the instance must not be public.'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::setConfigurator - * @covers Symfony\Component\DependencyInjection\Definition::getConfigurator - */ public function testSetGetConfigurator() { $def = new Definition('stdClass'); @@ -199,9 +149,6 @@ public function testSetGetConfigurator() $this->assertEquals('foo', $def->getConfigurator(), '->getConfigurator() returns the configurator'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::clearTags - */ public function testClearTags() { $def = new Definition('stdClass'); @@ -211,9 +158,6 @@ public function testClearTags() $this->assertEquals(array(), $def->getTags(), '->clearTags() removes all current tags'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::clearTags - */ public function testClearTag() { $def = new Definition('stdClass'); @@ -230,12 +174,6 @@ public function testClearTag() $this->assertTrue($def->hasTag('3foo3')); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::addTag - * @covers Symfony\Component\DependencyInjection\Definition::getTag - * @covers Symfony\Component\DependencyInjection\Definition::getTags - * @covers Symfony\Component\DependencyInjection\Definition::hasTag - */ public function testTags() { $def = new Definition('stdClass'); @@ -253,9 +191,6 @@ public function testTags() ), '->getTags() returns all tags'); } - /** - * @covers Symfony\Component\DependencyInjection\Definition::replaceArgument - */ public function testSetArgument() { $def = new Definition('stdClass'); diff --git a/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/Instantiator/RealServiceInstantiatorTest.php b/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/Instantiator/RealServiceInstantiatorTest.php index cb4402499d24f..6dcf25d2bee10 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/Instantiator/RealServiceInstantiatorTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/Instantiator/RealServiceInstantiatorTest.php @@ -18,8 +18,6 @@ * Tests for {@see \Symfony\Component\DependencyInjection\Instantiator\RealServiceInstantiator}. * * @author Marco Pivetta - * - * @covers \Symfony\Component\DependencyInjection\LazyProxy\Instantiator\RealServiceInstantiator */ class RealServiceInstantiatorTest extends \PHPUnit_Framework_TestCase { diff --git a/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/PhpDumper/NullDumperTest.php b/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/PhpDumper/NullDumperTest.php index 2081ebcf46fca..1fcedca5f98c4 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/PhpDumper/NullDumperTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/LazyProxy/PhpDumper/NullDumperTest.php @@ -18,8 +18,6 @@ * Tests for {@see \Symfony\Component\DependencyInjection\PhpDumper\NullDumper}. * * @author Marco Pivetta - * - * @covers \Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\NullDumper */ class NullDumperTest extends \PHPUnit_Framework_TestCase { diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/ClosureLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/ClosureLoaderTest.php index 483e30b78b818..be057313ab909 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/ClosureLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/ClosureLoaderTest.php @@ -16,9 +16,6 @@ class ClosureLoaderTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\Loader\ClosureLoader::supports - */ public function testSupports() { $loader = new ClosureLoader(new ContainerBuilder()); @@ -27,9 +24,6 @@ public function testSupports() $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable'); } - /** - * @covers Symfony\Component\DependencyInjection\Loader\ClosureLoader::load - */ public function testLoad() { $loader = new ClosureLoader($container = new ContainerBuilder()); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/IniFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/IniFileLoaderTest.php index 9188018b2b7db..cab44b20c74cc 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/IniFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/IniFileLoaderTest.php @@ -33,10 +33,6 @@ protected function setUp() $this->loader = new IniFileLoader($this->container, new FileLocator(self::$fixturesPath.'/ini')); } - /** - * @covers Symfony\Component\DependencyInjection\Loader\IniFileLoader::__construct - * @covers Symfony\Component\DependencyInjection\Loader\IniFileLoader::load - */ public function testIniFileCanBeLoaded() { $this->loader->load('parameters.ini'); @@ -44,9 +40,6 @@ public function testIniFileCanBeLoaded() } /** - * @covers Symfony\Component\DependencyInjection\Loader\IniFileLoader::__construct - * @covers Symfony\Component\DependencyInjection\Loader\IniFileLoader::load - * * @expectedException \InvalidArgumentException * @expectedExceptionMessage The file "foo.ini" does not exist (in: */ @@ -56,9 +49,6 @@ public function testExceptionIsRaisedWhenIniFileDoesNotExist() } /** - * @covers Symfony\Component\DependencyInjection\Loader\IniFileLoader::__construct - * @covers Symfony\Component\DependencyInjection\Loader\IniFileLoader::load - * * @expectedException \InvalidArgumentException * @expectedExceptionMessage The "nonvalid.ini" file is not valid. */ @@ -67,9 +57,6 @@ public function testExceptionIsRaisedWhenIniFileCannotBeParsed() @$this->loader->load('nonvalid.ini'); } - /** - * @covers Symfony\Component\DependencyInjection\Loader\IniFileLoader::supports - */ public function testSupports() { $loader = new IniFileLoader(new ContainerBuilder(), new FileLocator()); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php index 5ae097ca7d1e9..00b957b73115e 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php @@ -17,9 +17,6 @@ class PhpFileLoaderTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\Loader\PhpFileLoader::supports - */ public function testSupports() { $loader = new PhpFileLoader(new ContainerBuilder(), new FileLocator()); @@ -28,9 +25,6 @@ public function testSupports() $this->assertFalse($loader->supports('foo.foo'), '->supports() returns true if the resource is loadable'); } - /** - * @covers Symfony\Component\DependencyInjection\Loader\PhpFileLoader::load - */ public function testLoad() { $loader = new PhpFileLoader($container = new ContainerBuilder(), new FileLocator()); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php index 9c6fd2bdd692d..c0e39ef7ad15c 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php @@ -329,9 +329,6 @@ public function testExtensionInPhar() } } - /** - * @covers Symfony\Component\DependencyInjection\Loader\XmlFileLoader::supports - */ public function testSupports() { $loader = new XmlFileLoader(new ContainerBuilder(), new FileLocator()); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php index 7d6b76bce9d44..bd53da0d5f510 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php @@ -179,9 +179,6 @@ public function testExtensions() } } - /** - * @covers Symfony\Component\DependencyInjection\Loader\YamlFileLoader::supports - */ public function testSupports() { $loader = new YamlFileLoader(new ContainerBuilder(), new FileLocator()); diff --git a/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/FrozenParameterBagTest.php b/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/FrozenParameterBagTest.php index 6d963dc054566..b87ca916bbfe5 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/FrozenParameterBagTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/FrozenParameterBagTest.php @@ -15,9 +15,6 @@ class FrozenParameterBagTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag::__construct - */ public function testConstructor() { $parameters = array( @@ -29,7 +26,6 @@ public function testConstructor() } /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag::clear * @expectedException \LogicException */ public function testClear() @@ -39,7 +35,6 @@ public function testClear() } /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag::set * @expectedException \LogicException */ public function testSet() @@ -49,7 +44,6 @@ public function testSet() } /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag::add * @expectedException \LogicException */ public function testAdd() diff --git a/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php b/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php index e1f8169f8851a..39dfb48455b47 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ParameterBag/ParameterBagTest.php @@ -18,9 +18,6 @@ class ParameterBagTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::__construct - */ public function testConstructor() { $bag = new ParameterBag($parameters = array( @@ -30,9 +27,6 @@ public function testConstructor() $this->assertEquals($parameters, $bag->all(), '__construct() takes an array of parameters as its first argument'); } - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::clear - */ public function testClear() { $bag = new ParameterBag($parameters = array( @@ -43,9 +37,6 @@ public function testClear() $this->assertEquals(array(), $bag->all(), '->clear() removes all parameters'); } - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::remove - */ public function testRemove() { $bag = new ParameterBag(array( @@ -58,10 +49,6 @@ public function testRemove() $this->assertEquals(array(), $bag->all(), '->remove() converts key to lowercase before removing'); } - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::get - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::set - */ public function testGetSet() { $bag = new ParameterBag(array('foo' => 'bar')); @@ -117,9 +104,6 @@ public function testGetThrowParameterNotFoundException() } } - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::has - */ public function testHas() { $bag = new ParameterBag(array('foo' => 'bar')); @@ -128,9 +112,6 @@ public function testHas() $this->assertFalse($bag->has('bar'), '->has() returns false if a parameter is not defined'); } - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::resolveValue - */ public function testResolveValue() { $bag = new ParameterBag(array()); @@ -198,9 +179,6 @@ public function testResolveValue() $this->assertEquals('foo.bar:1337', $bag->resolveValue('%host%:%port%')); } - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::resolve - */ public function testResolveIndicatesWhyAParameterIsNeeded() { $bag = new ParameterBag(array('foo' => '%bar%')); @@ -220,9 +198,6 @@ public function testResolveIndicatesWhyAParameterIsNeeded() } } - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::resolve - */ public function testResolveUnescapesValue() { $bag = new ParameterBag(array( @@ -236,9 +211,6 @@ public function testResolveUnescapesValue() $this->assertEquals(array('bar' => array('ding' => 'I\'m a bar %foo %bar')), $bag->get('foo'), '->resolveValue() supports % escaping by doubling it'); } - /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::escapeValue - */ public function testEscapeValue() { $bag = new ParameterBag(); @@ -253,7 +225,6 @@ public function testEscapeValue() } /** - * @covers Symfony\Component\DependencyInjection\ParameterBag\ParameterBag::resolve * @dataProvider stringsWithSpacesProvider */ public function testResolveStringWithSpacesReturnsString($expected, $test, $description) diff --git a/src/Symfony/Component/DependencyInjection/Tests/ParameterTest.php b/src/Symfony/Component/DependencyInjection/Tests/ParameterTest.php index bed188e95c04e..571ca029881f0 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ParameterTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ParameterTest.php @@ -15,9 +15,6 @@ class ParameterTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\Parameter::__construct - */ public function testConstructor() { $ref = new Parameter('foo'); diff --git a/src/Symfony/Component/DependencyInjection/Tests/ReferenceTest.php b/src/Symfony/Component/DependencyInjection/Tests/ReferenceTest.php index f14e99f926842..6800267c96b10 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ReferenceTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ReferenceTest.php @@ -15,9 +15,6 @@ class ReferenceTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\DependencyInjection\Reference::__construct - */ public function testConstructor() { $ref = new Reference('foo'); diff --git a/src/Symfony/Component/DomCrawler/Tests/CrawlerTest.php b/src/Symfony/Component/DomCrawler/Tests/CrawlerTest.php index ca7802d45d4f8..55a5942e0d413 100644 --- a/src/Symfony/Component/DomCrawler/Tests/CrawlerTest.php +++ b/src/Symfony/Component/DomCrawler/Tests/CrawlerTest.php @@ -24,9 +24,6 @@ public function testConstructor() $this->assertCount(1, $crawler, '__construct() takes a node as a first argument'); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::add - */ public function testAdd() { $crawler = new Crawler(); @@ -62,9 +59,6 @@ public function testAddInvalidNode() $crawler->add(1); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addHtmlContent - */ public function testAddHtmlContent() { $crawler = new Crawler(); @@ -79,7 +73,6 @@ public function testAddHtmlContent() } /** - * @covers Symfony\Component\DomCrawler\Crawler::addHtmlContent * @requires extension mbstring */ public function testAddHtmlContentCharset() @@ -90,9 +83,6 @@ public function testAddHtmlContentCharset() $this->assertEquals('Tiếng Việt', $crawler->filterXPath('//div')->text()); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addHtmlContent - */ public function testAddHtmlContentInvalidBaseTag() { $crawler = new Crawler(null, 'http://symfony.com'); @@ -102,9 +92,6 @@ public function testAddHtmlContentInvalidBaseTag() $this->assertEquals('http://symfony.com/contact', current($crawler->filterXPath('//a')->links())->getUri(), '->addHtmlContent() correctly handles a non-existent base tag href attribute'); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addHtmlContent - */ public function testAddHtmlContentUnsupportedCharset() { $crawler = new Crawler(); @@ -114,7 +101,6 @@ public function testAddHtmlContentUnsupportedCharset() } /** - * @covers Symfony\Component\DomCrawler\Crawler::addHtmlContent * @requires extension mbstring */ public function testAddHtmlContentCharsetGbk() @@ -126,9 +112,6 @@ public function testAddHtmlContentCharsetGbk() $this->assertEquals('中文', $crawler->filterXPath('//p')->text()); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addHtmlContent - */ public function testAddHtmlContentWithErrors() { $internalErrors = libxml_use_internal_errors(true); @@ -154,9 +137,6 @@ public function testAddHtmlContentWithErrors() libxml_use_internal_errors($internalErrors); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addXmlContent - */ public function testAddXmlContent() { $crawler = new Crawler(); @@ -165,9 +145,6 @@ public function testAddXmlContent() $this->assertEquals('foo', $crawler->filterXPath('//div')->attr('class'), '->addXmlContent() adds nodes from an XML string'); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addXmlContent - */ public function testAddXmlContentCharset() { $crawler = new Crawler(); @@ -176,9 +153,6 @@ public function testAddXmlContentCharset() $this->assertEquals('Tiếng Việt', $crawler->filterXPath('//div')->text()); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addXmlContent - */ public function testAddXmlContentWithErrors() { $internalErrors = libxml_use_internal_errors(true); @@ -202,9 +176,6 @@ public function testAddXmlContentWithErrors() libxml_use_internal_errors($internalErrors); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addContent - */ public function testAddContent() { $crawler = new Crawler(); @@ -240,9 +211,6 @@ public function testAddContent() $this->assertEquals('日本語', $crawler->filterXPath('//body')->text(), '->addContent() can recognize "Shift_JIS" in html5 meta charset tag'); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addDocument - */ public function testAddDocument() { $crawler = new Crawler(); @@ -251,9 +219,6 @@ public function testAddDocument() $this->assertEquals('foo', $crawler->filterXPath('//div')->attr('class'), '->addDocument() adds nodes from a \DOMDocument'); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addNodeList - */ public function testAddNodeList() { $crawler = new Crawler(); @@ -262,9 +227,6 @@ public function testAddNodeList() $this->assertEquals('foo', $crawler->filterXPath('//div')->attr('class'), '->addNodeList() adds nodes from a \DOMNodeList'); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addNodes - */ public function testAddNodes() { foreach ($this->createNodeList() as $node) { @@ -277,9 +239,6 @@ public function testAddNodes() $this->assertEquals('foo', $crawler->filterXPath('//div')->attr('class'), '->addNodes() adds nodes from an array of nodes'); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::addNode - */ public function testAddNode() { $crawler = new Crawler(); @@ -396,9 +355,6 @@ public function testFilterXpathComplexQueries() $this->assertCount(7, $crawler->filterXPath('( ( //a | //div )//img | //ul )')); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::filterXPath - */ public function testFilterXPath() { $crawler = $this->createTestCrawler(); @@ -512,9 +468,6 @@ public function testFilterXPathWithSelfAxes() $this->assertCount(9, $crawler->filterXPath('self::*/a')); } - /** - * @covers Symfony\Component\DomCrawler\Crawler::filter - */ public function testFilter() { $crawler = $this->createTestCrawler(); diff --git a/src/Symfony/Component/HttpFoundation/Tests/CookieTest.php b/src/Symfony/Component/HttpFoundation/Tests/CookieTest.php index b3bd4f6e4b2b6..fd90103e42e3d 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/CookieTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/CookieTest.php @@ -41,7 +41,6 @@ public function invalidNames() /** * @dataProvider invalidNames * @expectedException \InvalidArgumentException - * @covers Symfony\Component\HttpFoundation\Cookie::__construct */ public function testInstantiationThrowsExceptionIfCookieNameContainsInvalidCharacters($name) { @@ -56,9 +55,6 @@ public function testInvalidExpiration() $cookie = new Cookie('MyCookie', 'foo', 'bar'); } - /** - * @covers Symfony\Component\HttpFoundation\Cookie::getValue - */ public function testGetValue() { $value = 'MyValue'; diff --git a/src/Symfony/Component/HttpFoundation/Tests/HeaderBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/HeaderBagTest.php index ada9ac0d1eaae..d4d02d94fead1 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/HeaderBagTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/HeaderBagTest.php @@ -15,9 +15,6 @@ class HeaderBagTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\HttpFoundation\HeaderBag::__construct - */ public function testConstructor() { $bag = new HeaderBag(array('foo' => 'bar')); @@ -67,9 +64,6 @@ public function testGetCacheControlHeader() $this->assertEquals('#a', $bag->getCacheControlDirective('public')); } - /** - * @covers Symfony\Component\HttpFoundation\HeaderBag::all - */ public function testAll() { $bag = new HeaderBag(array('foo' => 'bar')); @@ -79,9 +73,6 @@ public function testAll() $this->assertEquals(array('foo' => array('BAR')), $bag->all(), '->all() gets all the input key are lower case'); } - /** - * @covers Symfony\Component\HttpFoundation\HeaderBag::replace - */ public function testReplace() { $bag = new HeaderBag(array('foo' => 'bar')); @@ -91,9 +82,6 @@ public function testReplace() $this->assertFalse($bag->has('foo'), '->replace() overrides previously set the input'); } - /** - * @covers Symfony\Component\HttpFoundation\HeaderBag::get - */ public function testGet() { $bag = new HeaderBag(array('foo' => 'bar', 'fuzz' => 'bizz')); @@ -119,9 +107,6 @@ public function testSetAssociativeArray() $this->assertEquals(array('value'), $bag->get('foo', 'nope', false), 'assoc indices of multi-valued headers are ignored'); } - /** - * @covers Symfony\Component\HttpFoundation\HeaderBag::contains - */ public function testContains() { $bag = new HeaderBag(array('foo' => 'bar', 'fuzz' => 'bizz')); @@ -186,9 +171,6 @@ public function testCacheControlDirectiveOverrideWithReplace() $this->assertEquals(10, $bag->getCacheControlDirective('max-age')); } - /** - * @covers Symfony\Component\HttpFoundation\HeaderBag::getIterator - */ public function testGetIterator() { $headers = array('foo' => 'bar', 'hello' => 'world', 'third' => 'charm'); @@ -203,9 +185,6 @@ public function testGetIterator() $this->assertEquals(count($headers), $i); } - /** - * @covers Symfony\Component\HttpFoundation\HeaderBag::count - */ public function testCount() { $headers = array('foo' => 'bar', 'HELLO' => 'WORLD'); diff --git a/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php index 2044d97a6fcb8..453414aa99004 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/ParameterBagTest.php @@ -15,17 +15,11 @@ class ParameterBagTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::__construct - */ public function testConstructor() { $this->testAll(); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::all - */ public function testAll() { $bag = new ParameterBag(array('foo' => 'bar')); @@ -54,9 +48,6 @@ public function testRemove() $this->assertEquals(array('foo' => 'bar'), $bag->all()); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::replace - */ public function testReplace() { $bag = new ParameterBag(array('foo' => 'bar')); @@ -66,9 +57,6 @@ public function testReplace() $this->assertFalse($bag->has('foo'), '->replace() overrides previously set the input'); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::get - */ public function testGet() { $bag = new ParameterBag(array('foo' => 'bar', 'null' => null)); @@ -116,9 +104,6 @@ public function testGetDeep() $this->assertEquals('default', $bag->get('bar[moo][foo]', 'default', true)); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::set - */ public function testSet() { $bag = new ParameterBag(array()); @@ -130,9 +115,6 @@ public function testSet() $this->assertEquals('baz', $bag->get('foo'), '->set() overrides previously set parameter'); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::has - */ public function testHas() { $bag = new ParameterBag(array('foo' => 'bar')); @@ -141,9 +123,6 @@ public function testHas() $this->assertFalse($bag->has('unknown'), '->has() return false if a parameter is not defined'); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::getAlpha - */ public function testGetAlpha() { $bag = new ParameterBag(array('word' => 'foo_BAR_012')); @@ -152,9 +131,6 @@ public function testGetAlpha() $this->assertEquals('', $bag->getAlpha('unknown'), '->getAlpha() returns empty string if a parameter is not defined'); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::getAlnum - */ public function testGetAlnum() { $bag = new ParameterBag(array('word' => 'foo_BAR_012')); @@ -163,9 +139,6 @@ public function testGetAlnum() $this->assertEquals('', $bag->getAlnum('unknown'), '->getAlnum() returns empty string if a parameter is not defined'); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::getDigits - */ public function testGetDigits() { $bag = new ParameterBag(array('word' => 'foo_BAR_012')); @@ -174,9 +147,6 @@ public function testGetDigits() $this->assertEquals('', $bag->getDigits('unknown'), '->getDigits() returns empty string if a parameter is not defined'); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::getInt - */ public function testGetInt() { $bag = new ParameterBag(array('digits' => '0123')); @@ -185,9 +155,6 @@ public function testGetInt() $this->assertEquals(0, $bag->getInt('unknown'), '->getInt() returns zero if a parameter is not defined'); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::filter - */ public function testFilter() { $bag = new ParameterBag(array( @@ -223,9 +190,6 @@ public function testFilter() $this->assertEquals(array('bang'), $bag->filter('array', '', false), '->filter() gets a value of parameter as an array'); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::getIterator - */ public function testGetIterator() { $parameters = array('foo' => 'bar', 'hello' => 'world'); @@ -240,9 +204,6 @@ public function testGetIterator() $this->assertEquals(count($parameters), $i); } - /** - * @covers Symfony\Component\HttpFoundation\ParameterBag::count - */ public function testCount() { $parameters = array('foo' => 'bar', 'hello' => 'world'); diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php index 0f4706d97e51e..2b54ef5f607d1 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php @@ -17,17 +17,11 @@ class RequestTest extends \PHPUnit_Framework_TestCase { - /** - * @covers Symfony\Component\HttpFoundation\Request::__construct - */ public function testConstructor() { $this->testInitialize(); } - /** - * @covers Symfony\Component\HttpFoundation\Request::initialize - */ public function testInitialize() { $request = new Request(); @@ -94,9 +88,6 @@ public function testSetDefaultLocale() $this->assertEquals('pl', $locale); } - /** - * @covers Symfony\Component\HttpFoundation\Request::create - */ public function testCreate() { $request = Request::create('http://test.com/foo?bar=baz'); @@ -240,9 +231,6 @@ public function testCreate() $this->assertFalse($request->isSecure()); } - /** - * @covers Symfony\Component\HttpFoundation\Request::create - */ public function testCreateCheckPrecedence() { // server is used by default @@ -311,8 +299,6 @@ public function testDuplicateWithFormat() } /** - * @covers Symfony\Component\HttpFoundation\Request::getFormat - * @covers Symfony\Component\HttpFoundation\Request::setFormat * @dataProvider getFormatToMimeTypeMapProvider */ public function testGetFormatFromMimeType($format, $mimeTypes) @@ -327,9 +313,6 @@ public function testGetFormatFromMimeType($format, $mimeTypes) } } - /** - * @covers Symfony\Component\HttpFoundation\Request::getFormat - */ public function testGetFormatFromMimeTypeWithParameters() { $request = new Request(); @@ -337,7 +320,6 @@ public function testGetFormatFromMimeTypeWithParameters() } /** - * @covers Symfony\Component\HttpFoundation\Request::getMimeType * @dataProvider getFormatToMimeTypeMapProvider */ public function testGetMimeTypeFromFormat($format, $mimeTypes) @@ -362,9 +344,6 @@ public function getFormatToMimeTypeMapProvider() ); } - /** - * @covers Symfony\Component\HttpFoundation\Request::getUri - */ public function testGetUri() { $server = array(); @@ -480,9 +459,6 @@ public function testGetUri() $this->assertEquals('http://host:8080/ba%20se/index_dev.php/foo%20bar/in+fo?query=string', $request->getUri()); } - /** - * @covers Symfony\Component\HttpFoundation\Request::getUriForPath - */ public function testGetUriForPath() { $request = Request::create('http://test.com/foo?bar=baz'); @@ -590,9 +566,6 @@ public function testGetUriForPath() $this->assertEquals('http://servername/some/path', $request->getUriForPath('/some/path')); } - /** - * @covers Symfony\Component\HttpFoundation\Request::getUserInfo - */ public function testGetUserInfo() { $request = new Request(); @@ -610,9 +583,6 @@ public function testGetUserInfo() $this->assertEquals('0:0', $request->getUserInfo()); } - /** - * @covers Symfony\Component\HttpFoundation\Request::getSchemeAndHttpHost - */ public function testGetSchemeAndHttpHost() { $request = new Request(); @@ -636,8 +606,6 @@ public function testGetSchemeAndHttpHost() } /** - * @covers Symfony\Component\HttpFoundation\Request::getQueryString - * @covers Symfony\Component\HttpFoundation\Request::normalizeQueryString * @dataProvider getQueryStringNormalizationData */ public function testGetQueryString($query, $expectedQuery, $msg) @@ -773,10 +741,6 @@ public function testGetHostWithFakeHttpHostValue() $request->getHost(); } - /** - * @covers Symfony\Component\HttpFoundation\Request::setMethod - * @covers Symfony\Component\HttpFoundation\Request::getMethod - */ public function testGetSetMethod() { $request = new Request(); diff --git a/src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php index b716ac162aeb9..f6641dbb4050b 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php @@ -20,7 +20,6 @@ class ResponseHeaderBagTest extends \PHPUnit_Framework_TestCase { /** - * @covers Symfony\Component\HttpFoundation\ResponseHeaderBag::allPreserveCase * @dataProvider provideAllPreserveCase */ public function testAllPreserveCase($headers, $expected) diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Attribute/AttributeBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Attribute/AttributeBagTest.php index 5515003b40739..8d0e7a5c13e6d 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Attribute/AttributeBagTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Attribute/AttributeBagTest.php @@ -169,9 +169,6 @@ public function attributesProvider() ); } - /** - * @covers Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::getIterator - */ public function testGetIterator() { $i = 0; @@ -183,9 +180,6 @@ public function testGetIterator() $this->assertEquals(count($this->array), $i); } - /** - * @covers Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag::count - */ public function testCount() { $this->assertEquals(count($this->array), count($this->bag)); diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php index c424591755e0b..7b7afe8628b3e 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Flash/FlashBagTest.php @@ -132,9 +132,6 @@ public function testPeekAll() ); } - /** - * @covers Symfony\Component\HttpFoundation\Session\Flash\FlashBag::getIterator - */ public function testGetIterator() { $flashes = array('hello' => 'world', 'beep' => 'boop', 'notice' => 'nope'); diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/SessionTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/SessionTest.php index 385df1e46a958..57460c6daac5a 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/SessionTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/SessionTest.php @@ -190,9 +190,6 @@ public function testGetFlashBag() $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBagInterface', $this->session->getFlashBag()); } - /** - * @covers Symfony\Component\HttpFoundation\Session\Session::getIterator - */ public function testGetIterator() { $attributes = array('hello' => 'world', 'symfony' => 'rocks'); @@ -209,9 +206,6 @@ public function testGetIterator() $this->assertEquals(count($attributes), $i); } - /** - * @covers \Symfony\Component\HttpFoundation\Session\Session::count - */ public function testGetCount() { $this->session->set('hello', 'world'); diff --git a/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php b/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php index 7c82706d060ac..3f7dcfd32d717 100644 --- a/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php +++ b/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php @@ -29,8 +29,6 @@ protected function setUp() /** * When a time zone is not specified, it uses the system default however it returns null in the getter method. * - * @covers Symfony\Component\Intl\DateFormatter\IntlDateFormatter::getTimeZoneId - * * @see StubIntlDateFormatterTest::testDefaultTimeZoneIntl() */ public function testConstructorDefaultTimeZone() @@ -874,7 +872,6 @@ public function testSetPattern() } /** - * @covers Symfony\Component\Intl\DateFormatter\IntlDateFormatter::getTimeZoneId * @dataProvider setTimeZoneIdProvider */ public function testSetTimeZoneId($timeZoneId, $expectedTimeZoneId) diff --git a/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php b/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php index 5db0995685a00..e7f47ccd7868e 100644 --- a/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php +++ b/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php @@ -392,7 +392,6 @@ public function testClearRemovesAllOptions() } /** - * @covers Symfony\Component\OptionsResolver\Options::replace * @expectedException \Symfony\Component\OptionsResolver\Exception\OptionDefinitionException */ public function testCannotReplaceAfterOptionWasRead() @@ -406,7 +405,6 @@ public function testCannotReplaceAfterOptionWasRead() } /** - * @covers Symfony\Component\OptionsResolver\Options::overload * @expectedException \Symfony\Component\OptionsResolver\Exception\OptionDefinitionException */ public function testCannotOverloadAfterOptionWasRead() @@ -418,7 +416,6 @@ public function testCannotOverloadAfterOptionWasRead() } /** - * @covers Symfony\Component\OptionsResolver\Options::clear * @expectedException \Symfony\Component\OptionsResolver\Exception\OptionDefinitionException */ public function testCannotClearAfterOptionWasRead() diff --git a/src/Symfony/Component/Security/Tests/Core/Authentication/Token/AbstractTokenTest.php b/src/Symfony/Component/Security/Tests/Core/Authentication/Token/AbstractTokenTest.php index b8be6288dc7a9..efdad4ca7e6f4 100644 --- a/src/Symfony/Component/Security/Tests/Core/Authentication/Token/AbstractTokenTest.php +++ b/src/Symfony/Component/Security/Tests/Core/Authentication/Token/AbstractTokenTest.php @@ -85,10 +85,6 @@ public function testEraseCredentials() $token->eraseCredentials(); } - /** - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::serialize - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::unserialize - */ public function testSerialize() { $token = $this->getToken(array('ROLE_FOO')); @@ -114,9 +110,6 @@ public function testSerializeParent() ); } - /** - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::__construct - */ public function testConstructor() { $token = $this->getToken(array('ROLE_FOO')); @@ -129,10 +122,6 @@ public function testConstructor() $this->assertEquals(array(new Role('ROLE_FOO'), new Role('ROLE_BAR')), $token->getRoles()); } - /** - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::isAuthenticated - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::setAuthenticated - */ public function testAuthenticatedFlag() { $token = $this->getToken(); @@ -145,13 +134,6 @@ public function testAuthenticatedFlag() $this->assertFalse($token->isAuthenticated()); } - /** - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::getAttributes - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::setAttributes - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::hasAttribute - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::getAttribute - * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::setAttribute - */ public function testAttributes() { $attributes = array('foo' => 'bar'); diff --git a/src/Symfony/Component/Security/Tests/Core/User/UserTest.php b/src/Symfony/Component/Security/Tests/Core/User/UserTest.php index d05f4911ab12e..eb21503bcce3a 100644 --- a/src/Symfony/Component/Security/Tests/Core/User/UserTest.php +++ b/src/Symfony/Component/Security/Tests/Core/User/UserTest.php @@ -16,7 +16,6 @@ class UserTest extends \PHPUnit_Framework_TestCase { /** - * @covers Symfony\Component\Security\Core\User\User::__construct * @expectedException \InvalidArgumentException */ public function testConstructorException() @@ -24,10 +23,6 @@ public function testConstructorException() new User('', 'superpass'); } - /** - * @covers Symfony\Component\Security\Core\User\User::__construct - * @covers Symfony\Component\Security\Core\User\User::getRoles - */ public function testGetRoles() { $user = new User('fabien', 'superpass'); @@ -37,38 +32,24 @@ public function testGetRoles() $this->assertEquals(array('ROLE_ADMIN'), $user->getRoles()); } - /** - * @covers Symfony\Component\Security\Core\User\User::__construct - * @covers Symfony\Component\Security\Core\User\User::getPassword - */ public function testGetPassword() { $user = new User('fabien', 'superpass'); $this->assertEquals('superpass', $user->getPassword()); } - /** - * @covers Symfony\Component\Security\Core\User\User::__construct - * @covers Symfony\Component\Security\Core\User\User::getUsername - */ public function testGetUsername() { $user = new User('fabien', 'superpass'); $this->assertEquals('fabien', $user->getUsername()); } - /** - * @covers Symfony\Component\Security\Core\User\User::getSalt - */ public function testGetSalt() { $user = new User('fabien', 'superpass'); $this->assertEquals('', $user->getSalt()); } - /** - * @covers Symfony\Component\Security\Core\User\User::isAccountNonExpired - */ public function testIsAccountNonExpired() { $user = new User('fabien', 'superpass'); @@ -78,9 +59,6 @@ public function testIsAccountNonExpired() $this->assertFalse($user->isAccountNonExpired()); } - /** - * @covers Symfony\Component\Security\Core\User\User::isCredentialsNonExpired - */ public function testIsCredentialsNonExpired() { $user = new User('fabien', 'superpass'); @@ -90,9 +68,6 @@ public function testIsCredentialsNonExpired() $this->assertFalse($user->isCredentialsNonExpired()); } - /** - * @covers Symfony\Component\Security\Core\User\User::isAccountNonLocked - */ public function testIsAccountNonLocked() { $user = new User('fabien', 'superpass'); @@ -102,9 +77,6 @@ public function testIsAccountNonLocked() $this->assertFalse($user->isAccountNonLocked()); } - /** - * @covers Symfony\Component\Security\Core\User\User::isEnabled - */ public function testIsEnabled() { $user = new User('fabien', 'superpass'); @@ -114,9 +86,6 @@ public function testIsEnabled() $this->assertFalse($user->isEnabled()); } - /** - * @covers Symfony\Component\Security\Core\User\User::eraseCredentials - */ public function testEraseCredentials() { $user = new User('fabien', 'superpass'); From c188b35b18780e420b4f469a42be0dfc8f71695c Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 3 Nov 2015 14:00:54 +0100 Subject: [PATCH 15/43] [HttpKernel] Fix time-sensitive test case --- .../HttpKernel/Tests/Fragment/FragmentHandlerTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php index 3f6780a87657e..e569accac4cb0 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php @@ -15,6 +15,9 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +/** + * @group time-sensitive + */ class FragmentHandlerTest extends \PHPUnit_Framework_TestCase { /** From b4dd25477423398cda1d24bc728d0ab1eaaa9b3e Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 3 Nov 2015 15:53:03 +0100 Subject: [PATCH 16/43] [travis] session.gc_probability=0 to fix transient tests on hhvm --- .travis.yml | 12 +++++++----- .../Tests/Fragment/FragmentHandlerTest.php | 8 ++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 91dcfa03fadec..62754a68af3a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,14 +32,16 @@ env: before_install: - if [[ "$deps" = "no" ]] && [[ "$TRAVIS_PHP_VERSION" =~ 5.[45] ]] && [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then export deps=skip; fi; + - if [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then INI_FILE=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; else INI_FILE=/etc/hhvm/php.ini; fi; + - echo "memory_limit = -1" >> $INI_FILE + - echo "session.gc_probability = 0" >> $INI_FILE - if [ "$deps" != "skip" ]; then composer self-update; fi; - - if [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then echo "memory_limit = -1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi; - if [[ "$TRAVIS_PHP_VERSION" = 5.* ]]; then phpenv config-rm xdebug.ini; fi; - - if [[ "$TRAVIS_PHP_VERSION" = 5.* ]]; then echo "extension = mongo.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi; - - if [[ "$TRAVIS_PHP_VERSION" = 5.* ]]; then echo "extension = memcache.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi; - - if [[ "$TRAVIS_PHP_VERSION" = 5.* ]]; then (echo yes | pecl install -f apcu-4.0.7 && echo "apc.enable_cli = 1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini) || echo "Let's continue without apcu extension"; fi; + - if [[ "$TRAVIS_PHP_VERSION" = 5.* ]]; then echo "extension = mongo.so" >> $INI_FILE; fi; + - if [[ "$TRAVIS_PHP_VERSION" = 5.* ]]; then echo "extension = memcache.so" >> $INI_FILE; fi; + - if [[ "$TRAVIS_PHP_VERSION" = 5.* ]]; then (echo yes | pecl install -f apcu-4.0.7 && echo "apc.enable_cli = 1" >> $INI_FILE) || echo "Let's continue without apcu extension"; fi; - if [[ "$TRAVIS_PHP_VERSION" = 5.* ]]; then pecl install -f memcached-2.1.0 || echo "Let's continue without memcached extension"; fi; - - if [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then php -i; fi; + - if [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then php -i; else hhvm --php -r 'print_r($_SERVER);print_r(ini_get_all());'; fi; - if [ "$deps" != "skip" ]; then ./phpunit install; fi; - export PHPUNIT="$(readlink -f ./phpunit)" diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php index e569accac4cb0..26cac9415676c 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php @@ -14,12 +14,20 @@ use Symfony\Component\HttpKernel\Fragment\FragmentHandler; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Bridge\PhpUnit\ClockMock; /** * @group time-sensitive */ class FragmentHandlerTest extends \PHPUnit_Framework_TestCase { + protected function setUp() + { + if (class_exists('Symfony\Bridge\PhpUnit\ClockMock')) { + ClockMock::register('Symfony\Component\HttpFoundation\Request'); + } + } + /** * @expectedException \InvalidArgumentException */ From 388534ecbf749da0c17e4344dc720e5c25252351 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 4 Nov 2015 10:02:52 +0100 Subject: [PATCH 17/43] [HttpKernel] Clean clock-mock injection, replaced by #16455 --- .../HttpKernel/Tests/Fragment/FragmentHandlerTest.php | 8 -------- .../HttpKernel/Tests/HttpCache/HttpCacheTestCase.php | 4 ---- 2 files changed, 12 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php index 26cac9415676c..e569accac4cb0 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php @@ -14,20 +14,12 @@ use Symfony\Component\HttpKernel\Fragment\FragmentHandler; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Bridge\PhpUnit\ClockMock; /** * @group time-sensitive */ class FragmentHandlerTest extends \PHPUnit_Framework_TestCase { - protected function setUp() - { - if (class_exists('Symfony\Bridge\PhpUnit\ClockMock')) { - ClockMock::register('Symfony\Component\HttpFoundation\Request'); - } - } - /** * @expectedException \InvalidArgumentException */ diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTestCase.php b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTestCase.php index fa8358da5e777..766e2b1d499a5 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTestCase.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTestCase.php @@ -16,7 +16,6 @@ use Symfony\Component\HttpKernel\HttpCache\HttpCache; use Symfony\Component\HttpKernel\HttpCache\Store; use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Bridge\PhpUnit\ClockMock; class HttpCacheTestCase extends \PHPUnit_Framework_TestCase { @@ -32,9 +31,6 @@ class HttpCacheTestCase extends \PHPUnit_Framework_TestCase protected function setUp() { - if (class_exists('Symfony\Bridge\PhpUnit\ClockMock')) { - ClockMock::register('Symfony\Component\HttpFoundation\Request'); - } $this->kernel = null; $this->cache = null; From 352dfb9890362f222dc0f15981cd17ca3f552934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 3 Nov 2015 10:17:55 -0800 Subject: [PATCH 18/43] [PropertyAccess] Fix dynamic property accessing. --- src/Symfony/Component/PropertyAccess/PropertyAccessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/PropertyAccess/PropertyAccessor.php b/src/Symfony/Component/PropertyAccess/PropertyAccessor.php index c9466b8cbdf56..a55ccf339933c 100644 --- a/src/Symfony/Component/PropertyAccess/PropertyAccessor.php +++ b/src/Symfony/Component/PropertyAccess/PropertyAccessor.php @@ -404,7 +404,7 @@ private function writeProperty(&$object, $property, $singular, $value) // returns true, consequently the following line will result in a // fatal error. - $object->{$access[self::ACCESS_NAME]} = $value; + $object->$property = $value; } elseif (self::ACCESS_TYPE_MAGIC === $access[self::ACCESS_TYPE]) { $object->{$access[self::ACCESS_NAME]}($value); } else { From 2030f62bb53a4d54838e40445dcc8bfe8372a4f7 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 4 Nov 2015 19:12:53 +0100 Subject: [PATCH 19/43] [DI] Clean a phpdoc --- src/Symfony/Component/DependencyInjection/ContainerAware.php | 4 ++-- .../Component/DependencyInjection/ContainerAwareInterface.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/ContainerAware.php b/src/Symfony/Component/DependencyInjection/ContainerAware.php index af977fea03dff..8937c669a6a63 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerAware.php +++ b/src/Symfony/Component/DependencyInjection/ContainerAware.php @@ -24,9 +24,9 @@ abstract class ContainerAware implements ContainerAwareInterface protected $container; /** - * Sets the Container associated with this Controller. + * Sets the container. * - * @param ContainerInterface $container A ContainerInterface instance + * @param ContainerInterface|null $container A ContainerInterface instance or null */ public function setContainer(ContainerInterface $container = null) { diff --git a/src/Symfony/Component/DependencyInjection/ContainerAwareInterface.php b/src/Symfony/Component/DependencyInjection/ContainerAwareInterface.php index 7007265ac8d36..fe301b6270bb9 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerAwareInterface.php +++ b/src/Symfony/Component/DependencyInjection/ContainerAwareInterface.php @@ -19,7 +19,7 @@ interface ContainerAwareInterface { /** - * Sets the Container. + * Sets the container. * * @param ContainerInterface|null $container A ContainerInterface instance or null */ From 916f9e0671388d33ef70ccd5d290679f3eab328d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 4 Nov 2015 20:02:36 +0100 Subject: [PATCH 20/43] [PropertyAccess] Test access to dynamic properties --- .../Tests/PropertyAccessorTest.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php b/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php index 5b127e1bc403d..a38a3ef967869 100644 --- a/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php +++ b/src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php @@ -375,4 +375,32 @@ public function testTicket5755() $this->assertEquals('foobar', $object->getProperty()); } + + /** + * @dataProvider getValidPropertyPaths + */ + public function testSetValue($objectOrArray, $path) + { + $this->propertyAccessor->setValue($objectOrArray, $path, 'Updated'); + + $this->assertSame('Updated', $this->propertyAccessor->getValue($objectOrArray, $path)); + } + + public function getValidPropertyPaths() + { + return array( + array(array('Bernhard', 'Schussek'), '[0]', 'Bernhard'), + array(array('Bernhard', 'Schussek'), '[1]', 'Schussek'), + array(array('firstName' => 'Bernhard'), '[firstName]', 'Bernhard'), + array(array('index' => array('firstName' => 'Bernhard')), '[index][firstName]', 'Bernhard'), + array((object) array('firstName' => 'Bernhard'), 'firstName', 'Bernhard'), + array((object) array('property' => array('firstName' => 'Bernhard')), 'property[firstName]', 'Bernhard'), + array(array('index' => (object) array('firstName' => 'Bernhard')), '[index].firstName', 'Bernhard'), + array((object) array('property' => (object) array('firstName' => 'Bernhard')), 'property.firstName', 'Bernhard'), + + // Missing indices + array(array('index' => array()), '[index][firstName]', null), + array(array('root' => array('index' => array())), '[root][index][firstName]', null), + ); + } } From 2c2836c5998e4786f172cb127cc109caf0a5332d Mon Sep 17 00:00:00 2001 From: Evgeniy Sokolov Date: Tue, 20 Oct 2015 00:12:28 +0200 Subject: [PATCH 21/43] fix race condition at mkdir (#16258) --- src/Symfony/Component/HttpKernel/HttpCache/Store.php | 10 +++++++--- .../HttpKernel/Profiler/FileProfilerStorage.php | 10 ++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/HttpCache/Store.php b/src/Symfony/Component/HttpKernel/HttpCache/Store.php index 4901e2cf297aa..eca3adec1b82f 100644 --- a/src/Symfony/Component/HttpKernel/HttpCache/Store.php +++ b/src/Symfony/Component/HttpKernel/HttpCache/Store.php @@ -32,12 +32,16 @@ class Store implements StoreInterface * Constructor. * * @param string $root The path to the cache directory + * + * @throws \RuntimeException */ public function __construct($root) { $this->root = $root; if (!is_dir($this->root)) { - mkdir($this->root, 0777, true); + if (false === @mkdir($this->root, 0777, true) && !is_dir($this->root)) { + throw new \RuntimeException(sprintf('Unable to create the store directory (%s).', $this->root)); + } } $this->keyCache = new \SplObjectStorage(); $this->locks = array(); @@ -74,7 +78,7 @@ public function cleanup() public function lock(Request $request) { $path = $this->getPath($this->getCacheKey($request).'.lck'); - if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true)) { + if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true) && !is_dir(dirname($path))) { return false; } @@ -338,7 +342,7 @@ private function load($key) private function save($key, $data) { $path = $this->getPath($key); - if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true)) { + if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true) && !is_dir(dirname($path))) { return false; } diff --git a/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php b/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php index bda87e80e1e96..8677b57e4f4f8 100644 --- a/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php +++ b/src/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php @@ -41,8 +41,8 @@ public function __construct($dsn) } $this->folder = substr($dsn, 5); - if (!is_dir($this->folder)) { - mkdir($this->folder, 0777, true); + if (!is_dir($this->folder) && false === @mkdir($this->folder, 0777, true) && !is_dir($this->folder)) { + throw new \RuntimeException(sprintf('Unable to create the storage directory (%s).', $this->folder)); } } @@ -125,6 +125,8 @@ public function read($token) /** * {@inheritdoc} + * + * @throws \RuntimeException */ public function write(Profile $profile) { @@ -134,8 +136,8 @@ public function write(Profile $profile) if (!$profileIndexed) { // Create directory $dir = dirname($file); - if (!is_dir($dir)) { - mkdir($dir, 0777, true); + if (!is_dir($dir) && false === @mkdir($dir, 0777, true) && !is_dir($dir)) { + throw new \RuntimeException(sprintf('Unable to create the storage directory (%s).', $dir)); } } From 481bf6603df62c7a41c7e3abe6f0bc33a4ed8dbd Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 9 Nov 2015 11:28:05 +0100 Subject: [PATCH 22/43] [ci] Add version tag in phpunit wrapper to trigger cache-reset on demand --- phpunit | 12 ++++++++++++ src/Symfony/Component/HttpKernel/phpunit.xml.dist | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/phpunit b/phpunit index 79810f626e87f..2c1cbbd933aa8 100755 --- a/phpunit +++ b/phpunit @@ -1,6 +1,18 @@ #!/usr/bin/env php + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// Please update when phpunit needs to be reinstalled with fresh deps: +// Cache-Id-Version: 2015-11-09 12:13 UTC + use Symfony\Component\Process\ProcessUtils; error_reporting(-1); diff --git a/src/Symfony/Component/HttpKernel/phpunit.xml.dist b/src/Symfony/Component/HttpKernel/phpunit.xml.dist index 7901a0b8b5433..5b17270141acd 100644 --- a/src/Symfony/Component/HttpKernel/phpunit.xml.dist +++ b/src/Symfony/Component/HttpKernel/phpunit.xml.dist @@ -24,4 +24,14 @@ + + + + + + Symfony\Component\HttpFoundation + + + + From f93e0c23d1d9e34cc959ebed94366cc8f3056d64 Mon Sep 17 00:00:00 2001 From: Emil Andersson Date: Mon, 9 Nov 2015 10:45:21 +0100 Subject: [PATCH 23/43] [ci] Phpunit tests wont run if composer is installed in a wrapper --- phpunit | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/phpunit b/phpunit index 2c1cbbd933aa8..6830e3a77a694 100755 --- a/phpunit +++ b/phpunit @@ -22,19 +22,11 @@ require __DIR__.'/src/Symfony/Component/Process/ProcessUtils.php'; $PHPUNIT_VERSION = PHP_VERSION_ID >= 70000 ? '5.0' : '4.8'; $PHPUNIT_DIR = __DIR__.'/.phpunit'; $PHP = defined('PHP_BINARY') ? PHP_BINARY : 'php'; - -if (!file_exists($COMPOSER = __DIR__.'/composer.phar')) { - $COMPOSER = rtrim('\\' === DIRECTORY_SEPARATOR ? `where.exe composer.phar` : (`which composer.phar` ?: `which composer`)); - if (!file_exists($COMPOSER)) { - stream_copy_to_stream( - fopen('https://getcomposer.org/composer.phar', 'rb'), - fopen($COMPOSER = __DIR__.'/composer.phar', 'wb') - ); - } -} - $PHP = ProcessUtils::escapeArgument($PHP); -$COMPOSER = $PHP.' '.ProcessUtils::escapeArgument($COMPOSER); + +$COMPOSER = file_exists($COMPOSER = __DIR__.'/composer.phar') || ($COMPOSER = rtrim('\\' === DIRECTORY_SEPARATOR ? `where.exe composer.phar` : `which composer.phar`)) + ? $PHP.' '.ProcessUtils::escapeArgument($COMPOSER) + : 'composer'; if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__FILE__) !== @file_get_contents("$PHPUNIT_DIR/.md5")) { // Build a standalone phpunit without symfony/yaml From 1b428df90f82df89b418330b6479a6b8dd47a777 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 9 Nov 2015 17:10:51 +0100 Subject: [PATCH 24/43] [ci] Tmp force phpunit/phpunit-mock-objects <= 3.0.0 --- phpunit | 1 + 1 file changed, 1 insertion(+) diff --git a/phpunit b/phpunit index 6830e3a77a694..0b8e2e3d3c0f6 100755 --- a/phpunit +++ b/phpunit @@ -49,6 +49,7 @@ if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__ $zip->close(); chdir("phpunit-$PHPUNIT_VERSION"); passthru("$COMPOSER remove --no-update symfony/yaml"); + passthru("$COMPOSER require --no-update phpunit/phpunit-mock-objects \"<=3.0.0\""); passthru("$COMPOSER require --dev --no-update symfony/phpunit-bridge \">=2.8@dev\""); passthru("$COMPOSER install --prefer-source --no-progress --ansi"); file_put_contents('phpunit', << Date: Tue, 10 Nov 2015 01:31:08 +0100 Subject: [PATCH 25/43] [2.3][Process] fix Proccess run with pts enabled --- src/Symfony/Component/Process/Process.php | 51 ++++++++++++++--------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/Symfony/Component/Process/Process.php b/src/Symfony/Component/Process/Process.php index 1249962bb5a6e..bbafb4327912e 100644 --- a/src/Symfony/Component/Process/Process.php +++ b/src/Symfony/Component/Process/Process.php @@ -119,12 +119,12 @@ class Process /** * Constructor. * - * @param string $commandline The command line to run - * @param string|null $cwd The working directory or null to use the working dir of the current PHP process - * @param array|null $env The environment variables or null to inherit - * @param string|null $stdin The STDIN content - * @param integer|float|null $timeout The timeout in seconds or null to disable - * @param array $options An array of options for proc_open + * @param string $commandline The command line to run + * @param string|null $cwd The working directory or null to use the working dir of the current PHP process + * @param array|null $env The environment variables or null to inherit + * @param string|null $stdin The STDIN content + * @param int|float|null $timeout The timeout in seconds or null to disable + * @param array $options An array of options for proc_open * * @throws RuntimeException When proc_open is not installed * @@ -184,7 +184,7 @@ public function __clone() * @param callback|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * - * @return integer The exit status code + * @return int The exit status code * * @throws RuntimeException When process can't be launch or is stopped * @@ -238,8 +238,20 @@ public function start($callback = null) } } + $ptsWorkaround = null; + + if (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { + // Workaround for the bug, when PTS functionality is enabled. + // @see : https://bugs.php.net/69442 + $ptsWorkaround = fopen('php://fd/0', 'r'); + } + $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $this->env, $this->options); + if ($ptsWorkaround) { + fclose($ptsWorkaround); + } + if (!is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } @@ -287,7 +299,7 @@ public function restart($callback = null) * * @param callback|null $callback A valid PHP callback * - * @return integer The exitcode of the process + * @return int The exitcode of the process * * @throws RuntimeException When process timed out * @throws RuntimeException When process stopped after receiving signal @@ -302,7 +314,7 @@ public function wait($callback = null) do { $this->checkTimeout(); $running = defined('PHP_WINDOWS_VERSION_BUILD') ? $this->isRunning() : $this->processPipes->hasOpenHandles(); - $close = !defined('PHP_WINDOWS_VERSION_BUILD') || !$running;; + $close = !defined('PHP_WINDOWS_VERSION_BUILD') || !$running; $this->readPipes(true, $close); } while ($running); @@ -324,7 +336,7 @@ public function wait($callback = null) /** * Returns the Pid (process identifier), if applicable. * - * @return integer|null The process id if running, null otherwise + * @return int|null The process id if running, null otherwise * * @throws RuntimeException In case --enable-sigchild is activated */ @@ -342,7 +354,8 @@ public function getPid() /** * Sends a posix signal to the process. * - * @param integer $signal A valid posix signal (see http://www.php.net/manual/en/pcntl.constants.php) + * @param int $signal A valid posix signal (see http://www.php.net/manual/en/pcntl.constants.php) + * * @return Process * * @throws LogicException In case the process is not running @@ -434,7 +447,7 @@ public function getIncrementalErrorOutput() /** * Returns the exit code returned by the process. * - * @return integer The exit status code + * @return int The exit status code * * @throws RuntimeException In case --enable-sigchild is activated and the sigchild compatibility mode is disabled * @@ -508,7 +521,7 @@ public function hasBeenSignaled() * * It is only meaningful if hasBeenSignaled() returns true. * - * @return integer + * @return int * * @throws RuntimeException In case --enable-sigchild is activated * @@ -546,7 +559,7 @@ public function hasBeenStopped() * * It is only meaningful if hasBeenStopped() returns true. * - * @return integer + * @return int * * @api */ @@ -612,10 +625,10 @@ public function getStatus() /** * Stops the process. * - * @param integer|float $timeout The timeout in seconds - * @param integer $signal A posix signal to send in case the process has not stop at timeout, default is SIGKILL + * @param int|float $timeout The timeout in seconds + * @param int $signal A posix signal to send in case the process has not stop at timeout, default is SIGKILL * - * @return integer The exit-code of the process + * @return int The exit-code of the process * * @throws RuntimeException if the process got signaled */ @@ -704,7 +717,7 @@ public function getTimeout() * * To disable the timeout, set this value to null. * - * @param integer|float|null $timeout The timeout in seconds + * @param int|float|null $timeout The timeout in seconds * * @return self The current Process instance * @@ -728,7 +741,7 @@ public function setTimeout($timeout) /** * Enables or disables the TTY mode. * - * @param boolean $tty True to enabled and false to disable + * @param bool $tty True to enabled and false to disable * * @return self The current Process instance */ From 5f1980ba5ce72fab682b210103caab78969fc560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20S=C3=A1nchez?= Date: Wed, 11 Nov 2015 16:25:04 -0300 Subject: [PATCH 26/43] The following change adds support for Armenian pluralization. According to http://www.unicode.org/cldr/charts/27/supplemental/language_plural_rules.html#hy Armenian has 2 forms of pluralization. --- src/Symfony/Component/Translation/PluralizationRules.php | 1 + .../Component/Translation/Tests/PluralizationRulesTest.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Translation/PluralizationRules.php b/src/Symfony/Component/Translation/PluralizationRules.php index 6d91da7fc6c78..8b02773b5884a 100644 --- a/src/Symfony/Component/Translation/PluralizationRules.php +++ b/src/Symfony/Component/Translation/PluralizationRules.php @@ -132,6 +132,7 @@ public static function get($number, $locale) case 'fr': case 'gun': case 'hi': + case 'hy': case 'ln': case 'mg': case 'nso': diff --git a/src/Symfony/Component/Translation/Tests/PluralizationRulesTest.php b/src/Symfony/Component/Translation/Tests/PluralizationRulesTest.php index 066e07f5ab3f2..43c31672c2ce5 100644 --- a/src/Symfony/Component/Translation/Tests/PluralizationRulesTest.php +++ b/src/Symfony/Component/Translation/Tests/PluralizationRulesTest.php @@ -61,7 +61,7 @@ public function successLangcodes() { return array( array('1', array('ay','bo', 'cgg','dz','id', 'ja', 'jbo', 'ka','kk','km','ko','ky')), - array('2', array('nl', 'fr', 'en', 'de', 'de_GE')), + array('2', array('nl', 'fr', 'en', 'de', 'de_GE', 'hy', 'hy_AM')), array('3', array('be','bs','cs','hr')), array('4', array('cy','mt', 'sl')), array('5', array()), From 2d0af8e719c9615069a13adcdaf5ef38edb519fc Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Fri, 13 Nov 2015 07:29:58 +0000 Subject: [PATCH 27/43] [Validator] Allow an empty path with a non empty fragment or a query --- src/Symfony/Component/Validator/Constraints/UrlValidator.php | 2 +- .../Validator/Tests/Constraints/UrlValidatorTest.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Validator/Constraints/UrlValidator.php b/src/Symfony/Component/Validator/Constraints/UrlValidator.php index 5af71e6d824ee..5127f8b1660f6 100644 --- a/src/Symfony/Component/Validator/Constraints/UrlValidator.php +++ b/src/Symfony/Component/Validator/Constraints/UrlValidator.php @@ -33,7 +33,7 @@ class UrlValidator extends ConstraintValidator \] # a IPv6 address ) (:[0-9]+)? # a port (optional) - (/?|/\S+|\?|\#) # a /, nothing, a / with something, a query or a fragment + (/?|/\S+|\?\S*|\#\S*) # a /, nothing, a / with something, a query or a fragment $~ixu'; /** diff --git a/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php b/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php index c08531339c2a4..93e9e8237ff0e 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php @@ -112,7 +112,11 @@ public function getValidUrls() array('http://username:password@symfony.com'), array('http://user-name@symfony.com'), array('http://symfony.com?'), + array('http://symfony.com?query=1'), + array('http://symfony.com/?query=1'), array('http://symfony.com#'), + array('http://symfony.com#fragment'), + array('http://symfony.com/#fragment'), ); } From 4923411062127aa20b038f74766f27515e0e7c41 Mon Sep 17 00:00:00 2001 From: Leo Feyer Date: Tue, 27 Oct 2015 16:04:34 +0100 Subject: [PATCH 28/43] Fix the server variables in the router_*.php files --- .../Bundle/FrameworkBundle/Resources/config/router_dev.php | 4 ++++ .../Bundle/FrameworkBundle/Resources/config/router_prod.php | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_dev.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_dev.php index ca0cd1ee1cefb..432ccff9204f1 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_dev.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_dev.php @@ -33,6 +33,10 @@ $_SERVER = array_merge($_SERVER, $_ENV); $_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'app_dev.php'; +// Since we are rewriting to app_dev.php, adjust SCRIPT_NAME and PHP_SELF accordingly +$_SERVER['SCRIPT_NAME'] = DIRECTORY_SEPARATOR.'app_dev.php'; +$_SERVER['PHP_SELF'] = DIRECTORY_SEPARATOR.'app_dev.php'; + require 'app_dev.php'; error_log(sprintf('%s:%d [%d]: %s', $_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_PORT'], http_response_code(), $_SERVER['REQUEST_URI']), 4); diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_prod.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_prod.php index 1c6b99b866b74..97613a6248f71 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_prod.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/router_prod.php @@ -33,6 +33,10 @@ $_SERVER = array_merge($_SERVER, $_ENV); $_SERVER['SCRIPT_FILENAME'] = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'app.php'; +// Since we are rewriting to app.php, adjust SCRIPT_NAME and PHP_SELF accordingly +$_SERVER['SCRIPT_NAME'] = DIRECTORY_SEPARATOR.'app.php'; +$_SERVER['PHP_SELF'] = DIRECTORY_SEPARATOR.'app.php'; + require 'app.php'; error_log(sprintf('%s:%d [%d]: %s', $_SERVER['REMOTE_ADDR'], $_SERVER['REMOTE_PORT'], http_response_code(), $_SERVER['REQUEST_URI']), 4); From d4880c4785fce19106a93d74e904e9f0f630e015 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 18 Nov 2015 09:19:46 +0100 Subject: [PATCH 29/43] Add missing exclusions from phpunit.xml.dist --- phpunit.xml.dist | 4 ++++ src/Symfony/Bridge/Doctrine/phpunit.xml.dist | 2 ++ src/Symfony/Bridge/Monolog/phpunit.xml.dist | 2 ++ src/Symfony/Bridge/Propel1/phpunit.xml.dist | 2 ++ src/Symfony/Bridge/ProxyManager/phpunit.xml.dist | 1 + src/Symfony/Bridge/Twig/phpunit.xml.dist | 1 + src/Symfony/Bundle/FrameworkBundle/phpunit.xml.dist | 3 ++- src/Symfony/Bundle/SecurityBundle/phpunit.xml.dist | 3 ++- src/Symfony/Bundle/TwigBundle/phpunit.xml.dist | 3 ++- src/Symfony/Bundle/WebProfilerBundle/phpunit.xml.dist | 3 ++- src/Symfony/Component/BrowserKit/phpunit.xml.dist | 1 + src/Symfony/Component/ClassLoader/phpunit.xml.dist | 1 + src/Symfony/Component/Config/phpunit.xml.dist | 1 + src/Symfony/Component/Console/phpunit.xml.dist | 1 + src/Symfony/Component/CssSelector/phpunit.xml.dist | 1 + src/Symfony/Component/Debug/phpunit.xml.dist | 1 + src/Symfony/Component/DependencyInjection/phpunit.xml.dist | 1 + src/Symfony/Component/EventDispatcher/phpunit.xml.dist | 1 + src/Symfony/Component/Filesystem/phpunit.xml.dist | 2 ++ src/Symfony/Component/Finder/phpunit.xml.dist | 1 + src/Symfony/Component/Form/phpunit.xml.dist | 2 ++ src/Symfony/Component/HttpFoundation/phpunit.xml.dist | 1 + src/Symfony/Component/HttpKernel/phpunit.xml.dist | 1 + src/Symfony/Component/Intl/phpunit.xml.dist | 2 ++ src/Symfony/Component/Locale/phpunit.xml.dist | 1 + src/Symfony/Component/OptionsResolver/phpunit.xml.dist | 2 ++ src/Symfony/Component/Process/phpunit.xml.dist | 2 ++ src/Symfony/Component/PropertyAccess/phpunit.xml.dist | 2 ++ src/Symfony/Component/Routing/phpunit.xml.dist | 3 ++- src/Symfony/Component/Security/phpunit.xml.dist | 5 ++++- src/Symfony/Component/Serializer/phpunit.xml.dist | 3 ++- src/Symfony/Component/Stopwatch/phpunit.xml.dist | 1 + src/Symfony/Component/Templating/phpunit.xml.dist | 2 +- src/Symfony/Component/Translation/phpunit.xml.dist | 2 +- src/Symfony/Component/Validator/phpunit.xml.dist | 3 ++- src/Symfony/Component/Yaml/phpunit.xml.dist | 3 ++- 36 files changed, 59 insertions(+), 11 deletions(-) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index e9c709d14223a..4e4e411c3cfb4 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -38,6 +38,10 @@ ./src/Symfony/Bundle/*/Resources ./src/Symfony/Component/*/Resources ./src/Symfony/Component/*/*/Resources + ./src/Symfony/Bridge/*/vendor + ./src/Symfony/Bundle/*/vendor + ./src/Symfony/Component/*/vendor + ./src/Symfony/Component/*/*/vendor diff --git a/src/Symfony/Bridge/Doctrine/phpunit.xml.dist b/src/Symfony/Bridge/Doctrine/phpunit.xml.dist index 13409e6f0f6b5..c006d232219a4 100644 --- a/src/Symfony/Bridge/Doctrine/phpunit.xml.dist +++ b/src/Symfony/Bridge/Doctrine/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -21,6 +22,7 @@ ./Resources ./Tests + ./vendor diff --git a/src/Symfony/Bridge/Monolog/phpunit.xml.dist b/src/Symfony/Bridge/Monolog/phpunit.xml.dist index efd48709de90b..8a60f06a7a310 100644 --- a/src/Symfony/Bridge/Monolog/phpunit.xml.dist +++ b/src/Symfony/Bridge/Monolog/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -21,6 +22,7 @@ ./Resources ./Tests + ./vendor diff --git a/src/Symfony/Bridge/Propel1/phpunit.xml.dist b/src/Symfony/Bridge/Propel1/phpunit.xml.dist index 507e12596cbd4..d6d959c7b01c2 100644 --- a/src/Symfony/Bridge/Propel1/phpunit.xml.dist +++ b/src/Symfony/Bridge/Propel1/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -21,6 +22,7 @@ ./Resources ./Tests + ./vendor diff --git a/src/Symfony/Bridge/ProxyManager/phpunit.xml.dist b/src/Symfony/Bridge/ProxyManager/phpunit.xml.dist index 363805fdfa6ae..60980be9e531e 100644 --- a/src/Symfony/Bridge/ProxyManager/phpunit.xml.dist +++ b/src/Symfony/Bridge/ProxyManager/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Bridge/Twig/phpunit.xml.dist b/src/Symfony/Bridge/Twig/phpunit.xml.dist index d291324949f2d..10c0be1142712 100644 --- a/src/Symfony/Bridge/Twig/phpunit.xml.dist +++ b/src/Symfony/Bridge/Twig/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Bundle/FrameworkBundle/phpunit.xml.dist b/src/Symfony/Bundle/FrameworkBundle/phpunit.xml.dist index eb7c0b0a97a2f..1d25eeb3304c5 100644 --- a/src/Symfony/Bundle/FrameworkBundle/phpunit.xml.dist +++ b/src/Symfony/Bundle/FrameworkBundle/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,9 +20,9 @@ ./ - ./vendor ./Resources ./Tests + ./vendor diff --git a/src/Symfony/Bundle/SecurityBundle/phpunit.xml.dist b/src/Symfony/Bundle/SecurityBundle/phpunit.xml.dist index 52f420ae5f2fe..a7fdc326c4571 100644 --- a/src/Symfony/Bundle/SecurityBundle/phpunit.xml.dist +++ b/src/Symfony/Bundle/SecurityBundle/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,8 +20,8 @@ ./ - ./Tests ./Resources + ./Tests ./vendor diff --git a/src/Symfony/Bundle/TwigBundle/phpunit.xml.dist b/src/Symfony/Bundle/TwigBundle/phpunit.xml.dist index 715b0bfa87f47..9a8c38f26ef33 100644 --- a/src/Symfony/Bundle/TwigBundle/phpunit.xml.dist +++ b/src/Symfony/Bundle/TwigBundle/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,8 +20,8 @@ ./ - ./Tests ./Resources + ./Tests ./vendor diff --git a/src/Symfony/Bundle/WebProfilerBundle/phpunit.xml.dist b/src/Symfony/Bundle/WebProfilerBundle/phpunit.xml.dist index 767f3e066b391..2bcccd6667a26 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/phpunit.xml.dist +++ b/src/Symfony/Bundle/WebProfilerBundle/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,8 +20,8 @@ ./ - ./Tests ./Resources + ./Tests ./vendor diff --git a/src/Symfony/Component/BrowserKit/phpunit.xml.dist b/src/Symfony/Component/BrowserKit/phpunit.xml.dist index d6ca28bf1c6b5..d76b2b98afd80 100644 --- a/src/Symfony/Component/BrowserKit/phpunit.xml.dist +++ b/src/Symfony/Component/BrowserKit/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/ClassLoader/phpunit.xml.dist b/src/Symfony/Component/ClassLoader/phpunit.xml.dist index a1b6c82c10161..4856db5be65d1 100644 --- a/src/Symfony/Component/ClassLoader/phpunit.xml.dist +++ b/src/Symfony/Component/ClassLoader/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/Config/phpunit.xml.dist b/src/Symfony/Component/Config/phpunit.xml.dist index 2156534e9ce52..3fe6fd87c8499 100644 --- a/src/Symfony/Component/Config/phpunit.xml.dist +++ b/src/Symfony/Component/Config/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/Console/phpunit.xml.dist b/src/Symfony/Component/Console/phpunit.xml.dist index 729c433aa69e8..ae0dcbeaba41c 100644 --- a/src/Symfony/Component/Console/phpunit.xml.dist +++ b/src/Symfony/Component/Console/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/CssSelector/phpunit.xml.dist b/src/Symfony/Component/CssSelector/phpunit.xml.dist index bc57cfcdfa8d8..14a320c873c11 100644 --- a/src/Symfony/Component/CssSelector/phpunit.xml.dist +++ b/src/Symfony/Component/CssSelector/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/Debug/phpunit.xml.dist b/src/Symfony/Component/Debug/phpunit.xml.dist index e91766065749a..20b0313f0cd89 100644 --- a/src/Symfony/Component/Debug/phpunit.xml.dist +++ b/src/Symfony/Component/Debug/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/DependencyInjection/phpunit.xml.dist b/src/Symfony/Component/DependencyInjection/phpunit.xml.dist index 17a217226da3d..86252d0456ba9 100644 --- a/src/Symfony/Component/DependencyInjection/phpunit.xml.dist +++ b/src/Symfony/Component/DependencyInjection/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/EventDispatcher/phpunit.xml.dist b/src/Symfony/Component/EventDispatcher/phpunit.xml.dist index b14fde575007d..ae0586e0b33de 100644 --- a/src/Symfony/Component/EventDispatcher/phpunit.xml.dist +++ b/src/Symfony/Component/EventDispatcher/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/Filesystem/phpunit.xml.dist b/src/Symfony/Component/Filesystem/phpunit.xml.dist index 32444185a1edc..d066ed7969868 100644 --- a/src/Symfony/Component/Filesystem/phpunit.xml.dist +++ b/src/Symfony/Component/Filesystem/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -20,6 +21,7 @@ ./ ./Tests + ./vendor diff --git a/src/Symfony/Component/Finder/phpunit.xml.dist b/src/Symfony/Component/Finder/phpunit.xml.dist index bc38ccaa45d1d..631e570b9479f 100644 --- a/src/Symfony/Component/Finder/phpunit.xml.dist +++ b/src/Symfony/Component/Finder/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/Form/phpunit.xml.dist b/src/Symfony/Component/Form/phpunit.xml.dist index 104aee4b0b52d..1c4acf476238d 100644 --- a/src/Symfony/Component/Form/phpunit.xml.dist +++ b/src/Symfony/Component/Form/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,6 +20,7 @@ ./ + ./Resources ./Tests ./vendor diff --git a/src/Symfony/Component/HttpFoundation/phpunit.xml.dist b/src/Symfony/Component/HttpFoundation/phpunit.xml.dist index b5b660a39433e..9ffdb43a2d744 100644 --- a/src/Symfony/Component/HttpFoundation/phpunit.xml.dist +++ b/src/Symfony/Component/HttpFoundation/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/HttpKernel/phpunit.xml.dist b/src/Symfony/Component/HttpKernel/phpunit.xml.dist index 5b17270141acd..17c48935c7158 100644 --- a/src/Symfony/Component/HttpKernel/phpunit.xml.dist +++ b/src/Symfony/Component/HttpKernel/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/Intl/phpunit.xml.dist b/src/Symfony/Component/Intl/phpunit.xml.dist index d40a1582bb889..9e7ce2f0b2642 100644 --- a/src/Symfony/Component/Intl/phpunit.xml.dist +++ b/src/Symfony/Component/Intl/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -25,6 +26,7 @@ ./ + ./Resources ./Tests ./vendor diff --git a/src/Symfony/Component/Locale/phpunit.xml.dist b/src/Symfony/Component/Locale/phpunit.xml.dist index 4633ca6f04375..0d9b637cc78d1 100644 --- a/src/Symfony/Component/Locale/phpunit.xml.dist +++ b/src/Symfony/Component/Locale/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/OptionsResolver/phpunit.xml.dist b/src/Symfony/Component/OptionsResolver/phpunit.xml.dist index 2398388768711..abf84614bcf76 100644 --- a/src/Symfony/Component/OptionsResolver/phpunit.xml.dist +++ b/src/Symfony/Component/OptionsResolver/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -21,6 +22,7 @@ ./Resources ./Tests + ./vendor diff --git a/src/Symfony/Component/Process/phpunit.xml.dist b/src/Symfony/Component/Process/phpunit.xml.dist index 07b617be4b5d2..788500084abf8 100644 --- a/src/Symfony/Component/Process/phpunit.xml.dist +++ b/src/Symfony/Component/Process/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -20,6 +21,7 @@ ./ ./Tests + ./vendor diff --git a/src/Symfony/Component/PropertyAccess/phpunit.xml.dist b/src/Symfony/Component/PropertyAccess/phpunit.xml.dist index 99858f7b95361..b0b20c1bd9460 100644 --- a/src/Symfony/Component/PropertyAccess/phpunit.xml.dist +++ b/src/Symfony/Component/PropertyAccess/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -21,6 +22,7 @@ ./Resources ./Tests + ./vendor diff --git a/src/Symfony/Component/Routing/phpunit.xml.dist b/src/Symfony/Component/Routing/phpunit.xml.dist index fae243c8152b0..b69f066ac1b2f 100644 --- a/src/Symfony/Component/Routing/phpunit.xml.dist +++ b/src/Symfony/Component/Routing/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,8 +20,8 @@ ./ - ./vendor ./Tests + ./vendor diff --git a/src/Symfony/Component/Security/phpunit.xml.dist b/src/Symfony/Component/Security/phpunit.xml.dist index 9a20f91498ae9..9d3cf4a02318d 100644 --- a/src/Symfony/Component/Security/phpunit.xml.dist +++ b/src/Symfony/Component/Security/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,8 +20,10 @@ ./ - ./vendor + ./Acl/Resources + ./Resources ./Tests + ./vendor diff --git a/src/Symfony/Component/Serializer/phpunit.xml.dist b/src/Symfony/Component/Serializer/phpunit.xml.dist index da0540137b19a..4799e3cf2f1dd 100644 --- a/src/Symfony/Component/Serializer/phpunit.xml.dist +++ b/src/Symfony/Component/Serializer/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,8 +20,8 @@ ./ - ./vendor ./Tests + ./vendor diff --git a/src/Symfony/Component/Stopwatch/phpunit.xml.dist b/src/Symfony/Component/Stopwatch/phpunit.xml.dist index 38078d25bb7ee..b16dcaebf9a47 100644 --- a/src/Symfony/Component/Stopwatch/phpunit.xml.dist +++ b/src/Symfony/Component/Stopwatch/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ diff --git a/src/Symfony/Component/Templating/phpunit.xml.dist b/src/Symfony/Component/Templating/phpunit.xml.dist index 3da1f5de1371c..109584e805db2 100644 --- a/src/Symfony/Component/Templating/phpunit.xml.dist +++ b/src/Symfony/Component/Templating/phpunit.xml.dist @@ -20,8 +20,8 @@ ./ - ./vendor ./Tests + ./vendor diff --git a/src/Symfony/Component/Translation/phpunit.xml.dist b/src/Symfony/Component/Translation/phpunit.xml.dist index 16cca4afb7c69..c25ec5eda6940 100644 --- a/src/Symfony/Component/Translation/phpunit.xml.dist +++ b/src/Symfony/Component/Translation/phpunit.xml.dist @@ -20,8 +20,8 @@ ./ - ./vendor ./Tests + ./vendor diff --git a/src/Symfony/Component/Validator/phpunit.xml.dist b/src/Symfony/Component/Validator/phpunit.xml.dist index 1bf4391c3c181..cf8c343863e5d 100644 --- a/src/Symfony/Component/Validator/phpunit.xml.dist +++ b/src/Symfony/Component/Validator/phpunit.xml.dist @@ -20,8 +20,9 @@ ./ - ./vendor + ./Resources ./Tests + ./vendor diff --git a/src/Symfony/Component/Yaml/phpunit.xml.dist b/src/Symfony/Component/Yaml/phpunit.xml.dist index 8f7741fe393e6..6bdbea16e6426 100644 --- a/src/Symfony/Component/Yaml/phpunit.xml.dist +++ b/src/Symfony/Component/Yaml/phpunit.xml.dist @@ -9,6 +9,7 @@ + ./Tests/ @@ -19,8 +20,8 @@ ./ - ./vendor ./Tests + ./vendor From 01251455c0858d6beea032f343f542d0e81f25e2 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 16 Nov 2015 10:23:46 +0100 Subject: [PATCH 30/43] [ProxyManager] Tmp fix composer reqs issue in ZF --- composer.json | 1 + src/Symfony/Bridge/ProxyManager/composer.json | 1 + 2 files changed, 2 insertions(+) diff --git a/composer.json b/composer.json index 198070a402ee4..73f564c5fac37 100644 --- a/composer.json +++ b/composer.json @@ -70,6 +70,7 @@ "monolog/monolog": "~1.3", "propel/propel1": "~1.6", "ircmaxell/password-compat": "~1.0", + "zendframework/zend-stdlib": "~2.5", "ocramius/proxy-manager": "~0.3.1" }, "autoload": { diff --git a/src/Symfony/Bridge/ProxyManager/composer.json b/src/Symfony/Bridge/ProxyManager/composer.json index 82b119b164898..7efa4da4156e7 100644 --- a/src/Symfony/Bridge/ProxyManager/composer.json +++ b/src/Symfony/Bridge/ProxyManager/composer.json @@ -18,6 +18,7 @@ "require": { "php": ">=5.3.3", "symfony/dependency-injection": "~2.3", + "zendframework/zend-stdlib": "~2.5", "ocramius/proxy-manager": "~0.3.1" }, "require-dev": { From 75aa6f68f820c4776f3172eb9eff137ba7bae704 Mon Sep 17 00:00:00 2001 From: Eugene Wissner Date: Tue, 17 Nov 2015 03:38:36 +0100 Subject: [PATCH 31/43] Fix undefined array $server --- src/Symfony/Component/HttpFoundation/Tests/RequestTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php index 2b54ef5f607d1..dcc1c2eb99132 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php @@ -570,7 +570,7 @@ public function testGetUserInfo() { $request = new Request(); - $server['PHP_AUTH_USER'] = 'fabien'; + $server = array('PHP_AUTH_USER' => 'fabien'); $request->initialize(array(), array(), array(), array(), array(), $server); $this->assertEquals('fabien', $request->getUserInfo()); From 9669238af66ce0daf3ec2ecba5918f9ce9767297 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 17 Nov 2015 17:45:51 +0100 Subject: [PATCH 32/43] [Process] Fix PhpProcess with phpdbg runtime --- composer.json | 2 +- phpunit | 10 ++++++---- src/Symfony/Bridge/ProxyManager/composer.json | 2 +- .../Component/Process/PhpExecutableFinder.php | 7 ++++--- src/Symfony/Component/Process/PhpProcess.php | 7 +++++++ src/Symfony/Component/Process/Process.php | 2 +- .../Process/Tests/AbstractProcessTest.php | 20 ++++--------------- .../Process/Tests/PhpExecutableFinderTest.php | 2 ++ .../Process/Tests/PhpProcessTest.php | 4 ++++ 9 files changed, 30 insertions(+), 26 deletions(-) diff --git a/composer.json b/composer.json index 73f564c5fac37..4d0757a371e69 100644 --- a/composer.json +++ b/composer.json @@ -70,7 +70,7 @@ "monolog/monolog": "~1.3", "propel/propel1": "~1.6", "ircmaxell/password-compat": "~1.0", - "zendframework/zend-stdlib": "~2.5", + "zendframework/zend-stdlib": "~2.2", "ocramius/proxy-manager": "~0.3.1" }, "autoload": { diff --git a/phpunit b/phpunit index 0b8e2e3d3c0f6..2ab4f25e75cc2 100755 --- a/phpunit +++ b/phpunit @@ -11,7 +11,7 @@ */ // Please update when phpunit needs to be reinstalled with fresh deps: -// Cache-Id-Version: 2015-11-09 12:13 UTC +// Cache-Id-Version: 2015-11-18 14:14 UTC use Symfony\Component\Process\ProcessUtils; @@ -23,12 +23,15 @@ $PHPUNIT_VERSION = PHP_VERSION_ID >= 70000 ? '5.0' : '4.8'; $PHPUNIT_DIR = __DIR__.'/.phpunit'; $PHP = defined('PHP_BINARY') ? PHP_BINARY : 'php'; $PHP = ProcessUtils::escapeArgument($PHP); +if ('phpdbg' === PHP_SAPI) { + $PHP .= ' -qrr'; +} $COMPOSER = file_exists($COMPOSER = __DIR__.'/composer.phar') || ($COMPOSER = rtrim('\\' === DIRECTORY_SEPARATOR ? `where.exe composer.phar` : `which composer.phar`)) ? $PHP.' '.ProcessUtils::escapeArgument($COMPOSER) : 'composer'; -if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__FILE__) !== @file_get_contents("$PHPUNIT_DIR/.md5")) { +if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__FILE__) !== @file_get_contents("$PHPUNIT_DIR/.$PHPUNIT_VERSION.md5")) { // Build a standalone phpunit without symfony/yaml $oldPwd = getcwd(); @@ -49,7 +52,6 @@ if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__ $zip->close(); chdir("phpunit-$PHPUNIT_VERSION"); passthru("$COMPOSER remove --no-update symfony/yaml"); - passthru("$COMPOSER require --no-update phpunit/phpunit-mock-objects \"<=3.0.0\""); passthru("$COMPOSER require --dev --no-update symfony/phpunit-bridge \">=2.8@dev\""); passthru("$COMPOSER install --prefer-source --no-progress --ansi"); file_put_contents('phpunit', <<nul': 'rm -rf %s', str_replace('/', DIRECTORY_SEPARATOR, "phpunit-$PHPUNIT_VERSION/vendor/symfony/phpunit-bridge"))); symlink(realpath('../src/Symfony/Bridge/PhpUnit'), "phpunit-$PHPUNIT_VERSION/vendor/symfony/phpunit-bridge"); } - file_put_contents('.md5', md5_file(__FILE__)); + file_put_contents(".$PHPUNIT_VERSION.md5", md5_file(__FILE__)); chdir($oldPwd); } diff --git a/src/Symfony/Bridge/ProxyManager/composer.json b/src/Symfony/Bridge/ProxyManager/composer.json index 7efa4da4156e7..5f9bd8a2afbaa 100644 --- a/src/Symfony/Bridge/ProxyManager/composer.json +++ b/src/Symfony/Bridge/ProxyManager/composer.json @@ -18,7 +18,7 @@ "require": { "php": ">=5.3.3", "symfony/dependency-injection": "~2.3", - "zendframework/zend-stdlib": "~2.5", + "zendframework/zend-stdlib": "~2.2", "ocramius/proxy-manager": "~0.3.1" }, "require-dev": { diff --git a/src/Symfony/Component/Process/PhpExecutableFinder.php b/src/Symfony/Component/Process/PhpExecutableFinder.php index f8f57cc536a25..e8b77b73b6c12 100644 --- a/src/Symfony/Component/Process/PhpExecutableFinder.php +++ b/src/Symfony/Component/Process/PhpExecutableFinder.php @@ -41,8 +41,8 @@ public function find($includeArgs = true) } // PHP_BINARY return the current sapi executable - if (defined('PHP_BINARY') && PHP_BINARY && in_array(PHP_SAPI, array('cli', 'cli-server')) && is_file(PHP_BINARY)) { - return PHP_BINARY; + if (defined('PHP_BINARY') && PHP_BINARY && in_array(PHP_SAPI, array('cli', 'cli-server', 'phpdbg')) && is_file(PHP_BINARY)) { + return PHP_BINARY.($includeArgs ? ' '.implode(' ', $this->findArguments()) : ''); } if ($php = getenv('PHP_PATH')) { @@ -76,9 +76,10 @@ public function findArguments() { $arguments = array(); - // HHVM support if (defined('HHVM_VERSION')) { $arguments[] = '--php'; + } elseif ('phpdbg' === PHP_SAPI) { + $arguments[] = '-qrr'; } return $arguments; diff --git a/src/Symfony/Component/Process/PhpProcess.php b/src/Symfony/Component/Process/PhpProcess.php index 1adbd977adf88..4a2a2625ffae0 100644 --- a/src/Symfony/Component/Process/PhpProcess.php +++ b/src/Symfony/Component/Process/PhpProcess.php @@ -39,6 +39,13 @@ public function __construct($script, $cwd = null, array $env = null, $timeout = if (false === $php = $executableFinder->find()) { $php = null; } + if ('phpdbg' === PHP_SAPI) { + $file = tempnam(sys_get_temp_dir(), 'dbg'); + file_put_contents($file, $script); + register_shutdown_function('unlink', $file); + $php .= ' '.ProcessUtils::escapeArgument($file); + $script = null; + } parent::__construct($php, $cwd, $env, $script, $timeout, $options); } diff --git a/src/Symfony/Component/Process/Process.php b/src/Symfony/Component/Process/Process.php index ae11f89c10601..1675ad33994aa 100644 --- a/src/Symfony/Component/Process/Process.php +++ b/src/Symfony/Component/Process/Process.php @@ -242,7 +242,7 @@ public function start($callback = null) if (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 - $ptsWorkaround = fopen('php://fd/0', 'r'); + $ptsWorkaround = fopen(__FILE__, 'r'); } $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $this->env, $this->options); diff --git a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php index 62616eed347d4..1874290936d53 100644 --- a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php +++ b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php @@ -27,7 +27,7 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { $phpBin = new PhpExecutableFinder(); - self::$phpBin = $phpBin->find(); + self::$phpBin = 'phpdbg' === PHP_SAPI ? 'php' : $phpBin->find(); } public function testThatProcessDoesNotThrowWarningDuringRun() @@ -80,7 +80,7 @@ public function testStopWithTimeoutIsActuallyWorking() // exec is mandatory here since we send a signal to the process // see https://github.com/symfony/symfony/issues/5030 about prepending // command with exec - $p = $this->getProcess('exec php '.__DIR__.'/NonStopableProcess.php 3'); + $p = $this->getProcess('exec '.self::$phpBin.' '.__DIR__.'/NonStopableProcess.php 3'); $p->start(); usleep(100000); $start = microtime(true); @@ -410,7 +410,7 @@ public function testTTYCommand() $this->markTestSkipped('Windows does have /dev/tty support'); } - $process = $this->getProcess('echo "foo" >> /dev/null && php -r "usleep(100000);"'); + $process = $this->getProcess('echo "foo" >> /dev/null && '.self::$phpBin.' -r "usleep(100000);"'); $process->setTty(true); $process->start(); $this->assertTrue($process->isRunning()); @@ -633,7 +633,7 @@ public function testProcessThrowsExceptionWhenExternallySignaled() $termSignal = defined('SIGKILL') ? SIGKILL : 9; - $process = $this->getProcess('exec php -r "while (true) {}"'); + $process = $this->getProcess('exec '.self::$phpBin.' -r "while (true) {}"'); $process->start(); posix_kill($process->getPid(), $termSignal); @@ -659,18 +659,6 @@ public function testRestart() $this->assertNotEquals($process1->getOutput(), $process2->getOutput()); } - public function testPhpDeadlock() - { - $this->markTestSkipped('Can cause PHP to hang'); - - // Sleep doesn't work as it will allow the process to handle signals and close - // file handles from the other end. - $process = $this->getProcess(self::$phpBin.' -r "while (true) {}"'); - $process->start(); - - // PHP will deadlock when it tries to cleanup $process - } - public function testRunProcessWithTimeout() { $timeout = 0.5; diff --git a/src/Symfony/Component/Process/Tests/PhpExecutableFinderTest.php b/src/Symfony/Component/Process/Tests/PhpExecutableFinderTest.php index cd4abedc9df73..28bafe38ea1c6 100644 --- a/src/Symfony/Component/Process/Tests/PhpExecutableFinderTest.php +++ b/src/Symfony/Component/Process/Tests/PhpExecutableFinderTest.php @@ -68,6 +68,8 @@ public function testFindArguments() if (defined('HHVM_VERSION')) { $this->assertEquals($f->findArguments(), array('--php'), '::findArguments() returns HHVM arguments'); + } elseif ('phpdbg' === PHP_SAPI) { + $this->assertEquals($f->findArguments(), array('-qrr'), '::findArguments() returns phpdbg arguments'); } else { $this->assertEquals($f->findArguments(), array(), '::findArguments() returns no arguments'); } diff --git a/src/Symfony/Component/Process/Tests/PhpProcessTest.php b/src/Symfony/Component/Process/Tests/PhpProcessTest.php index 5dc546cc1ce6e..2cf79aa1a6d15 100644 --- a/src/Symfony/Component/Process/Tests/PhpProcessTest.php +++ b/src/Symfony/Component/Process/Tests/PhpProcessTest.php @@ -30,6 +30,10 @@ public function testNonBlockingWorks() public function testCommandLine() { + if ('phpdbg' === PHP_SAPI) { + $this->markTestSkipped('phpdbg SAPI is not supported by this test.'); + } + $process = new PhpProcess(<< Date: Thu, 19 Nov 2015 09:34:27 +0100 Subject: [PATCH 33/43] Remove tmp addition of zend-stdlib --- composer.json | 1 - src/Symfony/Bridge/ProxyManager/composer.json | 1 - 2 files changed, 2 deletions(-) diff --git a/composer.json b/composer.json index 4d0757a371e69..198070a402ee4 100644 --- a/composer.json +++ b/composer.json @@ -70,7 +70,6 @@ "monolog/monolog": "~1.3", "propel/propel1": "~1.6", "ircmaxell/password-compat": "~1.0", - "zendframework/zend-stdlib": "~2.2", "ocramius/proxy-manager": "~0.3.1" }, "autoload": { diff --git a/src/Symfony/Bridge/ProxyManager/composer.json b/src/Symfony/Bridge/ProxyManager/composer.json index 5f9bd8a2afbaa..82b119b164898 100644 --- a/src/Symfony/Bridge/ProxyManager/composer.json +++ b/src/Symfony/Bridge/ProxyManager/composer.json @@ -18,7 +18,6 @@ "require": { "php": ">=5.3.3", "symfony/dependency-injection": "~2.3", - "zendframework/zend-stdlib": "~2.2", "ocramius/proxy-manager": "~0.3.1" }, "require-dev": { From f15e6e0ba924096edd170926ec09a9af6da514f4 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 19 Nov 2015 13:33:23 +0100 Subject: [PATCH 34/43] [Process] Fix trailing space in PHP binary finder --- src/Symfony/Component/Process/PhpExecutableFinder.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Process/PhpExecutableFinder.php b/src/Symfony/Component/Process/PhpExecutableFinder.php index e8b77b73b6c12..fb297825fe364 100644 --- a/src/Symfony/Component/Process/PhpExecutableFinder.php +++ b/src/Symfony/Component/Process/PhpExecutableFinder.php @@ -35,14 +35,17 @@ public function __construct() */ public function find($includeArgs = true) { + $args = $this->findArguments(); + $args = $includeArgs && $args ? ' '.implode(' ', $args) : ''; + // HHVM support if (defined('HHVM_VERSION')) { - return (getenv('PHP_BINARY') ?: PHP_BINARY).($includeArgs ? ' '.implode(' ', $this->findArguments()) : ''); + return (getenv('PHP_BINARY') ?: PHP_BINARY).$args; } // PHP_BINARY return the current sapi executable if (defined('PHP_BINARY') && PHP_BINARY && in_array(PHP_SAPI, array('cli', 'cli-server', 'phpdbg')) && is_file(PHP_BINARY)) { - return PHP_BINARY.($includeArgs ? ' '.implode(' ', $this->findArguments()) : ''); + return PHP_BINARY.$args; } if ($php = getenv('PHP_PATH')) { From 331a0469c10af2a229d411828fa316ea408706c8 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Tue, 20 Oct 2015 14:28:37 +0200 Subject: [PATCH 35/43] [DependencyInjection] Unescape parameters for all types of injection --- .../DependencyInjection/ContainerBuilder.php | 4 ++-- .../Tests/ContainerBuilderTest.php | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index 2c4460f394a09..6c52c47b651a9 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -895,7 +895,7 @@ public function createService(Definition $definition, $id, $tryProxy = true) $this->callMethod($service, $call); } - $properties = $this->resolveServices($parameterBag->resolveValue($definition->getProperties())); + $properties = $this->resolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getProperties()))); foreach ($properties as $name => $value) { $service->$name = $value; } @@ -1054,7 +1054,7 @@ private function callMethod($service, $call) } } - call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->resolveValue($call[1]))); + call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->unescapeValue($this->getParameterBag()->resolveValue($call[1])))); } /** diff --git a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php index e215b9d00a394..3a369d9d2ed18 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php @@ -305,6 +305,24 @@ public function testCreateServiceMethodCalls() $this->assertEquals(array('bar', $builder->get('bar')), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments'); } + public function testCreateServiceMethodCallsWithEscapedParam() + { + $builder = new ContainerBuilder(); + $builder->register('bar', 'stdClass'); + $builder->register('foo1', 'FooClass')->addMethodCall('setBar', array(array('%%unescape_it%%'))); + $builder->setParameter('value', 'bar'); + $this->assertEquals(array('%unescape_it%'), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments'); + } + + public function testCreateServiceProperties() + { + $builder = new ContainerBuilder(); + $builder->register('bar', 'stdClass'); + $builder->register('foo1', 'FooClass')->setProperty('bar', array('%value%', new Reference('bar'), '%%unescape_it%%')); + $builder->setParameter('value', 'bar'); + $this->assertEquals(array('bar', $builder->get('bar'), '%unescape_it%'), $builder->get('foo1')->bar, '->createService() replaces the values in the properties'); + } + public function testCreateServiceConfigurator() { $builder = new ContainerBuilder(); From eec6fbc768a3c3b5348641f241f1f4a9d90a303b Mon Sep 17 00:00:00 2001 From: Daniel Wehner Date: Wed, 18 Nov 2015 11:39:29 +0100 Subject: [PATCH 36/43] Sent out a status text for unknown HTTP headers. --- src/Symfony/Component/HttpFoundation/Response.php | 2 +- src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpFoundation/Response.php b/src/Symfony/Component/HttpFoundation/Response.php index 3c37187cd1e6b..ad55f8772af47 100644 --- a/src/Symfony/Component/HttpFoundation/Response.php +++ b/src/Symfony/Component/HttpFoundation/Response.php @@ -412,7 +412,7 @@ public function setStatusCode($code, $text = null) } if (null === $text) { - $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : ''; + $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : 'unknown status'; return $this; } diff --git a/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php b/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php index 72e143f9da438..f0539079c949c 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/ResponseTest.php @@ -647,7 +647,7 @@ public function getStatusCodeFixtures() array('200', null, 'OK'), array('200', false, ''), array('200', 'foo', 'foo'), - array('199', null, ''), + array('199', null, 'unknown status'), array('199', false, ''), array('199', 'foo', 'foo'), ); From f1fd7686c5fdc191a599d1e77d9748365f8a19cf Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Tue, 10 Nov 2015 16:18:07 +0100 Subject: [PATCH 37/43] fix potential timing attack issue --- ...PersistentTokenBasedRememberMeServices.php | 3 +- .../TokenBasedRememberMeServices.php | 28 ++----------------- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/src/Symfony/Component/Security/Http/RememberMe/PersistentTokenBasedRememberMeServices.php b/src/Symfony/Component/Security/Http/RememberMe/PersistentTokenBasedRememberMeServices.php index f800668a5e2b7..0fffbfe4f992d 100644 --- a/src/Symfony/Component/Security/Http/RememberMe/PersistentTokenBasedRememberMeServices.php +++ b/src/Symfony/Component/Security/Http/RememberMe/PersistentTokenBasedRememberMeServices.php @@ -21,6 +21,7 @@ use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Util\SecureRandomInterface; use Psr\Log\LoggerInterface; +use Symfony\Component\Security\Core\Util\StringUtils; /** * Concrete implementation of the RememberMeServicesInterface which needs @@ -90,7 +91,7 @@ protected function processAutoLoginCookie(array $cookieParts, Request $request) list($series, $tokenValue) = $cookieParts; $persistentToken = $this->tokenProvider->loadTokenBySeries($series); - if ($persistentToken->getTokenValue() !== $tokenValue) { + if (!StringUtils::equals($persistentToken->getTokenValue(), $tokenValue)) { throw new CookieTheftException('This token was already used. The account is possibly compromised.'); } diff --git a/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeServices.php b/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeServices.php index de662fb3d8b90..1aea5fd76d78d 100644 --- a/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeServices.php +++ b/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeServices.php @@ -17,6 +17,7 @@ use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\User\UserInterface; +use Symfony\Component\Security\Core\Util\StringUtils; /** * Concrete implementation of the RememberMeServicesInterface providing @@ -53,7 +54,7 @@ protected function processAutoLoginCookie(array $cookieParts, Request $request) throw new \RuntimeException(sprintf('The UserProviderInterface implementation must return an instance of UserInterface, but returned "%s".', get_class($user))); } - if (true !== $this->compareHashes($hash, $this->generateCookieHash($class, $username, $expires, $user->getPassword()))) { + if (!StringUtils::equals($this->generateCookieHash($class, $username, $expires, $user->getPassword()), $hash)) { throw new AuthenticationException('The cookie\'s hash is invalid.'); } @@ -64,31 +65,6 @@ protected function processAutoLoginCookie(array $cookieParts, Request $request) return $user; } - /** - * Compares two hashes using a constant-time algorithm to avoid (remote) - * timing attacks. - * - * This is the same implementation as used in the BasePasswordEncoder. - * - * @param string $hash1 The first hash - * @param string $hash2 The second hash - * - * @return bool true if the two hashes are the same, false otherwise - */ - private function compareHashes($hash1, $hash2) - { - if (strlen($hash1) !== $c = strlen($hash2)) { - return false; - } - - $result = 0; - for ($i = 0; $i < $c; ++$i) { - $result |= ord($hash1[$i]) ^ ord($hash2[$i]); - } - - return 0 === $result; - } - /** * {@inheritdoc} */ From 557ea17eeb21817f3c18147b56c86172794a75df Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Tue, 10 Nov 2015 16:41:37 +0100 Subject: [PATCH 38/43] mitigate CSRF timing attack vulnerability --- .../Csrf/CsrfProvider/DefaultCsrfProvider.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php b/src/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php index 31ea45f3d5261..ab62df9a04b6c 100644 --- a/src/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php +++ b/src/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Form\Extension\Csrf\CsrfProvider; +use Symfony\Component\Security\Core\Util\StringUtils; + /** * Default implementation of CsrfProviderInterface. * @@ -54,6 +56,16 @@ public function generateCsrfToken($intention) */ public function isCsrfTokenValid($intention, $token) { + $expectedToken = $this->generateCsrfToken($intention); + + if (function_exists('hash_equals')) { + return hash_equals($expectedToken, $token); + } + + if (class_exists('Symfony\Component\Security\Core\Util\StringUtils')) { + return StringUtils::equals($expectedToken, $token); + } + return $token === $this->generateCsrfToken($intention); } From 819aa54fe489a403c0a3fe00fd0840ed53a15609 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Tue, 10 Nov 2015 16:51:36 +0100 Subject: [PATCH 39/43] prevent timing attacks in digest auth listener --- .../Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php | 2 +- .../Security/Http/Firewall/DigestAuthenticationListener.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php b/src/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php index ab62df9a04b6c..f323de0fd2d40 100644 --- a/src/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php +++ b/src/Symfony/Component/Form/Extension/Csrf/CsrfProvider/DefaultCsrfProvider.php @@ -66,7 +66,7 @@ public function isCsrfTokenValid($intention, $token) return StringUtils::equals($expectedToken, $token); } - return $token === $this->generateCsrfToken($intention); + return $token === $expectedToken; } /** diff --git a/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php index a88250bff386c..5e1159f733105 100644 --- a/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php @@ -13,6 +13,7 @@ use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; +use Symfony\Component\Security\Core\Util\StringUtils; use Symfony\Component\Security\Http\EntryPoint\DigestAuthenticationEntryPoint; use Psr\Log\LoggerInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; @@ -99,7 +100,7 @@ public function handle(GetResponseEvent $event) return; } - if ($serverDigestMd5 !== $digestAuth->getResponse()) { + if (!StringUtils::equals($serverDigestMd5, $digestAuth->getResponse())) { if (null !== $this->logger) { $this->logger->debug(sprintf('Expected response: "%s" but received: "%s"; is AuthenticationDao returning clear text passwords?', $serverDigestMd5, $digestAuth->getResponse())); } From f88e600833b6822db5873e25deaefd14948e4878 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Thu, 5 Nov 2015 23:29:27 +0100 Subject: [PATCH 40/43] migrate session after remember me authentication --- .../Http/Firewall/RememberMeListener.php | 8 +++ .../Http/Firewall/RememberMeListenerTest.php | 63 +++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php b/src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php index 942e53787a1bc..52a231c70e104 100644 --- a/src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php @@ -20,6 +20,7 @@ use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\SecurityEvents; use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategy; /** * RememberMeListener implements authentication capabilities via a cookie. @@ -33,6 +34,7 @@ class RememberMeListener implements ListenerInterface private $authenticationManager; private $logger; private $dispatcher; + private $sessionStrategy; /** * Constructor. @@ -50,6 +52,7 @@ public function __construct(SecurityContextInterface $securityContext, RememberM $this->authenticationManager = $authenticationManager; $this->logger = $logger; $this->dispatcher = $dispatcher; + $this->sessionStrategy = new SessionAuthenticationStrategy(SessionAuthenticationStrategy::MIGRATE); } /** @@ -70,6 +73,11 @@ public function handle(GetResponseEvent $event) try { $token = $this->authenticationManager->authenticate($token); + + if ($request->hasSession() && $request->getSession()->isStarted()) { + $this->sessionStrategy->onAuthentication($request, $token); + } + $this->securityContext->setToken($token); if (null !== $this->dispatcher) { diff --git a/src/Symfony/Component/Security/Tests/Http/Firewall/RememberMeListenerTest.php b/src/Symfony/Component/Security/Tests/Http/Firewall/RememberMeListenerTest.php index 067cacb6cbdad..ad96243d47905 100644 --- a/src/Symfony/Component/Security/Tests/Http/Firewall/RememberMeListenerTest.php +++ b/src/Symfony/Component/Security/Tests/Http/Firewall/RememberMeListenerTest.php @@ -138,6 +138,69 @@ public function testOnCoreSecurity() $listener->handle($event); } + public function testSessionStrategy() + { + list($listener, $tokenStorage, $service, $manager) = $this->getListener(false, true, true); + + $tokenStorage + ->expects($this->once()) + ->method('getToken') + ->will($this->returnValue(null)) + ; + + $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface'); + $service + ->expects($this->once()) + ->method('autoLogin') + ->will($this->returnValue($token)) + ; + + $tokenStorage + ->expects($this->once()) + ->method('setToken') + ->with($this->equalTo($token)) + ; + + $manager + ->expects($this->once()) + ->method('authenticate') + ->will($this->returnValue($token)) + ; + + $session = $this->getMock('\Symfony\Component\HttpFoundation\Session\SessionInterface'); + $session + ->expects($this->once()) + ->method('isStarted') + ->will($this->returnValue(true)) + ; + $session + ->expects($this->once()) + ->method('migrate') + ; + + $request = $this->getMock('\Symfony\Component\HttpFoundation\Request'); + $request + ->expects($this->any()) + ->method('hasSession') + ->will($this->returnValue(true)) + ; + + $request + ->expects($this->any()) + ->method('getSession') + ->will($this->returnValue($session)) + ; + + $event = $this->getGetResponseEvent(); + $event + ->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue($request)) + ; + + $listener->handle($event); + } + protected function getGetResponseEvent() { return $this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false); From 4e44295288affd971a553241a2a66a4cf431d2d6 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 23 Nov 2015 11:42:57 +0100 Subject: [PATCH 41/43] updated CHANGELOG for 2.3.35 --- CHANGELOG-2.3.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG-2.3.md b/CHANGELOG-2.3.md index 9c9d593aa08c7..4974aa08b3a2c 100644 --- a/CHANGELOG-2.3.md +++ b/CHANGELOG-2.3.md @@ -7,6 +7,25 @@ in 2.3 minor versions. To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v2.3.0...v2.3.1 +* 2.3.35 (2015-11-23) + + * security #16631 CVE-2015-8124: Session Fixation in the "Remember Me" Login Feature (xabbuh) + * security #16630 CVE-2015-8125: Potential Remote Timing Attack Vulnerability in Security Remember-Me Service (xabbuh) + * bug #16588 Sent out a status text for unknown HTTP headers. (dawehner) + * bug #16295 [DependencyInjection] Unescape parameters for all types of injection (Nicofuma) + * bug #16574 [Process] Fix PhpProcess with phpdbg runtime (nicolas-grekas) + * bug #16352 Fix the server variables in the router_*.php files (leofeyer) + * bug #16537 [Validator] Allow an empty path with a non empty fragment or a query (jakzal) + * bug #16528 [Translation] Add support for Armenian pluralization. (marcosdsanchez) + * bug #16510 [Process] fix Proccess run with pts enabled (ewgRa) + * bug #16292 fix race condition at mkdir (#16258) (ewgRa) + * bug #16462 [PropertyAccess] Fix dynamic property accessing. (dunglas) + * bug #16294 [PropertyAccess] Major performance improvement (dunglas) + * bug #16331 fixed Twig deprecation notices (fabpot) + * bug #16306 [DoctrineBridge] Fix issue which prevent the profiler to explain a query (Baachi) + * bug #16359 Use mb_detect_encoding with $strict = true (nicolas-grekas) + * bug #16144 [Security] don't allow to install the split Security packages (xabbuh) + * 2.3.34 (2015-10-27) * bug #16288 [Process] Inherit env vars by default in PhpProcess (nicolas-grekas) From 6836bc34b7e60da66014c8842718b5566abe36fa Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 23 Nov 2015 11:44:00 +0100 Subject: [PATCH 42/43] update CONTRIBUTORS for 2.3.35 --- CONTRIBUTORS.md | 52 +++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index b78fd1ff5ee94..9b30d35c1a0ae 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -51,19 +51,19 @@ Symfony is the result of the work of many people who made the code better - Florin Patan (florinpatan) - Eric Clemmons (ericclemmons) - Andrej Hudec (pulzarraider) - - Deni - Maxime Steinhausser (ogizanagi) + - Deni - Henrik Westphal (snc) - Dariusz Górecki (canni) - Gábor Egyed (1ed) - Christian Raue - Arnout Boks (aboks) - - Michel Weimerskirch (mweimerskirch) - Kevin Bond (kbond) + - Michel Weimerskirch (mweimerskirch) + - Douglas Greenshields (shieldo) - Lee McDermott - Brandon Turner - Luis Cordova (cordoval) - - Douglas Greenshields (shieldo) - Daniel Holmes (dholmes) - Bart van den Burg (burgov) - Jordan Alliot (jalliot) @@ -85,15 +85,17 @@ Symfony is the result of the work of many people who made the code better - Adrien Brault (adrienbrault) - excelwebzone - Jacob Dreesen (jdreesen) + - Michal Piotrowski (eventhorizon) + - Peter Kokot (maastermedia) - Fabien Pennequin (fabienpennequin) - Peter Rehm (rpet) - - Peter Kokot (maastermedia) + - Pierre du Plessis (pierredup) - Alexander Schwenn (xelaris) - Gordon Franke (gimler) - Robert Schönthal (digitalkaoz) - Jérémy DERUSSÉ (jderusse) - Dariusz Ruminski - - Michal Piotrowski (eventhorizon) + - Joshua Thijssen - Stefano Sala (stefano.sala) - David Buchmann (dbu) - Issei Murasawa (issei_m) @@ -103,7 +105,6 @@ Symfony is the result of the work of many people who made the code better - Sebastian Hörl (blogsh) - Daniel Gomes (danielcsgomes) - Hidenori Goto (hidenorigoto) - - Joshua Thijssen - Guilherme Blanco (guilhermeblanco) - Pablo Godel (pgodel) - Vladimir Reznichenko (kalessil) @@ -116,6 +117,7 @@ Symfony is the result of the work of many people who made the code better - Clemens Tolboom - Helmer Aaviksoo - Baptiste Clavié (talus) + - Tugdual Saunier (tucksaun) - Hiromi Hishida (77web) - Matthieu Ouellette-Vachon (maoueh) - Michał Pipa (michal.pipa) @@ -124,8 +126,7 @@ Symfony is the result of the work of many people who made the code better - Artur Kotyrba - Rouven Weßling (realityking) - Charles Sarrazin (csarrazi) - - Pierre du Plessis (pierredup) - - Tugdual Saunier (tucksaun) + - Warnar Boekkooi (boekkooi) - Andréia Bohner (andreia) - Dmitrii Chekaliuk (lazyhammer) - Clément JOBEILI (dator) @@ -159,15 +160,17 @@ Symfony is the result of the work of many people who made the code better - Justin Hileman (bobthecow) - Michele Orselli (orso) - Sven Paulus (subsven) - - Warnar Boekkooi (boekkooi) - Lars Strojny (lstrojny) + - Daniel Wehner - Rui Marinho (ruimarinho) + - Evgeniy (ewgraf) - Julien Brochet (mewt) - Sergey Linnik (linniksa) - Jáchym Toušek - Marcel Beerta (mazen) - Vincent AUBERT (vincent) - julien pauli (jpauli) + - Florian Lonqueu-Brochard (florianlb) - Francois Zaninotto - Alexander Kotynia (olden) - Daniel Tschinder @@ -185,6 +188,7 @@ Symfony is the result of the work of many people who made the code better - Eugene Leonovich (rybakit) - Joseph Rouff (rouffj) - Félix Labrecque (woodspire) + - Tomáš Votruba (tomas_votruba) - GordonsLondon - Jan Sorgalla (jsor) - Ray @@ -201,17 +205,19 @@ Symfony is the result of the work of many people who made the code better - Beau Simensen (simensen) - Robert Kiss (kepten) - Ruben Gonzalez (rubenrua) + - Marcos Sánchez - Kim Hemsø Rasmussen (kimhemsoe) - Diego Saint Esteben (dosten) - - Florian Lonqueu-Brochard (florianlb) - Tom Van Looy (tvlooy) - Wouter Van Hecke - Peter Kruithof (pkruithof) - Michael Holm (hollo) - Marc Weistroff (futurecat) + - Blanchon Vincent (blanchonvincent) - Dawid Nowak - Kristen Gilden (kgilden) - Chris Smith (cs278) + - Richard van Laak (rvanlaak) - Florian Klein (docteurklein) - Manuel Kiessling (manuelkiessling) - Daniel Wehner @@ -245,7 +251,7 @@ Symfony is the result of the work of many people who made the code better - Giorgio Premi - Erin Millard - Matthew Lewinski (lewinski) - - Marcos Sánchez + - Antonio J. García Lagar (ajgarlag) - alquerci - Francesco Levorato - Vitaliy Zakharov (zakharovvi) @@ -255,14 +261,11 @@ Symfony is the result of the work of many people who made the code better - Christian Gärtner (dagardner) - Tomasz Kowalczyk (thunderer) - François-Xavier de Guillebon (de-gui_f) - - Daniel Wehner - Felix Labrecque - Yaroslav Kiliba - Stepan Anchugov (kix) - Terje Bråten - - Evgeniy (ewgraf) - Robbert Klarenbeek (robbertkl) - - Blanchon Vincent (blanchonvincent) - hossein zolfi (ocean) - Clément Gautier (clementgautier) - Eduardo Gulias (egulias) @@ -285,6 +288,7 @@ Symfony is the result of the work of many people who made the code better - Shein Alexey - Joe Lencioni - Daniel Tschinder + - Diego Agulló (aeoris) - Kai - Lee Rowlands - Maximilian Reichel (phramz) @@ -313,8 +317,9 @@ Symfony is the result of the work of many people who made the code better - Thomas Lallement (raziel057) - Jan Schumann - Niklas Fiekas + - Mark Challoner (markchalloner) + - Markus Bachmann (baachi) - lancergr - - Antonio J. García Lagar (ajgarlag) - Olivier Dolbeau (odolbeau) - Roumen Damianoff (roumen) - vagrant @@ -365,9 +370,10 @@ Symfony is the result of the work of many people who made the code better - Daniel Beyer - Andrew Udvare (audvare) - alexpods - - Richard van Laak (rvanlaak) + - Tristan Darricau (nicofuma) - Erik Trapman (eriktrapman) - De Cock Xavier (xdecock) + - Possum - Scott Arciszewski - Norbert Orzechowicz (norzechowicz) - Matthijs van den Bos (matthijs) @@ -381,6 +387,7 @@ Symfony is the result of the work of many people who made the code better - Dawid Pakuła (zulusx) - Florian Rey (nervo) - Rodrigo Borrego Bernabé (rodrigobb) + - Leo Feyer - MatTheCat - John Bafford (jbafford) - Denis Gorbachev (starfall) @@ -410,7 +417,6 @@ Symfony is the result of the work of many people who made the code better - Christopher Davis (chrisguitarguy) - alcaeus - vitaliytv - - Markus Bachmann (baachi) - Sebastian Blum - aubx - Ricky Su (ricky) @@ -475,6 +481,7 @@ Symfony is the result of the work of many people who made the code better - Tiago Brito (blackmx) - Richard van den Brand (ricbra) - develop + - Hidde Wieringa - Mark Sonnabaum - Alexander Obuhovich (aik099) - jochenvdv @@ -496,7 +503,6 @@ Symfony is the result of the work of many people who made the code better - avorobiev - Venu - Lars Vierbergen - - Mark Challoner - Dennis Hotson - Andrew Tchircoff (andrewtch) - michaelwilliams @@ -534,7 +540,6 @@ Symfony is the result of the work of many people who made the code better - Rafał Wrzeszcz (rafalwrzeszcz) - Reen Lokum - Martin Parsiegla (spea) - - Possum - Denis Charrier (brucewouaigne) - Quentin Schuler - Pierre Vanliefland (pvanliefland) @@ -558,12 +563,10 @@ Symfony is the result of the work of many people who made the code better - Patrick Allaert - Gustavo Falco (gfalco) - Matt Robinson (inanimatt) - - Tristan Darricau (nicofuma) - Aleksey Podskrebyshev - Steffen Roßkamp - David Marín Carreño (davefx) - Jörn Lang (j.lang) - - Leo Feyer - mwsaz - Benoît Bourgeois - corphi @@ -589,7 +592,6 @@ Symfony is the result of the work of many people who made the code better - Balazs Csaba (balazscsaba2006) - Harry Walter (haswalt) - Johnson Page (jwpage) - - Tomáš Votruba (tomas_votruba) - Michael Roterman (wtfzdotnet) - Arno Geurts - Adán Lobato (adanlobato) @@ -638,6 +640,7 @@ Symfony is the result of the work of many people who made the code better - Jérôme Vasseur - Sander Coolen (scoolen) - Nicolas Le Goff (nlegoff) + - Anne-Sophie Bachelard (annesophie) - Manuele Menozzi - Anton Babenko (antonbabenko) - Irmantas Šiupšinskas (irmantas) @@ -921,7 +924,6 @@ Symfony is the result of the work of many people who made the code better - Shane Preece (shane) - wusuopu - povilas - - Diego Agulló - Alessandro Tagliapietra (alex88) - Biji (biji) - Gunnar Lium (gunnarlium) @@ -1082,7 +1084,6 @@ Symfony is the result of the work of many people who made the code better - grifx - Robert Campbell - Matt Lehner - - Hidde Wieringa - Hein Zaw Htet™ - Ruben Kruiswijk - Michael J @@ -1106,7 +1107,6 @@ Symfony is the result of the work of many people who made the code better - Alan Chen - Maerlyn - Even André Fiskvik - - Diego Agulló - Dane Powell - Gerrit Drost - Lenar Lõhmus @@ -1219,6 +1219,7 @@ Symfony is the result of the work of many people who made the code better - Sam Williams - Adrian Philipp - James Michael DuPont + - Eugene Wissner - Kasperki - Tammy D - Ondrej Slinták @@ -1276,6 +1277,7 @@ Symfony is the result of the work of many people who made the code better - arduanov - sualko - Nicolas Roudaire + - Jérôme Vasseur - Alfonso (afgar) - Andreas Forsblom (aforsblo) - Alex Olmos (alexolmos) From 3b790dd0da995bd2c3da495e5ed2ee0a8f723d29 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 23 Nov 2015 11:44:06 +0100 Subject: [PATCH 43/43] updated VERSION for 2.3.35 --- src/Symfony/Component/HttpKernel/Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index d0defb1c9cfc7..be3ea8d1ee900 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -58,12 +58,12 @@ abstract class Kernel implements KernelInterface, TerminableInterface protected $startTime; protected $loadClassCache; - const VERSION = '2.3.35-DEV'; + const VERSION = '2.3.35'; const VERSION_ID = 20335; const MAJOR_VERSION = 2; const MINOR_VERSION = 3; const RELEASE_VERSION = 35; - const EXTRA_VERSION = 'DEV'; + const EXTRA_VERSION = ''; /** * Constructor.