Skip to content

Commit 4ed54a3

Browse files
committed
Merge branch '2.7' into 2.8
* 2.7: Typo fix [2.3] Static Code Analysis for Components Added support \IteratorAggregate for UniqueEntityValidator Update AbstractChoiceListTest.php Fix symfony#17306 Paths with % in it are note allowed (like urlencoded) Use proper class to fetch $versionStrategy property Added sort order SORT_STRING for params in UriSigner Remove normalizer cache in Serializer class
2 parents 3331c8a + da655a9 commit 4ed54a3

File tree

27 files changed

+145
-63
lines changed

27 files changed

+145
-63
lines changed

UPGRADE-3.0.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ UPGRADE FROM 2.x to 3.0
1010
| -------- | ---
1111
| `registerNamespaces()` | `addPrefixes()`
1212
| `registerPrefixes()` | `addPrefixes()`
13-
| `registerNamespaces()` | `addPrefix()`
13+
| `registerNamespace()` | `addPrefix()`
1414
| `registerPrefix()` | `addPrefix()`
1515
| `getNamespaces()` | `getPrefixes()`
1616
| `getNamespaceFallbacks()` | `getFallbackDirs()`

src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bridge\Doctrine\Tests\Validator\Constraints;
1313

14+
use Doctrine\Common\Collections\ArrayCollection;
1415
use Doctrine\Common\Persistence\ManagerRegistry;
1516
use Doctrine\Common\Persistence\ObjectManager;
1617
use Doctrine\Common\Persistence\ObjectRepository;
@@ -336,6 +337,44 @@ public function testValidateUniquenessWithUnrewoundArray()
336337
$this->assertNoViolation();
337338
}
338339

