Skip to content

Commit

Permalink
Merge branch '5.0' into 5.1
Browse files Browse the repository at this point in the history
* 5.0:
  [DependencyInjection][CheckTypeDeclarationsPass] Handle unresolved parameters pointing to environment variables
  switch the context when validating nested forms
  remove unused param from validator service config
  Fix typo
  [HttpKernel] Fix regression where Store does not return response body correctly
  rework form validator tests
  Update AbstractController.php
  • Loading branch information
nicolas-grekas committed Jun 12, 2020
2 parents 9536b70 + de63ab0 commit 6508423
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
4 changes: 3 additions & 1 deletion Compiler/CheckTypeDeclarationsPass.php
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,9 @@ private function checkType(Definition $checkedDefinition, $value, \ReflectionPar
} elseif (\is_string($value)) {
if ('%' === ($value[0] ?? '') && preg_match('/^%([^%]+)%$/', $value, $match)) {
$value = $this->container->getParameter(substr($value, 1, -1));
} elseif ($envPlaceholderUniquePrefix && false !== strpos($value, 'env_')) {
}

if ($envPlaceholderUniquePrefix && \is_string($value) && false !== strpos($value, 'env_')) {
// If the value is an env placeholder that is either mixed with a string or with another env placeholder, then its resolved value will always be a string, so we don't need to resolve it.
// We don't need to change the value because it is already a string.
if ('' === preg_replace('/'.$envPlaceholderUniquePrefix.'_\w+_[a-f0-9]{32}/U', '', $value, -1, $c) && 1 === $c) {
Expand Down
16 changes: 13 additions & 3 deletions Tests/Compiler/CheckTypeDeclarationsPassTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -780,17 +780,27 @@ public function testExpressionLanguageWithSyntheticService()

public function testProcessResolveParameters()
{
$container = new ContainerBuilder();
putenv('ARRAY={"foo":"bar"}');

$container = new ContainerBuilder(new EnvPlaceholderParameterBag([
'env_array_param' => '%env(json:ARRAY)%',
]));
$container->setParameter('array_param', ['foobar']);
$container->setParameter('string_param', 'ccc');

$container
->register('foobar', BarMethodCall::class)
$definition = $container->register('foobar', BarMethodCall::class);
$definition
->addMethodCall('setArray', ['%array_param%'])
->addMethodCall('setString', ['%string_param%']);

(new ResolveParameterPlaceHoldersPass())->process($container);

$definition->addMethodCall('setArray', ['%env_array_param%']);

(new CheckTypeDeclarationsPass(true))->process($container);

$this->addToAssertionCount(1);

putenv('ARRAY=');
}
}

0 comments on commit 6508423

Please sign in to comment.