Merge branch '7.4' into 8.0

* 7.4: (21 commits)
  [WebProfilerBundle] Fix hot reload support (FrankenPHP)
  [Serializer] Normalize static methods when they have groups
  [PropertyInfo] fix compatibility with phpdocumentor/reflection-docblock 6.x
  [DoctrineBridge] Respect schema_filter in schema listeners
  [HttpClient] Fix destructor throwing while timeout was handled
  [HttpClient] Test throwing destructor together with retryable
  [Mime] Update mime types
  [HttpFoundation] Reject invalid paths
  [HttpKernel] Fix handling empty MapUploadedFile arrays
  [FrameworkBundle] Add missing `useAttributeAsKey` calls
  [Di] Fix invalid reference behavior
  When calling UploadedFile::getErrorMessage() to a file which has no error and is uploaded successfully, it should not return an error
  [HttpKernel] Bypass mapping construction when `RedirectController::urlRedirectAction` is triggered
  cs fix
  [Console] fall back to 0 when getCode() does not provide an integer
  fix merge
  [FrameworkBundle] Fix accessing the test container when using KernelTestCase in non-debug mode
  Fix running HttpClient tests
  [FrameworkBundle] Fix clearing the HttpCache store in tests
  [DependencyInjection][HttpKernel] Fix parsing Target attributes on properties and on controllers
  ...
This commit is contained in:
Nicolas Grekas
2026-02-05 17:06:41 +01:00
6 changed files with 15 additions and 6 deletions

View File

@@ -547,6 +547,7 @@ class Configuration implements ConfigurationInterface
->cannotBeEmpty()
->end()
->arrayNode('metadata')
->useAttributeAsKey('key')
->normalizeKeys(false)
->defaultValue([])
->example(['color' => 'blue', 'description' => 'Workflow to manage article.'])
@@ -673,6 +674,7 @@ class Configuration implements ConfigurationInterface
->end()
->end()
->arrayNode('metadata')
->useAttributeAsKey('key')
->normalizeKeys(false)
->defaultValue([])
->example(['color' => 'blue', 'description' => 'Workflow to manage article.'])
@@ -683,6 +685,7 @@ class Configuration implements ConfigurationInterface
->end()
->end()
->arrayNode('metadata')
->useAttributeAsKey('key')
->normalizeKeys(false)
->defaultValue([])
->example(['color' => 'blue', 'description' => 'Workflow to manage article.'])
@@ -1211,6 +1214,7 @@ class Configuration implements ConfigurationInterface
{
$defaultContextNode = fn () => (new NodeBuilder())
->arrayNode('default_context')
->useAttributeAsKey('key')
->normalizeKeys(false)
->validate()
->ifTrue(fn () => $this->debug && class_exists(JsonParser::class))
@@ -1733,6 +1737,7 @@ class Configuration implements ConfigurationInterface
->scalarNode('dsn')->end()
->scalarNode('serializer')->defaultNull()->info('Service id of a custom serializer to use.')->end()
->arrayNode('options', 'option')
->useAttributeAsKey('key')
->normalizeKeys(false)
->defaultValue([])
->prototype('variable')

View File

@@ -31,6 +31,7 @@ class RedirectableCompiledUrlMatcher extends CompiledUrlMatcher implements Redir
'httpPort' => $this->context->getHttpPort(),
'httpsPort' => $this->context->getHttpsPort(),
'_route' => $route,
'_route_mapping' => [],
];
}
}

View File

@@ -80,7 +80,7 @@ abstract class KernelTestCase extends TestCase
// If the cache warmer is registered, it means that the cache has been
// warmed up, so the current container is not fresh anymore. Let's
// reboot a fresh one.
if (self::getContainer()->initialized('cache_warmer')) {
if ($kernel->getContainer()->initialized('cache_warmer')) {
static::ensureKernelShutdown();
$kernel = static::createKernel($options);
@@ -142,7 +142,7 @@ abstract class KernelTestCase extends TestCase
$httpCacheDir = null;
if ($container->has('http_cache')) {
$httpCacheDir = static::$kernel->getCacheDir().'/http_cache';
$httpCacheDir = static::$kernel->getShareDir().'/http_cache';
}
if ($container->has('services_resetter')) {

View File

@@ -24,9 +24,10 @@ class TestServiceContainerTest extends AbstractWebTestCase
{
public function testLogicExceptionIfTestConfigIsDisabled()
{
$this->expectException(\LogicException::class);
static::bootKernel(['test_case' => 'TestServiceContainer', 'root_config' => 'test_disabled.yml', 'environment' => 'test_disabled']);
$this->expectException(\LogicException::class);
static::getContainer();
}
public function testThatPrivateServicesAreAvailableIfTestConfigIsEnabled()

View File

@@ -36,6 +36,7 @@ class RedirectableCompiledUrlMatcherTest extends TestCase
'httpPort' => $context->getHttpPort(),
'httpsPort' => $context->getHttpsPort(),
'_route' => 'foo',
'_route_mapping' => [],
],
$matcher->match('/foo')
);
@@ -57,6 +58,7 @@ class RedirectableCompiledUrlMatcherTest extends TestCase
'httpPort' => $context->getHttpPort(),
'httpsPort' => $context->getHttpsPort(),
'_route' => 'foo',
'_route_mapping' => [],
],
$matcher->match('/foo')
);

View File

@@ -36,7 +36,7 @@
"require-dev": {
"doctrine/persistence": "^1.3|^2|^3",
"dragonmantank/cron-expression": "^3.1",
"phpdocumentor/reflection-docblock": "^5.2",
"phpdocumentor/reflection-docblock": "^5.2|^6.0",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"seld/jsonlint": "^1.10",
"symfony/asset": "^7.4|^8.0",
@@ -81,7 +81,7 @@
},
"conflict": {
"doctrine/persistence": "<1.3",
"phpdocumentor/reflection-docblock": "<5.2|>=6",
"phpdocumentor/reflection-docblock": "<5.2|>=7",
"phpdocumentor/type-resolver": "<1.5.1",
"symfony/console": "<7.4",
"symfony/form": "<7.4",