From 5f4015c3cded4f20f6333c60bd52156bc70b0086 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 3 Jul 2015 07:54:45 +0200 Subject: [PATCH 01/11] Enhance hhvm test skip message --- src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php b/src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php index 115f599f56..563bd0997e 100644 --- a/src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php +++ b/src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php @@ -40,7 +40,7 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase public function testCompileTimeError() { if (defined('HHVM_VERSION')) { - $this->markTestSkipped('HHVM behaves differently in this test case.'); + $this->markTestSkipped('HHVM does not trigger strict notices.'); } // the ContextErrorException must not be loaded to test the workaround From da5218f2ae7fb3724c08dbe047e196766374ac49 Mon Sep 17 00:00:00 2001 From: Dave Hulbert Date: Fri, 3 Jul 2015 22:02:27 +0100 Subject: [PATCH 02/11] Remove var not used due to returning early (introduced in 8982c32) --- src/Symfony/Component/HttpFoundation/Request.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php index 8babb395c5..84b3a69ade 100644 --- a/src/Symfony/Component/HttpFoundation/Request.php +++ b/src/Symfony/Component/HttpFoundation/Request.php @@ -476,7 +476,6 @@ class Request */ public function __toString() { - $content = ''; try { $content = $this->getContent(); } catch (\LogicException $e) { From 9b0dfd426755d24701ccd16ddf83e9d11122693d Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Sun, 5 Jul 2015 10:40:11 +0200 Subject: [PATCH 03/11] [Security] allow to use `method` in XML configs Before this change, you always had to use the `methods` key which is inconsistent compared to other options like `roles` and `ips` for which it was possible to use their singular versions. --- .../SecurityBundle/DependencyInjection/MainConfiguration.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php index 73498f76da..c79868c523 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php @@ -158,6 +158,7 @@ class MainConfiguration implements ConfigurationInterface ->cannotBeOverwritten() ->prototype('array') ->fixXmlConfig('ip') + ->fixXmlConfig('method') ->children() ->scalarNode('requires_channel')->defaultNull()->end() ->scalarNode('path') From 0096266009223b569172a978a9083e80efd31754 Mon Sep 17 00:00:00 2001 From: Daniel Wehner Date: Fri, 26 Jun 2015 15:47:25 +0200 Subject: [PATCH 04/11] Add a way to reset the singleton --- .../HttpFoundation/File/MimeType/MimeTypeGuesser.php | 7 +++++++ .../Component/HttpFoundation/Tests/File/FileTest.php | 12 ++++++++++++ .../Tests/File/Fixtures/other-file.example | 0 3 files changed, 19 insertions(+) create mode 100644 src/Symfony/Component/HttpFoundation/Tests/File/Fixtures/other-file.example diff --git a/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php b/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php index 81b2b02bd4..4ae6487bad 100644 --- a/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php +++ b/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php @@ -67,6 +67,13 @@ class MimeTypeGuesser implements MimeTypeGuesserInterface return self::$instance; } + /** + * Resets the singleton instance. + */ + public static function reset() { + self::$instance = null; + } + /** * Registers all natively provided mime type guessers. */ diff --git a/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php b/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php index 1f89c391d5..f325d003c6 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php @@ -45,6 +45,18 @@ class FileTest extends \PHPUnit_Framework_TestCase $this->assertEquals('gif', $file->guessExtension()); } + public function testGuessExtensionWithReset() { + $file = new File(__DIR__.'/Fixtures/other-file.example'); + $guesser = $this->createMockGuesser($file->getPathname(), 'image/gif'); + MimeTypeGuesser::getInstance()->register($guesser); + + $this->assertEquals('gif', $file->guessExtension()); + + MimeTypeGuesser::reset(); + + $this->assertNull($file->guessExtension()); + } + public function testConstructWhenFileNotExists() { $this->setExpectedException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException'); diff --git a/src/Symfony/Component/HttpFoundation/Tests/File/Fixtures/other-file.example b/src/Symfony/Component/HttpFoundation/Tests/File/Fixtures/other-file.example new file mode 100644 index 0000000000..e69de29bb2 From e3b225f4ba5e1cd220eb4f525d40d66a9c8d61e9 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sun, 5 Jul 2015 15:20:07 +0200 Subject: [PATCH 05/11] fixed CS --- .../Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php | 3 ++- src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php b/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php index 4ae6487bad..ecc8a30ac2 100644 --- a/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php +++ b/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php @@ -70,7 +70,8 @@ class MimeTypeGuesser implements MimeTypeGuesserInterface /** * Resets the singleton instance. */ - public static function reset() { + public static function reset() + { self::$instance = null; } diff --git a/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php b/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php index f325d003c6..08b7cccb52 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php @@ -45,7 +45,8 @@ class FileTest extends \PHPUnit_Framework_TestCase $this->assertEquals('gif', $file->guessExtension()); } - public function testGuessExtensionWithReset() { + public function testGuessExtensionWithReset() + { $file = new File(__DIR__.'/Fixtures/other-file.example'); $guesser = $this->createMockGuesser($file->getPathname(), 'image/gif'); MimeTypeGuesser::getInstance()->register($guesser); From 464b67ed09668168cabfd77b6b3cfa26ceb1b0b0 Mon Sep 17 00:00:00 2001 From: Dariusz Ruminski Date: Sun, 5 Jul 2015 16:01:47 +0200 Subject: [PATCH 06/11] fix CS --- .../Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php | 4 ++-- src/Symfony/Component/BrowserKit/Cookie.php | 1 - .../Component/DependencyInjection/Dumper/PhpDumper.php | 8 ++++---- src/Symfony/Component/DomCrawler/Tests/FormTest.php | 1 - src/Symfony/Component/Form/PreloadedExtension.php | 6 +++--- .../Component/HttpFoundation/Tests/RequestTest.php | 1 - .../Tests/EventListener/FragmentListenerTest.php | 1 - .../Component/Routing/Matcher/Dumper/PhpMatcherDumper.php | 6 +++--- 8 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php b/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php index eacbd4f3c9..482b4d7ed7 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php @@ -91,7 +91,7 @@ class DbalLoggerTest extends \PHPUnit_Framework_TestCase 'utf8' => 'foo', array( 'nonutf8' => DbalLogger::BINARY_DATA_VALUE, - ) + ), ) ) ; @@ -100,7 +100,7 @@ class DbalLoggerTest extends \PHPUnit_Framework_TestCase 'utf8' => 'foo', array( 'nonutf8' => "\x7F\xFF", - ) + ), )); } diff --git a/src/Symfony/Component/BrowserKit/Cookie.php b/src/Symfony/Component/BrowserKit/Cookie.php index 18b9324403..e690cdacd5 100644 --- a/src/Symfony/Component/BrowserKit/Cookie.php +++ b/src/Symfony/Component/BrowserKit/Cookie.php @@ -82,7 +82,6 @@ class Cookie $this->expires = $timestampAsDateTime->getTimestamp(); } - } /** diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index 64d5fb9bb6..db0a9f97d2 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -797,8 +797,8 @@ EOF; if (count($scopes = $this->container->getScopes()) > 0) { $code .= "\n"; - $code .= " \$this->scopes = ".$this->dumpValue($scopes).";\n"; - $code .= " \$this->scopeChildren = ".$this->dumpValue($this->container->getScopeChildren()).";\n"; + $code .= ' $this->scopes = '.$this->dumpValue($scopes).";\n"; + $code .= ' $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren()).";\n"; } $code .= $this->addMethodMap(); @@ -843,8 +843,8 @@ EOF; $code .= "\n"; if (count($scopes = $this->container->getScopes()) > 0) { - $code .= " \$this->scopes = ".$this->dumpValue($scopes).";\n"; - $code .= " \$this->scopeChildren = ".$this->dumpValue($this->container->getScopeChildren()).";\n"; + $code .= ' $this->scopes = '.$this->dumpValue($scopes).";\n"; + $code .= ' $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren()).";\n"; } else { $code .= " \$this->scopes = array();\n"; $code .= " \$this->scopeChildren = array();\n"; diff --git a/src/Symfony/Component/DomCrawler/Tests/FormTest.php b/src/Symfony/Component/DomCrawler/Tests/FormTest.php index c657e3639e..79b1a3b118 100644 --- a/src/Symfony/Component/DomCrawler/Tests/FormTest.php +++ b/src/Symfony/Component/DomCrawler/Tests/FormTest.php @@ -805,7 +805,6 @@ class FormTest extends \PHPUnit_Framework_TestCase */ public function testFormRegistrySetArrayOnNotCompoundField() { - $registry = new FormFieldRegistry(); $registry->add($this->getFormFieldMock('bar')); diff --git a/src/Symfony/Component/Form/PreloadedExtension.php b/src/Symfony/Component/Form/PreloadedExtension.php index f70ca8d455..6b4f9ef6a1 100644 --- a/src/Symfony/Component/Form/PreloadedExtension.php +++ b/src/Symfony/Component/Form/PreloadedExtension.php @@ -38,9 +38,9 @@ class PreloadedExtension implements FormExtensionInterface /** * Creates a new preloaded extension. * - * @param FormTypeInterface[] $types The types that the extension should support. - * @param array[FormTypeExtensionInterface[]] typeExtensions The type extensions that the extension should support. - * @param FormTypeGuesserInterface|null $typeGuesser The guesser that the extension should support. + * @param FormTypeInterface[] $types The types that the extension should support. + * @param array[FormTypeExtensionInterface[]] $typeExtensions The type extensions that the extension should support. + * @param FormTypeGuesserInterface|null $typeGuesser The guesser that the extension should support. */ public function __construct(array $types, array $typeExtensions, FormTypeGuesserInterface $typeGuesser = null) { diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php index 990d3a842d..366b555f92 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php @@ -939,7 +939,6 @@ class RequestTest extends \PHPUnit_Framework_TestCase } /** - * * @dataProvider getContentCantBeCalledTwiceWithResourcesProvider */ public function testGetContentCanBeCalledTwiceWithResources($first, $second) diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/FragmentListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/FragmentListenerTest.php index 18edee6123..fd5d63b167 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/FragmentListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/FragmentListenerTest.php @@ -34,7 +34,6 @@ class FragmentListenerTest extends \PHPUnit_Framework_TestCase $this->assertTrue($request->query->has('_path')); } - public function testOnlyTriggeredIfControllerWasNotDefinedYet() { $request = Request::create('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo'); diff --git a/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php b/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php index 49d137f4ab..605ee560eb 100644 --- a/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php +++ b/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php @@ -216,11 +216,11 @@ EOF; $conditions[] = sprintf("rtrim(\$pathinfo, '/') === %s", var_export(rtrim(str_replace('\\', '', $m['url']), '/'), true)); $hasTrailingSlash = true; } else { - $conditions[] = sprintf("\$pathinfo === %s", var_export(str_replace('\\', '', $m['url']), true)); + $conditions[] = sprintf('$pathinfo === %s', var_export(str_replace('\\', '', $m['url']), true)); } } else { if ($compiledRoute->getStaticPrefix() && $compiledRoute->getStaticPrefix() !== $parentPrefix) { - $conditions[] = sprintf("0 === strpos(\$pathinfo, %s)", var_export($compiledRoute->getStaticPrefix(), true)); + $conditions[] = sprintf('0 === strpos($pathinfo, %s)', var_export($compiledRoute->getStaticPrefix(), true)); } $regex = $compiledRoute->getRegex(); @@ -228,7 +228,7 @@ EOF; $regex = substr($regex, 0, $pos).'/?$'.substr($regex, $pos + 2); $hasTrailingSlash = true; } - $conditions[] = sprintf("preg_match(%s, \$pathinfo, \$matches)", var_export($regex, true)); + $conditions[] = sprintf('preg_match(%s, $pathinfo, $matches)', var_export($regex, true)); $matches = true; } From 4a72c441d583557282df06a2252e7c06ac83f868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Pineau?= Date: Tue, 7 Jul 2015 14:38:28 +0200 Subject: [PATCH 07/11] [DependencyInjection] Freeze also FrozenParameterBag::remove --- .../ParameterBag/FrozenParameterBag.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Symfony/Component/DependencyInjection/ParameterBag/FrozenParameterBag.php b/src/Symfony/Component/DependencyInjection/ParameterBag/FrozenParameterBag.php index dc936a0bd6..3ea6d9636b 100644 --- a/src/Symfony/Component/DependencyInjection/ParameterBag/FrozenParameterBag.php +++ b/src/Symfony/Component/DependencyInjection/ParameterBag/FrozenParameterBag.php @@ -69,4 +69,14 @@ class FrozenParameterBag extends ParameterBag { throw new LogicException('Impossible to call set() on a frozen ParameterBag.'); } + + /** + * {@inheritdoc} + * + * @api + */ + public function remove($name) + { + throw new LogicException('Impossible to call remove() on a frozen ParameterBag.'); + } } From 2aff5660b2eb41552640545f6e672307170b61bc Mon Sep 17 00:00:00 2001 From: Tomasz Kowalczyk Date: Tue, 7 Jul 2015 16:19:30 +0200 Subject: [PATCH 08/11] [Finder] Command::addAtIndex() fails with Command instance argument --- .../Component/Finder/Shell/Command.php | 2 +- .../Finder/Tests/Shell/CommandTest.php | 162 ++++++++++++++++++ 2 files changed, 163 insertions(+), 1 deletion(-) create mode 100644 src/Symfony/Component/Finder/Tests/Shell/CommandTest.php diff --git a/src/Symfony/Component/Finder/Shell/Command.php b/src/Symfony/Component/Finder/Shell/Command.php index ab070346fc..c91dd16161 100644 --- a/src/Symfony/Component/Finder/Shell/Command.php +++ b/src/Symfony/Component/Finder/Shell/Command.php @@ -289,7 +289,7 @@ class Command */ public function addAtIndex($bit, $index) { - array_splice($this->bits, $index, 0, $bit); + array_splice($this->bits, $index, 0, $bit instanceof self ? array($bit) : $bit); return $this; } diff --git a/src/Symfony/Component/Finder/Tests/Shell/CommandTest.php b/src/Symfony/Component/Finder/Tests/Shell/CommandTest.php new file mode 100644 index 0000000000..8c6c0064cd --- /dev/null +++ b/src/Symfony/Component/Finder/Tests/Shell/CommandTest.php @@ -0,0 +1,162 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Finder\Tests\Shell; + +use Symfony\Component\Finder\Shell\Command; + +class CommandTest extends \PHPUnit_Framework_TestCase +{ + public function testCreate() + { + $this->assertInstanceOf('Symfony\Component\Finder\Shell\Command', Command::create()); + } + + public function testAdd() + { + $cmd = Command::create()->add('--force'); + $this->assertSame('--force', $cmd->join()); + } + + public function testAddAsFirst() + { + $cmd = Command::create()->add('--force'); + + $cmd->addAtIndex(Command::create()->add('-F'), 0); + $this->assertSame('-F --force', $cmd->join()); + } + + public function testAddAsLast() + { + $cmd = Command::create()->add('--force'); + + $cmd->addAtIndex(Command::create()->add('-F'), 1); + $this->assertSame('--force -F', $cmd->join()); + } + + public function testAddInBetween() + { + $cmd = Command::create()->add('--force'); + $cmd->addAtIndex(Command::create()->add('-F'), 0); + + $cmd->addAtIndex(Command::create()->add('-X'), 1); + $this->assertSame('-F -X --force', $cmd->join()); + } + + public function testCount() + { + $cmd = Command::create(); + $this->assertSame(0, $cmd->length()); + + $cmd->add('--force'); + $this->assertSame(1, $cmd->length()); + + $cmd->add('--run'); + $this->assertSame(2, $cmd->length()); + } + + public function testTop() + { + $cmd = Command::create()->add('--force'); + + $cmd->top('--run'); + $this->assertSame('--run --force', $cmd->join()); + } + + public function testTopLabeled() + { + $cmd = Command::create()->add('--force'); + + $cmd->top('--run'); + $cmd->ins('--something'); + $cmd->top('--something'); + $this->assertSame('--something --run --force ', $cmd->join()); + } + + public function testArg() + { + $cmd = Command::create()->add('--force'); + + $cmd->arg('--run'); + $this->assertSame('--force \'--run\'', $cmd->join()); + } + + public function testCmd() + { + $cmd = Command::create()->add('--force'); + + $cmd->cmd('run'); + $this->assertSame('--force run', $cmd->join()); + } + + public function testInsDuplicateLabelException() + { + $cmd = Command::create()->add('--force'); + + $cmd->ins('label'); + $this->setExpectedException('RuntimeException'); + $cmd->ins('label'); + } + + public function testEnd() + { + $parent = Command::create(); + $cmd = Command::create($parent); + + $this->assertSame($parent, $cmd->end()); + } + + public function testEndNoParentException() + { + $cmd = Command::create(); + + $this->setExpectedException('RuntimeException'); + $cmd->end(); + } + + public function testGetMissingLabelException() + { + $cmd = Command::create(); + + $this->setExpectedException('RuntimeException'); + $cmd->get('invalid'); + } + + public function testErrorHandler() + { + $cmd = Command::create(); + $handler = function() { return 'error-handler'; }; + $cmd->setErrorHandler($handler); + + $this->assertSame($handler, $cmd->getErrorHandler()); + } + + public function testExecute() + { + $cmd = Command::create(); + $cmd->add('php'); + $cmd->add('--version'); + $result = $cmd->execute(); + + $this->assertTrue(is_array($result)); + $this->assertNotEmpty($result); + $this->assertRegexp('/PHP|HipHop/', $result[0]); + } + + public function testCastToString() + { + $cmd = Command::create(); + $cmd->add('--force'); + $cmd->add('--run'); + + $this->assertSame('--force --run', (string) $cmd); + } +} From eda5cb1c271ff7be919d8311a9032a6558436676 Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Wed, 8 Jul 2015 18:59:03 +0100 Subject: [PATCH 09/11] [HttpFoundation] Add a test case to confirm a bug in session migration --- .../Session/Storage/NativeSessionStorageTest.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php index 851e6752b0..c8743aba94 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php @@ -119,6 +119,17 @@ class NativeSessionStorageTest extends \PHPUnit_Framework_TestCase $this->assertEquals(11, $storage->getBag('attributes')->get('legs')); } + public function testSessionGlobalIsUpToDateAfterIdRegeneration() + { + $storage = $this->getStorage(); + $storage->start(); + $storage->getBag('attributes')->set('lucky', 7); + $storage->regenerate(); + $storage->getBag('attributes')->set('lucky', 42); + + $this->assertEquals(42, $_SESSION['_sf2_attributes']['lucky']); + } + public function testDefaultSessionCacheLimiter() { $this->iniSet('session.cache_limiter', 'nocache'); From 99b9c78b0034194d8ee27b9917e4d01fac8fb47f Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Wed, 8 Jul 2015 20:32:24 +0100 Subject: [PATCH 10/11] [HttpFoundation] Reload the session after regenerating its id --- .../Session/Storage/NativeSessionStorage.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php b/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php index a5bdbe91d8..db705db87c 100644 --- a/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php +++ b/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php @@ -203,7 +203,13 @@ class NativeSessionStorage implements SessionStorageInterface $this->metadataBag->stampNew(); } - return session_regenerate_id($destroy); + $isRegenerated = session_regenerate_id($destroy); + + // The reference to $_SESSION in session bags is lost in PHP7 and we need to re-create it. + // @see https://bugs.php.net/bug.php?id=70013 + $this->loadSession(); + + return $isRegenerated; } /** From c4bf2e637c3947df90d6fa3e87dbcf144c730e90 Mon Sep 17 00:00:00 2001 From: Joshua Thijssen Date: Thu, 9 Jul 2015 10:53:40 +0200 Subject: [PATCH 11/11] Added 'default' color --- .../Component/Console/Formatter/OutputFormatterStyle.php | 2 ++ .../Console/Tests/Formatter/OutputFormatterStyleTest.php | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/Symfony/Component/Console/Formatter/OutputFormatterStyle.php b/src/Symfony/Component/Console/Formatter/OutputFormatterStyle.php index 48e9850725..0438d4bc03 100644 --- a/src/Symfony/Component/Console/Formatter/OutputFormatterStyle.php +++ b/src/Symfony/Component/Console/Formatter/OutputFormatterStyle.php @@ -29,6 +29,7 @@ class OutputFormatterStyle implements OutputFormatterStyleInterface 'magenta' => 35, 'cyan' => 36, 'white' => 37, + 'default' => 39, ); private static $availableBackgroundColors = array( 'black' => 40, @@ -39,6 +40,7 @@ class OutputFormatterStyle implements OutputFormatterStyleInterface 'magenta' => 45, 'cyan' => 46, 'white' => 47, + 'default' => 49, ); private static $availableOptions = array( 'bold' => 1, diff --git a/src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php b/src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php index 6890a9b839..d0ebb27512 100644 --- a/src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php +++ b/src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php @@ -37,6 +37,9 @@ class OutputFormatterStyleTest extends \PHPUnit_Framework_TestCase $style->setForeground('blue'); $this->assertEquals("\033[34mfoo\033[0m", $style->apply('foo')); + $style->setForeground('default'); + $this->assertEquals("\033[39mfoo\033[39m", $style->apply('foo')); + $this->setExpectedException('InvalidArgumentException'); $style->setForeground('undefined-color'); } @@ -51,6 +54,9 @@ class OutputFormatterStyleTest extends \PHPUnit_Framework_TestCase $style->setBackground('yellow'); $this->assertEquals("\033[43mfoo\033[0m", $style->apply('foo')); + $style->setBackground('default'); + $this->assertEquals("\033[49mfoo\033[49m", $style->apply('foo')); + $this->setExpectedException('InvalidArgumentException'); $style->setBackground('undefined-color'); }