diff --git a/UPGRADE-2.7.md b/UPGRADE-2.7.md index 5123df9205..ab1021fcdc 100644 --- a/UPGRADE-2.7.md +++ b/UPGRADE-2.7.md @@ -665,3 +665,57 @@ Security * `SwitchUserListener` * `AccessListener` * `RememberMeListener` + +UPGRADE FROM 2.7.1 to 2.7.2 +=========================== + +Form +---- + + * In order to fix a few regressions in the new `ChoiceList` implementation, + a few details had to be changed compared to 2.7. + + The legacy `Symfony\Component\Form\Extension\Core\ChoiceList\ChoiceListInterface` + now does not extend the new `Symfony\Component\Form\ChoiceList\ChoiceListInterface` + anymore. If you pass an implementation of the old interface in a context + where the new interface is required, wrap the list into a + `LegacyChoiceListAdapter`: + + Before: + + ```php + use Symfony\Component\Form\ChoiceList\ChoiceListInterface; + + function doSomething(ChoiceListInterface $choiceList) + { + // ... + } + + doSomething($legacyList); + ``` + + After: + + ```php + use Symfony\Component\Form\ChoiceList\ChoiceListInterface; + use Symfony\Component\Form\ChoiceList\LegacyChoiceListAdapter; + + function doSomething(ChoiceListInterface $choiceList) + { + // ... + } + + doSomething(new LegacyChoiceListAdapter($legacyList)); + ``` + + The new `ChoiceListInterface` now has two additional methods + `getStructuredValues()` and `getOriginalKeys()`. You should add these methods + if you implement this interface. See their doc blocks and the implementation + of the core choice lists for inspiration. + + The method `ArrayKeyChoiceList::toArrayKey()` was marked as internal. This + method was never supposed to be used outside the class. + + The method `ChoiceListFactoryInterface::createView()` does not accept arrays + and `Traversable` instances anymore for the `$groupBy` parameter. Pass a + callable instead. diff --git a/UPGRADE-3.0.md b/UPGRADE-3.0.md index 063b479ea0..10f76a6f79 100644 --- a/UPGRADE-3.0.md +++ b/UPGRADE-3.0.md @@ -300,10 +300,6 @@ UPGRADE FROM 2.x to 3.0 echo $form->getErrors(true, false); ``` - ```php - echo $form->getErrors(true, false); - ``` - ### FrameworkBundle * The `config:debug`, `container:debug`, `router:debug`, `translation:debug` diff --git a/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php b/src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php index 417a3fd02e..68c79780d6 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/Bridge/Twig/Extension/AssetExtension.php b/src/Symfony/Bridge/Twig/Extension/AssetExtension.php index d138b1de1e..f7b9c87500 100644 --- a/src/Symfony/Bridge/Twig/Extension/AssetExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/AssetExtension.php @@ -108,11 +108,15 @@ class AssetExtension extends \Twig_Extension $v->setAccessible(true); $currentVersionStrategy = $v->getValue($package); - $f = new \ReflectionProperty($currentVersionStrategy, 'format'); - $f->setAccessible(true); - $format = $f->getValue($currentVersionStrategy); + if (property_exists($currentVersionStrategy, 'format')) { + $f = new \ReflectionProperty($currentVersionStrategy, 'format'); + $f->setAccessible(true); + $format = $f->getValue($currentVersionStrategy); - $v->setValue($package, new StaticVersionStrategy($version, $format)); + $v->setValue($package, new StaticVersionStrategy($version, $format)); + } else { + $v->setValue($package, new StaticVersionStrategy($version)); + } } try { diff --git a/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig b/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig index 6fc226da4f..f6b8671513 100644 --- a/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig +++ b/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig @@ -1,4 +1,4 @@ -{% extends "bootstrap_3_layout.html.twig" %} +{% use "bootstrap_3_layout.html.twig" %} {% block form_start -%} {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-horizontal')|trim}) %} diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/AssetExtensionTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/AssetExtensionTest.php index ab73179394..474d8c3395 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/AssetExtensionTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/AssetExtensionTest.php @@ -15,6 +15,7 @@ use Symfony\Bridge\Twig\Extension\AssetExtension; use Symfony\Component\Asset\Package; use Symfony\Component\Asset\Packages; use Symfony\Component\Asset\PathPackage; +use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy; use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy; class AssetExtensionTest extends \PHPUnit_Framework_TestCase @@ -41,6 +42,16 @@ class AssetExtensionTest extends \PHPUnit_Framework_TestCase $this->assertEquals('/foo/me.png?version=42', $extension->getAssetUrl('me.png', null, false, 42)); } + /** + * @group legacy + */ + public function testGetAssetUrlWithEmptyVersionStrategy() + { + $extension = $this->createExtension(new PathPackage('foo', new EmptyVersionStrategy())); + + $this->assertEquals('/foo/me.png?42', $extension->getAssetUrl('me.png', null, false, 42)); + } + private function createExtension(Package $package) { $foundationExtension = $this->getMockBuilder('Symfony\Bridge\Twig\Extension\HttpFoundationExtension')->disableOriginalConstructor()->getMock(); diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php index 49d1d2a4c6..e8a273d2b7 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php +++ b/src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php @@ -121,7 +121,7 @@ EOF $extractor = $this->getContainer()->get('translation.extractor'); $extractor->setPrefix($input->getOption('prefix')); foreach ($transPaths as $path) { - $path = $path.'views'; + $path .= 'views'; if (is_dir($path)) { $extractor->extract($path, $extractedCatalogue); } @@ -132,7 +132,7 @@ EOF $output->text('Loading translation files'); $loader = $this->getContainer()->get('translation.loader'); foreach ($transPaths as $path) { - $path = $path.'translations'; + $path .= 'translations'; if (is_dir($path)) { $loader->loadMessages($path, $currentCatalogue); } @@ -183,7 +183,7 @@ EOF $bundleTransPath = false; foreach ($transPaths as $path) { - $path = $path.'translations'; + $path .= 'translations'; if (is_dir($path)) { $bundleTransPath = $path; } diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php index 024da4d3b9..422e50ead2 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php +++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php @@ -274,7 +274,7 @@ class TextDescriptor extends Descriptor $description[] = sprintf('Abstract %s', $definition->isAbstract() ? 'yes' : 'no'); if ($definition->getFile()) { - $description[] = sprintf('Required File %s', $definition->getFile() ? $definition->getFile() : '-'); + $description[] = sprintf('Required File %s', $definition->getFile() ?: '-'); } if ($definition->getFactoryClass(false)) { diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 2d00a462ee..ac921f3db7 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -670,22 +670,22 @@ class FrameworkExtension extends Extension if (class_exists('Symfony\Component\Validator\Validation')) { $r = new \ReflectionClass('Symfony\Component\Validator\Validation'); - $dirs[] = dirname($r->getFilename()).'/Resources/translations'; + $dirs[] = dirname($r->getFileName()).'/Resources/translations'; } if (class_exists('Symfony\Component\Form\Form')) { $r = new \ReflectionClass('Symfony\Component\Form\Form'); - $dirs[] = dirname($r->getFilename()).'/Resources/translations'; + $dirs[] = dirname($r->getFileName()).'/Resources/translations'; } if (class_exists('Symfony\Component\Security\Core\Exception\AuthenticationException')) { $r = new \ReflectionClass('Symfony\Component\Security\Core\Exception\AuthenticationException'); - $dirs[] = dirname($r->getFilename()).'/../Resources/translations'; + $dirs[] = dirname($r->getFileName()).'/../Resources/translations'; } $overridePath = $container->getParameter('kernel.root_dir').'/Resources/%s/translations'; foreach ($container->getParameter('kernel.bundles') as $bundle => $class) { $reflection = new \ReflectionClass($class); - if (is_dir($dir = dirname($reflection->getFilename()).'/Resources/translations')) { + if (is_dir($dir = dirname($reflection->getFileName()).'/Resources/translations')) { $dirs[] = $dir; } if (is_dir($dir = sprintf($overridePath, $bundle))) { @@ -807,7 +807,7 @@ class FrameworkExtension extends Extension $bundles = $container->getParameter('kernel.bundles'); foreach ($bundles as $bundle) { $reflection = new \ReflectionClass($bundle); - $dirname = dirname($reflection->getFilename()); + $dirname = dirname($reflection->getFileName()); if (is_file($file = $dirname.'/Resources/config/validation.xml')) { $files[0][] = realpath($file); @@ -827,7 +827,15 @@ class FrameworkExtension extends Extension $files[1][] = $file->getRealpath(); } +<<<<<<< HEAD $container->addResource(new DirectoryResource($dir)); +======= + foreach ($container->getParameter('kernel.bundles') as $bundle) { + $reflection = new \ReflectionClass($bundle); + if (is_file($file = dirname($reflection->getFileName()).'/Resources/config/validation.yml')) { + $files[] = realpath($file); + $container->addResource(new FileResource($file)); +>>>>>>> 2.6 } } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CacheClearCommand/CacheClearCommandTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CacheClearCommand/CacheClearCommandTest.php index 78ab561df1..745e015d57 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CacheClearCommand/CacheClearCommandTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Command/CacheClearCommand/CacheClearCommandTest.php @@ -24,7 +24,7 @@ class CacheClearCommandTest extends TestCase { $this->fs = new Filesystem(); $this->kernel = new TestAppKernel('test', true); - $this->rootDir = sys_get_temp_dir().DIRECTORY_SEPARATOR.uniqid('sf2_cache_'); + $this->rootDir = sys_get_temp_dir().DIRECTORY_SEPARATOR.uniqid('sf2_cache_', true); $this->kernel->setRootDir($this->rootDir); $this->fs->mkdir($this->rootDir); } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Command/TranslationDebugCommandTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Command/TranslationDebugCommandTest.php index 9054176129..c99c0ace2a 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Command/TranslationDebugCommandTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Command/TranslationDebugCommandTest.php @@ -95,7 +95,7 @@ class TranslationDebugCommandTest extends \PHPUnit_Framework_TestCase protected function setUp() { $this->fs = new Filesystem(); - $this->translationDir = sys_get_temp_dir().'/'.uniqid('sf2_translation'); + $this->translationDir = sys_get_temp_dir().'/'.uniqid('sf2_translation', true); $this->fs->mkdir($this->translationDir.'/Resources/translations'); $this->fs->mkdir($this->translationDir.'/Resources/views'); } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php index cf0d909f09..8a9800bc86 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php @@ -112,7 +112,7 @@ abstract class AbstractDescriptorTest extends \PHPUnit_Framework_TestCase { $data = $this->getDescriptionTestData(ObjectsProvider::getContainerParameter()); - array_push($data[0], array('parameter' => 'database_name')); + $data[0][] = array('parameter' => 'database_name'); return $data; } diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php index 90ba5e1f7b..7b6ac4186a 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php @@ -162,6 +162,7 @@ class MainConfiguration implements ConfigurationInterface ->cannotBeOverwritten() ->prototype('array') ->fixXmlConfig('ip') + ->fixXmlConfig('method') ->children() ->scalarNode('requires_channel')->defaultNull()->end() ->scalarNode('path') @@ -300,7 +301,7 @@ class MainConfiguration implements ConfigurationInterface }) ->end() ->children() - ->scalarNode('secret')->defaultValue(uniqid())->end() + ->scalarNode('secret')->defaultValue(uniqid('', true))->end() ->end() ->end() ->arrayNode('switch_user') diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/UserProvider/InMemoryFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/UserProvider/InMemoryFactory.php index 5debce9adb..b184385f22 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/UserProvider/InMemoryFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/UserProvider/InMemoryFactory.php @@ -54,7 +54,7 @@ class InMemoryFactory implements UserProviderFactoryInterface ->useAttributeAsKey('name') ->prototype('array') ->children() - ->scalarNode('password')->defaultValue(uniqid())->end() + ->scalarNode('password')->defaultValue(uniqid('', true))->end() ->arrayNode('roles') ->beforeNormalization()->ifString()->then(function ($v) { return preg_split('/\s*,\s*/', $v); })->end() ->prototype('scalar')->end() diff --git a/src/Symfony/Bundle/TwigBundle/Command/DebugCommand.php b/src/Symfony/Bundle/TwigBundle/Command/DebugCommand.php index 572e92a2e7..c4aa34098b 100644 --- a/src/Symfony/Bundle/TwigBundle/Command/DebugCommand.php +++ b/src/Symfony/Bundle/TwigBundle/Command/DebugCommand.php @@ -18,7 +18,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\ContainerAwareInterface; /** - * Lists twig functions, filters, globals and tests present in the current project + * Lists twig functions, filters, globals and tests present in the current project. * * @author Jordi Boggiano */ diff --git a/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php b/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php index 7b6a676a52..c0171219d0 100644 --- a/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php +++ b/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php @@ -88,7 +88,7 @@ class TwigExtension extends Extension $container->addResource(new FileExistenceResource($dir)); $reflection = new \ReflectionClass($class); - $dir = dirname($reflection->getFilename()).'/Resources/views'; + $dir = dirname($reflection->getFileName()).'/Resources/views'; if (is_dir($dir)) { $this->addTwigPath($twigFilesystemLoaderDefinition, $dir, $bundle); } diff --git a/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php b/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php index 14c2130a62..cd3968034e 100644 --- a/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php +++ b/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php @@ -190,10 +190,8 @@ class TwigExtensionTest extends TestCase $def = $container->getDefinition('twig.loader.filesystem'); $paths = array(); foreach ($def->getMethodCalls() as $call) { - if ('addPath' === $call[0]) { - if (false === strpos($call[1][0], 'Form')) { - $paths[] = $call[1]; - } + if ('addPath' === $call[0] && false === strpos($call[1][0], 'Form')) { + $paths[] = $call[1]; } } 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/Config/Util/XmlUtils.php b/src/Symfony/Component/Config/Util/XmlUtils.php index 2ef881df81..d8d4eaa3b1 100644 --- a/src/Symfony/Component/Config/Util/XmlUtils.php +++ b/src/Symfony/Component/Config/Util/XmlUtils.php @@ -196,7 +196,7 @@ class XmlUtils return '0' == $value[0] ? octdec($value) : (((string) $raw === (string) $cast) ? $cast : $raw); case isset($value[1]) && '-' === $value[0] && ctype_digit(substr($value, 1)): $raw = $value; - $cast = intval($value); + $cast = (int) $value; return '0' == $value[1] ? octdec($value) : (((string) $raw === (string) $cast) ? $cast : $raw); case 'true' === $lowercaseValue: diff --git a/src/Symfony/Component/Console/Formatter/OutputFormatterStyle.php b/src/Symfony/Component/Console/Formatter/OutputFormatterStyle.php index b3f274a8b0..ee62cdbd61 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' => array('set' => 35, 'unset' => 39), 'cyan' => array('set' => 36, 'unset' => 39), 'white' => array('set' => 37, 'unset' => 39), + 'default' => array('set' => 39, 'unset' => 39), ); private static $availableBackgroundColors = array( 'black' => array('set' => 40, 'unset' => 49), @@ -39,6 +40,7 @@ class OutputFormatterStyle implements OutputFormatterStyleInterface 'magenta' => array('set' => 45, 'unset' => 49), 'cyan' => array('set' => 46, 'unset' => 49), 'white' => array('set' => 47, 'unset' => 49), + 'default' => array('set' => 49, 'unset' => 49), ); private static $availableOptions = array( 'bold' => array('set' => 1, 'unset' => 22), diff --git a/src/Symfony/Component/Console/Helper/DebugFormatterHelper.php b/src/Symfony/Component/Console/Helper/DebugFormatterHelper.php index cdb620d168..0b4b937902 100644 --- a/src/Symfony/Component/Console/Helper/DebugFormatterHelper.php +++ b/src/Symfony/Component/Console/Helper/DebugFormatterHelper.php @@ -20,7 +20,7 @@ namespace Symfony\Component\Console\Helper; */ class DebugFormatterHelper extends Helper { - private $colors = array('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'); + private $colors = array('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default'); private $started = array(); private $count = -1; diff --git a/src/Symfony/Component/Console/Helper/ProgressBar.php b/src/Symfony/Component/Console/Helper/ProgressBar.php index 60308bc386..e5ba927738 100644 --- a/src/Symfony/Component/Console/Helper/ProgressBar.php +++ b/src/Symfony/Component/Console/Helper/ProgressBar.php @@ -374,7 +374,7 @@ class ProgressBar } /** - * Sets whether to overwrite the progressbar, false for new line + * Sets whether to overwrite the progressbar, false for new line. * * @param bool $overwrite */ @@ -401,8 +401,8 @@ class ProgressBar $this->max = $step; } - $prevPeriod = intval($this->step / $this->redrawFreq); - $currPeriod = intval($step / $this->redrawFreq); + $prevPeriod = (int) ($this->step / $this->redrawFreq); + $currPeriod = (int) ($step / $this->redrawFreq); $this->step = $step; $this->percent = $this->max ? (float) $this->step / $this->max : 0; if ($prevPeriod !== $currPeriod || $this->max === $step) { diff --git a/src/Symfony/Component/Console/Question/ChoiceQuestion.php b/src/Symfony/Component/Console/Question/ChoiceQuestion.php index 9586c5bf3a..a61b410d51 100644 --- a/src/Symfony/Component/Console/Question/ChoiceQuestion.php +++ b/src/Symfony/Component/Console/Question/ChoiceQuestion.php @@ -161,7 +161,8 @@ class ChoiceQuestion extends Question if (false === $result) { throw new \InvalidArgumentException(sprintf($errorMessage, $value)); } - array_push($multiselectChoices, (string) $result); + + $multiselectChoices[] = $choices[(string) $result]; } if ($multiselect) { diff --git a/src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php b/src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php index 52ada9e972..0abfb3ce27 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[39m", $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[49m", $style->apply('foo')); + $style->setBackground('default'); + $this->assertEquals("\033[49mfoo\033[49m", $style->apply('foo')); + $this->setExpectedException('InvalidArgumentException'); $style->setBackground('undefined-color'); } diff --git a/src/Symfony/Component/Debug/DebugClassLoader.php b/src/Symfony/Component/Debug/DebugClassLoader.php index 7d99b634bb..a2532d3038 100644 --- a/src/Symfony/Component/Debug/DebugClassLoader.php +++ b/src/Symfony/Component/Debug/DebugClassLoader.php @@ -222,7 +222,7 @@ class DebugClassLoader } if (self::$caseCheck && preg_match('#([/\\\\][a-zA-Z_\x7F-\xFF][a-zA-Z0-9_\x7F-\xFF]*)+\.(php|hh)$#D', $file, $tail)) { $tail = $tail[0]; - $real = $refl->getFilename(); + $real = $refl->getFileName(); if (2 === self::$caseCheck) { // realpath() on MacOSX doesn't normalize the case of characters diff --git a/src/Symfony/Component/Debug/Tests/DebugClassLoaderTest.php b/src/Symfony/Component/Debug/Tests/DebugClassLoaderTest.php index 09d2d3d650..a368a7d257 100644 --- a/src/Symfony/Component/Debug/Tests/DebugClassLoaderTest.php +++ b/src/Symfony/Component/Debug/Tests/DebugClassLoaderTest.php @@ -112,10 +112,10 @@ class DebugClassLoaderTest extends \PHPUnit_Framework_TestCase restore_exception_handler(); $this->assertStringStartsWith(__FILE__, $exception->getFile()); if (PHP_VERSION_ID < 70000) { - $this->assertRegexp('/^Runtime Notice: Declaration/', $exception->getMessage()); + $this->assertRegExp('/^Runtime Notice: Declaration/', $exception->getMessage()); $this->assertEquals(E_STRICT, $exception->getSeverity()); } else { - $this->assertRegexp('/^Warning: Declaration/', $exception->getMessage()); + $this->assertRegExp('/^Warning: Declaration/', $exception->getMessage()); $this->assertEquals(E_WARNING, $exception->getSeverity()); } } catch (\Exception $exception) { diff --git a/src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php b/src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php index 1441397be6..6555bae1be 100644 --- a/src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php +++ b/src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php @@ -77,7 +77,7 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase $this->assertEquals(E_NOTICE, $exception->getSeverity()); $this->assertEquals(__FILE__, $exception->getFile()); - $this->assertRegexp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage()); + $this->assertRegExp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage()); $this->assertArrayHasKey('foobar', $exception->getContext()); $trace = $exception->getTrace(); diff --git a/src/Symfony/Component/Debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php b/src/Symfony/Component/Debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php index 92384b6b13..c93983721f 100644 --- a/src/Symfony/Component/Debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php +++ b/src/Symfony/Component/Debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php @@ -61,7 +61,7 @@ class ClassNotFoundFatalErrorHandlerTest extends \PHPUnit_Framework_TestCase array_map('spl_autoload_register', $autoloaders); } - $this->assertInstanceof('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception); + $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception); $this->assertSame($translatedMessage, $exception->getMessage()); $this->assertSame($error['type'], $exception->getSeverity()); $this->assertSame($error['file'], $exception->getFile()); @@ -195,6 +195,6 @@ class ClassNotFoundFatalErrorHandlerTest extends \PHPUnit_Framework_TestCase $handler = new ClassNotFoundFatalErrorHandler(); $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line'])); - $this->assertInstanceof('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception); + $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception); } } diff --git a/src/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php b/src/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php index ffe9edb062..795b74781c 100644 --- a/src/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php +++ b/src/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedFunctionFatalErrorHandlerTest.php @@ -24,7 +24,7 @@ class UndefinedFunctionFatalErrorHandlerTest extends \PHPUnit_Framework_TestCase $handler = new UndefinedFunctionFatalErrorHandler(); $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line'])); - $this->assertInstanceof('Symfony\Component\Debug\Exception\UndefinedFunctionException', $exception); + $this->assertInstanceOf('Symfony\Component\Debug\Exception\UndefinedFunctionException', $exception); // class names are case insensitive and PHP/HHVM do not return the same $this->assertSame(strtolower($translatedMessage), strtolower($exception->getMessage())); $this->assertSame($error['type'], $exception->getSeverity()); diff --git a/src/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php b/src/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php index 5d1ff23802..de7b21c699 100644 --- a/src/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php +++ b/src/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php @@ -24,7 +24,7 @@ class UndefinedMethodFatalErrorHandlerTest extends \PHPUnit_Framework_TestCase $handler = new UndefinedMethodFatalErrorHandler(); $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line'])); - $this->assertInstanceof('Symfony\Component\Debug\Exception\UndefinedMethodException', $exception); + $this->assertInstanceOf('Symfony\Component\Debug\Exception\UndefinedMethodException', $exception); $this->assertSame($translatedMessage, $exception->getMessage()); $this->assertSame($error['type'], $exception->getSeverity()); $this->assertSame($error['file'], $exception->getFile()); 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.'); + } } diff --git a/src/Symfony/Component/DomCrawler/Tests/FormTest.php b/src/Symfony/Component/DomCrawler/Tests/FormTest.php index e2c1904738..59c3c76cf0 100644 --- a/src/Symfony/Component/DomCrawler/Tests/FormTest.php +++ b/src/Symfony/Component/DomCrawler/Tests/FormTest.php @@ -825,7 +825,6 @@ class FormTest extends \PHPUnit_Framework_TestCase */ public function testFormRegistrySetArrayOnNotCompoundField() { - $registry = new FormFieldRegistry(); $registry->add($this->getFormFieldMock('bar')); diff --git a/src/Symfony/Component/Filesystem/Tests/FilesystemTestCase.php b/src/Symfony/Component/Filesystem/Tests/FilesystemTestCase.php index 80cd57e809..74802fc314 100644 --- a/src/Symfony/Component/Filesystem/Tests/FilesystemTestCase.php +++ b/src/Symfony/Component/Filesystem/Tests/FilesystemTestCase.php @@ -16,7 +16,7 @@ class FilesystemTestCase extends \PHPUnit_Framework_TestCase private $umask; /** - * @var string $workspace + * @var string */ protected $workspace = null; @@ -40,7 +40,7 @@ class FilesystemTestCase extends \PHPUnit_Framework_TestCase protected function setUp() { $this->umask = umask(0); - $this->workspace = rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.time().rand(0, 1000); + $this->workspace = rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.time().mt_rand(0, 1000); mkdir($this->workspace, 0777, true); $this->workspace = realpath($this->workspace); } diff --git a/src/Symfony/Component/Finder/Shell/Command.php b/src/Symfony/Component/Finder/Shell/Command.php index 2f0c450ecc..f8bd6a0851 100644 --- a/src/Symfony/Component/Finder/Shell/Command.php +++ b/src/Symfony/Component/Finder/Shell/Command.php @@ -287,7 +287,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); + } +} 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/File/MimeType/MimeTypeGuesser.php b/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php index 81b2b02bd4..ecc8a30ac2 100644 --- a/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php +++ b/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php @@ -67,6 +67,14 @@ 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/Request.php b/src/Symfony/Component/HttpFoundation/Request.php index d5a026f067..7c4afb03bd 100644 --- a/src/Symfony/Component/HttpFoundation/Request.php +++ b/src/Symfony/Component/HttpFoundation/Request.php @@ -517,7 +517,6 @@ class Request */ public function __toString() { - $content = ''; try { $content = $this->getContent(); } catch (\LogicException $e) { diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php index 32b73968db..48e81ee0f1 100644 --- a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php +++ b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/PdoSessionHandler.php @@ -126,7 +126,7 @@ class PdoSessionHandler implements \SessionHandlerInterface private $lockMode = self::LOCK_TRANSACTIONAL; /** - * It's an array to support multiple reads before closing which is manual, non-standard usage + * It's an array to support multiple reads before closing which is manual, non-standard usage. * * @var \PDOStatement[] An array of statements to release advisory locks */ @@ -483,7 +483,7 @@ class PdoSessionHandler implements \SessionHandlerInterface if ('sqlite' === $this->driver) { $this->pdo->exec('ROLLBACK'); } else { - $this->pdo->rollback(); + $this->pdo->rollBack(); } $this->inTransaction = false; } @@ -680,7 +680,7 @@ class PdoSessionHandler implements \SessionHandlerInterface } /** - * Return a PDO instance + * Return a PDO instance. * * @return \PDO */ 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; } /** diff --git a/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php b/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php index 9e07d9e14b..6777849c8a 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/File/FileTest.php @@ -45,6 +45,19 @@ 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 diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php index 188aaf582b..45574df4c4 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php @@ -985,7 +985,6 @@ class RequestTest extends \PHPUnit_Framework_TestCase } /** - * * @dataProvider getContentCantBeCalledTwiceWithResourcesProvider */ public function testGetContentCanBeCalledTwiceWithResources($first, $second) 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'); 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 de414480f2..aa7df8a78b 100644 --- a/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php +++ b/src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php @@ -229,11 +229,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(); @@ -241,7 +241,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; } diff --git a/src/Symfony/Component/Security/Core/Tests/Util/SecureRandomTest.php b/src/Symfony/Component/Security/Core/Tests/Util/SecureRandomTest.php index 666af30d49..2e94cc14ba 100644 --- a/src/Symfony/Component/Security/Core/Tests/Util/SecureRandomTest.php +++ b/src/Symfony/Component/Security/Core/Tests/Util/SecureRandomTest.php @@ -138,7 +138,7 @@ class SecureRandomTest extends \PHPUnit_Framework_TestCase */ public function testSerialCorrelation($secureRandom) { - $shift = rand(1, 5000); + $shift = mt_rand(1, 5000); $b = $this->getBitSequence($secureRandom, 20000); $Z = 0; diff --git a/src/Symfony/Component/Serializer/Annotation/Groups.php b/src/Symfony/Component/Serializer/Annotation/Groups.php index 9e7801f842..519837a55b 100644 --- a/src/Symfony/Component/Serializer/Annotation/Groups.php +++ b/src/Symfony/Component/Serializer/Annotation/Groups.php @@ -30,7 +30,8 @@ class Groups /** * @param array $data - * @throws \InvalidArgumentException + * + * @throws InvalidArgumentException */ public function __construct(array $data) { @@ -52,7 +53,7 @@ class Groups } /** - * Gets groups + * Gets groups. * * @return array */ diff --git a/src/Symfony/Component/Serializer/Mapping/ClassMetadata.php b/src/Symfony/Component/Serializer/Mapping/ClassMetadata.php index 3794a7451b..55ddf52a64 100644 --- a/src/Symfony/Component/Serializer/Mapping/ClassMetadata.php +++ b/src/Symfony/Component/Serializer/Mapping/ClassMetadata.php @@ -110,7 +110,7 @@ class ClassMetadata implements ClassMetadataInterface { return array( 'name', - 'attributes', + 'attributesMetadata', ); } } diff --git a/src/Symfony/Component/Serializer/Tests/Annotation/GroupsTest.php b/src/Symfony/Component/Serializer/Tests/Annotation/GroupsTest.php index b427325f08..72b877729d 100644 --- a/src/Symfony/Component/Serializer/Tests/Annotation/GroupsTest.php +++ b/src/Symfony/Component/Serializer/Tests/Annotation/GroupsTest.php @@ -19,7 +19,7 @@ use Symfony\Component\Serializer\Annotation\Groups; class GroupsTest extends \PHPUnit_Framework_TestCase { /** - * @expectedException \InvalidArgumentException + * @expectedException \Symfony\Component\Serializer\Exception\InvalidArgumentException */ public function testEmptyGroupsParameter() { @@ -27,7 +27,7 @@ class GroupsTest extends \PHPUnit_Framework_TestCase } /** - * @expectedException \InvalidArgumentException + * @expectedException \Symfony\Component\Serializer\Exception\InvalidArgumentException */ public function testNotAnArrayGroupsParameter() { @@ -35,7 +35,7 @@ class GroupsTest extends \PHPUnit_Framework_TestCase } /** - * @expectedException \InvalidArgumentException + * @expectedException \Symfony\Component\Serializer\Exception\InvalidArgumentException */ public function testInvalidGroupsParameter() { diff --git a/src/Symfony/Component/Serializer/Tests/Mapping/AttributeMetadataTest.php b/src/Symfony/Component/Serializer/Tests/Mapping/AttributeMetadataTest.php index f22746bc5d..4a32831cb6 100644 --- a/src/Symfony/Component/Serializer/Tests/Mapping/AttributeMetadataTest.php +++ b/src/Symfony/Component/Serializer/Tests/Mapping/AttributeMetadataTest.php @@ -54,4 +54,14 @@ class AttributeMetadataTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array('a', 'b', 'c'), $attributeMetadata1->getGroups()); } + + public function testSerialize() + { + $attributeMetadata = new AttributeMetadata('attribute'); + $attributeMetadata->addGroup('a'); + $attributeMetadata->addGroup('b'); + + $serialized = serialize($attributeMetadata); + $this->assertEquals($attributeMetadata, unserialize($serialized)); + } } diff --git a/src/Symfony/Component/Serializer/Tests/Mapping/ClassMetadataTest.php b/src/Symfony/Component/Serializer/Tests/Mapping/ClassMetadataTest.php index 90017580ac..629c17b788 100644 --- a/src/Symfony/Component/Serializer/Tests/Mapping/ClassMetadataTest.php +++ b/src/Symfony/Component/Serializer/Tests/Mapping/ClassMetadataTest.php @@ -62,4 +62,21 @@ class ClassMetadataTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array('a1' => $ac1), $classMetadata2->getAttributesMetadata()); } + + public function testSerialize() + { + $classMetadata = new ClassMetadata('a'); + + $a1 = $this->getMock('Symfony\Component\Serializer\Mapping\AttributeMetadataInterface'); + $a1->method('getName')->willReturn('b1'); + + $a2 = $this->getMock('Symfony\Component\Serializer\Mapping\AttributeMetadataInterface'); + $a2->method('getName')->willReturn('b2'); + + $classMetadata->addAttributeMetadata($a1); + $classMetadata->addAttributeMetadata($a2); + + $serialized = serialize($classMetadata); + $this->assertEquals($classMetadata, unserialize($serialized)); + } } diff --git a/src/Symfony/Component/Translation/Tests/TranslatorTest.php b/src/Symfony/Component/Translation/Tests/TranslatorTest.php index ec06e50b0d..e8e967139d 100644 --- a/src/Symfony/Component/Translation/Tests/TranslatorTest.php +++ b/src/Symfony/Component/Translation/Tests/TranslatorTest.php @@ -503,7 +503,7 @@ class TranslatorTest extends \PHPUnit_Framework_TestCase public function testLegacyGetMessages($resources, $locale, $expected) { $locales = array_keys($resources); - $_locale = !is_null($locale) ? $locale : reset($locales); + $_locale = null !== $locale ? $locale : reset($locales); $locales = array_slice($locales, 0, array_search($_locale, $locales)); $translator = new Translator($_locale, new MessageSelector());