8000 Merge branch '2.8' into 3.1 · symfony/symfony@53d2bde · GitHub
[go: up one dir, main page]

Skip to content

Commit 53d2bde

Browse files
committed
Merge branch '2.8' into 3.1
* 2.8: Use "more entropy" option for uniqid() reset constraint options added checks for public services on compiler passes that use service id and not references
2 parents 0a56032 + fcd401f commit 53d2bde

File tree

6 files changed

+48
-4
lines changed

6 files changed

+48
-4
lines changed

src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public function getProxyCandidates()
107107
$definitions = array(
108108
array(new Definition(__CLASS__), true),
109109
array(new Definition('stdClass'), true),
110-
array(new Definition('foo'.uniqid()), false),
110+
array(new Definition(uniqid('foo', true)), false),
111111
array(new Definition(), false),
112112
);
113113

src/Symfony/Bridge/Twig/Command/LintCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
105105
$template .= fread(STDIN, 1024);
106106
}
107107

108-
return $this->display($input, $output, $io, array($this->validate($twig, $template, uniqid('sf_'))));
108+
return $this->display($input, $output, $io, array($this->validate($twig, $template, uniqid('sf_', true))));
109109
}
110110

111111
$filesInfo = $this->getFilesInfo($twig, $filenames);

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@ public function process(ContainerBuilder $container)
2828
$validators[$attributes[0]['alias']] = $id;
2929
}
3030

31-
$validators[$container->getDefinition($id)->getClass()] = $id;
31+
$definition = $container->getDefinition($id);
32+
33+
if (!$definition->isPublic()) {
34+
throw new InvalidArgumentException(sprintf('The service "%s" must be public as it can be lazy-loaded.', $id));
35+
}
36+
37+
if ($definition->isAbstract()) {
38+
throw new InvalidArgumentException(sprintf('The service "%s" must not be abstract as it can be lazy-loaded.', $id));
39+
}
40+
41+
$validators[$definition->getClass()] = $id;
3242
}
3343

3444
$container->getDefinition('validator.validator_factory')->replaceArgument(1, $validators);

src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public function build(ContainerBuilder $container)
7575
// but as late as possible to get resolved parameters
7676
$container->addCompilerPass(new RegisterListenersPass(), PassConfig::TYPE_BEFORE_REMOVING);
7777
$container->addCompilerPass(new TemplatingPass());
78-
$container->addCompilerPass(new AddConstraintValidatorsPass());
78+
$container->addCompilerPass(new AddConstraintValidatorsPass(), PassConfig::TYPE_BEFORE_REMOVING);
7979
$container->addCompilerPass(new AddValidatorInitializersPass());
8080
$container->addCompilerPass(new AddConsoleCommandPass());
8181
$container->addCompilerPass(new FormPass());

src/Symfony/Component/Validator/Constraint.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ public function __construct($options = null)
129129
unset($options['value']);
130130
}
131131

132+
if (is_array($options)) {
133+
reset($options);
134+
}
132135
if (is_array($options) && count($options) > 0 && is_string(key($options))) {
133136
foreach ($options as $option => $value) {
134137
if (array_key_exists($option, $knownOptions)) {

src/Symfony/Component/Validator/Tests/ConstraintTest.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,4 +206,35 @@ public function testGetErrorNameForUnknownCode()
206206
{
207207
Constraint::getErrorName(1);
208208
}
209+
210+
public function testOptionsAsDefaultOption()
211+
{
212+
$constraint = new ConstraintA($options = array('value1'));
213+
214+
$this->assertEquals($options, $constraint->property2);
215+
216+
$constraint = new ConstraintA($options = array('value1', 'property1' => 'value2'));
217+
218+
$this->assertEquals($options, $constraint->property2);
219+
}
220+
221+
/**
222+
* @expectedException \Symfony\Component\Validator\Exception\InvalidOptionsException
223+
* @expectedExceptionMessage The options "0", "5" do not exist
224+
*/
225+
public function testInvalidOptions()
226+
{
227+
new ConstraintA(array('property2' => 'foo', 'bar', 5 => 'baz'));
228+
}
229+
230+
public function testOptionsWithInvalidInternalPointer()
231+
{
232+
$options = array('property1' => 'foo');
233+
next($options);
234+
next($options);
235+
236+
$constraint = new ConstraintA($options);
237+
238+
$this->assertEquals('foo', $constraint->property1);
239+
}
209240
}

0 commit comments

Comments
 (0)
0