Skip to content

Commit ca720c0

Browse files
Merge branch '7.3' into 7.4
* 7.3: [TypeInfo] Add space after glue comma Remove obsolete code for solved Psalm issue in workflow [HttpKernel] #[MapUploadedFile] throws http exception on empty files array if argument not nullable nor has default value
2 parents 55e5c9e + afe3e3f commit ca720c0

File tree

19 files changed

+94
-43
lines changed

19 files changed

+94
-43
lines changed

.github/workflows/psalm.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ jobs:
5050
git checkout composer.json
5151
git checkout -m ${{ github.base_ref }}
5252
53-
# @todo intersection types are broken in Psalm
54-
# @see https://github.com/vimeo/psalm/issues/7520
55-
sed -i 's/Uuid&/Uuid|/' src/Symfony/Component/Uid/Factory/TimeBasedUuidFactory.php
56-
sed -i 's/Interface&/Interface|/' src/Symfony/Component/HttpFoundation/Session/Storage/Handler/MigratingSessionHandler.php
5753
./vendor/bin/psalm.phar --set-baseline=.github/psalm/psalm.baseline.xml --no-progress
5854
git checkout -m FETCH_HEAD
5955

src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,10 @@ private function mapRequestPayload(Request $request, ArgumentMetadata $argument,
232232

233233
private function mapUploadedFile(Request $request, ArgumentMetadata $argument, MapUploadedFile $attribute): UploadedFile|array|null
234234
{
235-
if (!($files = $request->files->get($attribute->name ?? $argument->getName(), [])) && ($argument->isNullable() || $argument->hasDefaultValue())) {
235+
if (!($files = $request->files->get($attribute->name ?? $argument->getName())) && ($argument->isNullable() || $argument->hasDefaultValue())) {
236236
return null;
237237
}
238238

239-
return $files;
239+
return $files ?? ('array' === $argument->getType() ? [] : null);
240240
}
241241
}

src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/UploadedFileValueResolverTest.php

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,33 @@ static function () {},
7979
$request,
8080
HttpKernelInterface::MAIN_REQUEST
8181
);
82+
83+
$this->expectException(HttpException::class);
84+
85+
$resolver->onKernelControllerArguments($event);
86+
}
87+
88+
#[DataProvider('provideContext')]
89+
public function testEmptyArrayArgument(RequestPayloadValueResolver $resolver, Request $request)
90+
{
91+
$attribute = new MapUploadedFile();
92+
$argument = new ArgumentMetadata(
93+
'qux',
94+
'array',
95+
false,
96+
false,
97+
null,
98+
false,
99+
[$attribute::class => $attribute]
100+
);
101+
$event = new ControllerArgumentsEvent(
102+
$this->createMock(HttpKernelInterface::class),
103+
static function () {},
104+
$resolver->resolve($request, $argument),
105+
$request,
106+
HttpKernelInterface::MAIN_REQUEST
107+
);
108+
82109
$resolver->onKernelControllerArguments($event);
83110
$data = $event->getArguments()[0];
84111

@@ -318,6 +345,34 @@ static function () {},
318345
$this->assertNull($data);
319346
}
320347

348+
#[DataProvider('provideContext')]
349+
public function testShouldAllowEmptyWhenNullableArray(RequestPayloadValueResolver $resolver, Request $request)
350+
{
351+
$attribute = new MapUploadedFile();
352+
$argument = new ArgumentMetadata(
353+
'qux',
354+
'array',
355+
false,
356+
false,
357+
null,
358+
true,
359+
[$attribute::class => $attribute]
360+
);
361+
/** @var HttpKernelInterface&MockObject $httpKernel */
362+
$httpKernel = $this->createMock(HttpKernelInterface::class);
363+
$event = new ControllerArgumentsEvent(
364+
$httpKernel,
365+
static function () {},
366+
$resolver->resolve($request, $argument),
367+
$request,
368+
HttpKernelInterface::MAIN_REQUEST
369+
);
370+
$resolver->onKernelControllerArguments($event);
371+
$data = $event->getArguments()[0];
372+
373+
$this->assertNull($data);
374+
}
375+
321376
#[DataProvider('provideContext')]
322377
public function testShouldAllowEmptyWhenHasDefaultValue(RequestPayloadValueResolver $resolver, Request $request)
323378
{

src/Symfony/Component/JsonStreamer/Tests/Fixtures/stream_reader/dict.php

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Symfony/Component/JsonStreamer/Tests/Fixtures/stream_reader/dict.stream.php

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Symfony/Component/JsonStreamer/Tests/Fixtures/stream_reader/nullable_object_dict.php

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Symfony/Component/JsonStreamer/Tests/Fixtures/stream_reader/nullable_object_dict.stream.php

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Symfony/Component/JsonStreamer/Tests/Fixtures/stream_reader/object_dict.php

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Symfony/Component/JsonStreamer/Tests/Fixtures/stream_reader/object_dict.stream.php

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Symfony/Component/JsonStreamer/Tests/Fixtures/stream_reader/object_iterable.php

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)