Skip to content

Commit 40bc14a

Browse files
committed
Merge branch '4.4' into 5.1
* 4.4: Fix tests [Lock] Fix StoreFactory to accept same DSN syntax as AbstractAdapter [Serializer][Minor] Fix exception message
2 parents c453c3d + 6a79f3e commit 40bc14a

File tree

6 files changed

+30
-15
lines changed

6 files changed

+30
-15
lines changed

src/Symfony/Component/Lock/Store/StoreFactory.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@ public static function createStore($connection)
6969
case 'semaphore' === $connection:
7070
return new SemaphoreStore();
7171

72-
case 0 === strpos($connection, 'redis://'):
73-
case 0 === strpos($connection, 'rediss://'):
74-
case 0 === strpos($connection, 'memcached://'):
72+
case 0 === strpos($connection, 'redis:'):
73+
case 0 === strpos($connection, 'rediss:'):
74+
case 0 === strpos($connection, 'memcached:'):
7575
if (!class_exists(AbstractAdapter::class)) {
7676
throw new InvalidArgumentException(sprintf('Unsupported DSN "%s". Try running "composer require symfony/cache".', $connection));
7777
}
78-
$storeClass = 0 === strpos($connection, 'memcached://') ? MemcachedStore::class : RedisStore::class;
78+
$storeClass = 0 === strpos($connection, 'memcached:') ? MemcachedStore::class : RedisStore::class;
7979
$connection = AbstractAdapter::createConnection($connection, ['lazy' => true]);
8080

8181
return new $storeClass($connection);

src/Symfony/Component/Lock/Tests/Store/StoreFactoryTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,14 @@ public function validConnections()
6363
}
6464
if (class_exists(\Memcached::class) && class_exists(AbstractAdapter::class)) {
6565
yield ['memcached://server.com', MemcachedStore::class];
66+
yield ['memcached:?host[localhost]&host[localhost:12345]', MemcachedStore::class];
6667
}
6768
if (class_exists(\Redis::class) && class_exists(AbstractAdapter::class)) {
6869
yield ['redis://localhost', RedisStore::class];
6970
yield ['redis://localhost?lazy=1', RedisStore::class];
7071
yield ['redis://localhost?redis_cluster=1', RedisStore::class];
7172
yield ['redis://localhost?redis_cluster=1&lazy=1', RedisStore::class];
73+
yield ['redis:?host[localhost]&host[localhost:6379]&redis_cluster=1', RedisStore::class];
7274
}
7375
if (class_exists(\PDO::class)) {
7476
yield ['sqlite:/tmp/sqlite.db', PdoStore::class];

src/Symfony/Component/Serializer/Tests/Normalizer/Features/CircularReferenceTestTrait.php

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,36 @@
1010
*/
1111
trait CircularReferenceTestTrait
1212
{
13-
abstract protected function getNormalizerForCircularReference(): NormalizerInterface;
13+
abstract protected function getNormalizerForCircularReference(array $defaultContext): NormalizerInterface;
1414

1515
abstract protected function getSelfReferencingModel();
1616

17-
public function testUnableToNormalizeCircularReference()
17+
public function provideUnableToNormalizeCircularReference(): array
1818
{
19-
$normalizer = $this->getNormalizerForCircularReference();
19+
return [
20+
[[], [], 1],
21+
[['circular_reference_limit' => 2], [], 2],
22+
[['circular_reference_limit' => 2], ['circular_reference_limit' => 3], 3],
23+
];
24+
}
25+
26+
/**
27+
* @dataProvider provideUnableToNormalizeCircularReference
28+
*/
29+
public function testUnableToNormalizeCircularReference(array $defaultContext, array $context, int $expectedLimit)
30+
{
31+
$normalizer = $this->getNormalizerForCircularReference($defaultContext);
2032

2133
$obj = $this->getSelfReferencingModel();
2234

2335
$this->expectException(CircularReferenceException::class);
24-
$normalizer->normalize($obj, null, ['circular_reference_limit' => 2]);
36+
$this->expectExceptionMessage(sprintf('A circular reference has been detected when serializing the object of class "%s" (configured limit: %d).', \get_class($obj), $expectedLimit));
37+
$normalizer->normalize($obj, null, $context);
2538
}
2639

2740
public function testCircularReferenceHandler()
2841
{
29-
$normalizer = $this->getNormalizerForCircularReference();
42+
$normalizer = $this->getNormalizerForCircularReference([]);
3043

3144
$obj = $this->getSelfReferencingModel();
3245
$expected = ['me' => \get_class($obj)];

src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,10 @@ protected function getNormalizerForCallbacks(): GetSetMethodNormalizer
231231
return new GetSetMethodNormalizer($classMetadataFactory, new MetadataAwareNameConverter($classMetadataFactory));
232232
}
233233

234-
protected function getNormalizerForCircularReference(): GetSetMethodNormalizer
234+
protected function getNormalizerForCircularReference(array $defaultContext): GetSetMethodNormalizer
235235
{
236236
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
237-
$normalizer = new GetSetMethodNormalizer($classMetadataFactory, new MetadataAwareNameConverter($classMetadataFactory));
237+
$normalizer = new GetSetMethodNormalizer($classMetadataFactory, new MetadataAwareNameConverter($classMetadataFactory), null, null, null, $defaultContext);
238238
new Serializer([$normalizer]);
239239

240240
return $normalizer;

src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,9 +338,9 @@ protected function getNormalizerForCallbacks(): ObjectNormalizer
338338

339339
// circular reference
340340

341-
protected function getNormalizerForCircularReference(): ObjectNormalizer
341+
protected function getNormalizerForCircularReference(array $defaultContext): ObjectNormalizer
342342
{
343-
$normalizer = new ObjectNormalizer();
343+
$normalizer = new ObjectNormalizer(null, null, null, null, null, null, $defaultContext);
344344
new Serializer([$normalizer]);
345345

346346
return $normalizer;

src/Symfony/Component/Serializer/Tests/Normalizer/PropertyNormalizerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,9 @@ protected function getNormalizerForCallbacks(): PropertyNormalizer
163163
return new PropertyNormalizer();
164164
}
165165

166-
protected function getNormalizerForCircularReference(): PropertyNormalizer
166+
protected function getNormalizerForCircularReference(array $defaultContext): PropertyNormalizer
167167
{
168-
$normalizer = new PropertyNormalizer();
168+
$normalizer = new PropertyNormalizer(null, null, null, null, null, $defaultContext);
169169
new Serializer([$normalizer]);
170170

171171
return $normalizer;

0 commit comments

Comments
 (0)