340+
/**
341+
* @dataProvider resultTypesProvider
342+
*/
343+
public function testValidateResultTypes($entity1, $result)
344+
{
345+
$constraint = new UniqueEntity(array(
346+
'message' => 'myMessage',
347+
'fields' => array('name'),
348+
'em' => self::EM_NAME,
349+
'repositoryMethod' => 'findByCustom',
350+
));
351+
352+
$repository = $this->createRepositoryMock();
353+
$repository->expects($this->once())
354+
->method('findByCustom')
355+
->will($this->returnValue($result))
356+
;
357+
$this->em = $this->createEntityManagerMock($repository);
358+
$this->registry = $this->createRegistryMock($this->em);
359+
$this->validator = $this->createValidator();
360+
$this->validator->initialize($this->context);
361+
362+
$this->validator->validate($entity1, $constraint);
363+
364+
$this->assertNoViolation();
365+
}
366+
367+
public function resultTypesProvider()
368+
{
369+
$entity = new SingleIntIdEntity(1, 'foo');
370+
371+
return array(
372+
array($entity, array($entity)),
373+
array($entity, new \ArrayIterator(array($entity))),
374+
array($entity, new ArrayCollection(array($entity))),
375+
);
376+
}
377+
339378
public function testAssociatedEntity()
340379
{
341380
$constraint = new UniqueEntity(array(

src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,10 @@ public function validate($entity, Constraint $constraint)
114114
$repository = $em->getRepository(get_class($entity));
115115
$result = $repository->{$constraint->repositoryMethod}($criteria);
116116

117+
if ($result instanceof \IteratorAggregate) {
118+
$result = $result->getIterator();
119+
}
120+
117121
/* If the result is a MongoCursor, it must be advanced to the first
118122
* element. Rewinding should have no ill effect if $result is another
119123
* iterator implementation.

src/Symfony/Bridge/Twig/Extension/AssetExtension.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,16 @@ private function getLegacyAssetUrl($path, $packageName = null, $absolute = false
9898
{
9999
if ($version) {
100100
$package = $this->packages->getPackage($packageName);
101-
$class = new \ReflectionClass($package);
102101

103-
while ('Symfony\Component\Asset\Package' !== $class->getName()) {
104-
$class = $class->getParentClass();
105-
}
106-
107-
$v = $class->getProperty('versionStrategy');
102+
$v = new \ReflectionProperty('Symfony\Component\Asset\Package', 'versionStrategy');
108103
$v->setAccessible(true);
104+
109105
$currentVersionStrategy = $v->getValue($package);
110106

111107
if (property_exists($currentVersionStrategy, 'format')) {
112108
$f = new \ReflectionProperty($currentVersionStrategy, 'format');
113109
$f->setAccessible(true);
110+
114111
$format = $f->getValue($currentVersionStrategy);
115112

116113
$v->setValue($package, new StaticVersionStrategy($version, $format));

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -689,24 +689,26 @@ private function registerTranslatorConfiguration(array $config, ContainerBuilder
689689

690690
$dirs[] = dirname($r->getFileName()).'/../Resources/translations';
691691
}
692-
$overridePath = $container->getParameter('kernel.root_dir').'/Resources/%s/translations';
692+
$rootDir = $container->getParameter('kernel.root_dir');
693693
foreach ($container->getParameter('kernel.bundles') as $bundle => $class) {
694694
$reflection = new \ReflectionClass($class);
695695
if (is_dir($dir = dirname($reflection->getFileName()).'/Resources/translations')) {
696696
$dirs[] = $dir;
697697
}
698-
if (is_dir($dir = sprintf($overridePath, $bundle))) {
698+
if (is_dir($dir = $rootDir.sprintf('/Resources/%s/translations', $bundle))) {
699699
$dirs[] = $dir;
700700
}
701701
}
702+
702703
foreach ($config['paths'] as $dir) {
703704
if (is_dir($dir)) {
704705
$dirs[] = $dir;
705706
} else {
706707
throw new \UnexpectedValueException(sprintf('%s defined in translator.paths does not exist or is not a directory', $dir));
707708
}
708709
}
709-
if (is_dir($dir = $container->getParameter('kernel.root_dir').'/Resources/translations')) {
710+
711+
if (is_dir($dir = $rootDir.'/Resources/translations')) {
710712
$dirs[] = $dir;
711713
}
712714

src/Symfony/Bundle/FrameworkBundle/Templating/Helper/AssetsHelper.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,14 @@ private function getLegacyAssetUrl($path, $packageName = null, $version = null)
9595
if ($version) {
9696
$package = $this->packages->getPackage($packageName);
9797

98-
$v = new \ReflectionProperty($package, 'versionStrategy');
98+
$v = new \ReflectionProperty('Symfony\Component\Asset\Package', 'versionStrategy');
9999
$v->setAccessible(true);
100100

101101
$currentVersionStrategy = $v->getValue($package);
102102

103103
$f = new \ReflectionProperty($currentVersionStrategy, 'format');
104104
$f->setAccessible(true);
105+
105106
$format = $f->getValue($currentVersionStrategy);
106107

107108
$v->setValue($package, new StaticVersionStrategy($version, $format));

src/Symfony/Bundle/FrameworkBundle/Tests/Templating/Helper/AssetsHelperTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Bundle\FrameworkBundle\Templating\Helper\AssetsHelper;
1515
use Symfony\Component\Asset\Package;
1616
use Symfony\Component\Asset\Packages;
17+
use Symfony\Component\Asset\PathPackage;
1718
use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
1819

1920
class AssetsHelperTest extends \PHPUnit_Framework_TestCase
@@ -23,11 +24,14 @@ class AssetsHelperTest extends \PHPUnit_Framework_TestCase
2324
*/
2425
public function testLegacyGetUrl()
2526
{
26-
$package = new Package(new StaticVersionStrategy('22', '%s?version=%s'));
27-
$packages = new Packages($package);
27+
$versionStrategy = new StaticVersionStrategy('22', '%s?version=%s');
28+
$package = new Package($versionStrategy);
29+
$imagePackage = new PathPackage('images', $versionStrategy);
30+
$packages = new Packages($package, array('images' => $imagePackage));
2831
$helper = new AssetsHelper($packages);
2932

3033
$this->assertEquals('me.png?version=42', $helper->getUrl('me.png', null, '42'));
34+
$this->assertEquals('/images/me.png?version=42', $helper->getUrl('me.png', 'images', '42'));
3135
}
3236

3337
/**

src/Symfony/Component/BrowserKit/Client.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public function setServerParameter($key, $value)
149149
*/
150150
public function getServerParameter($key, $default = '')
151151
{
152-
return (isset($this->server[$key])) ? $this->server[$key] : $default;
152+
return isset($this->server[$key]) ? $this->server[$key] : $default;
153153
}
154154

155155
/**

src/Symfony/Component/Console/Helper/TableHelper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public function setLayout($layout)
7070

7171
default:
7272
throw new InvalidArgumentException(sprintf('Invalid table layout "%s".', $layout));
73-
};
73+
}
7474

7575
return $this;
7676
}

src/Symfony/Component/Console/Output/ConsoleOutput.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ function_exists('php_uname') ? php_uname('s') : '',
131131
PHP_OS,
132132
);
133133

134-
return false !== stristr(implode(';', $checks), 'OS400');
134+
return false !== stripos(implode(';', $checks), 'OS400');
135135
}
136136

137137
/**

0 commit comments

Comments
 (0)