[Config] Reverting some meaningless changes that are no longer needed to minimize the true diff of the changes. Increasing the test precision.

This commit is contained in:
Ryan Weaver 2011-02-18 13:08:53 -06:00
parent 6f17b6d58e
commit d2971e0f5f
2 changed files with 18 additions and 9 deletions

View File

@ -405,24 +405,24 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface
return $normalized;
}
// note that this purposefully does not exclude unrecognized child keys.
// unrecognized keys are just added in - validation takes place in finalize
$normalized = array();
foreach ($this->children as $name => $child) {
if (!array_key_exists($name, $value)) {
continue;
}
$value[$name] = $child->normalize($value[$name]);
$normalized[$name] = $child->normalize($value[$name]);
unset($value[$name]);
}
// if extra fields are present, throw exception
if ($diff = array_diff(array_keys($value), array_keys($this->children))) {
$msg = sprintf('Unrecognized options "%s" under "%s"', implode(', ', $diff), $this->getPath());
if (count($value)) {
$msg = sprintf('Unrecognized options "%s" under "%s"', implode(', ', array_keys($value)), $this->getPath());
throw new InvalidConfigurationException($msg);
}
return $value;
return $normalized;
}
/**

View File

@ -51,12 +51,21 @@ class ArrayNodeTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(array ('test'), $node->getDefaultValue());
}
// finalizeValue() should protect against child values with no corresponding node
/**
* normalize() should protect against child values with no corresponding node
*/
public function testExceptionThrownOnUnrecognizedChild()
{
$this->setExpectedException('Symfony\Component\Config\Definition\Exception\InvalidConfigurationException');
$node = new ArrayNode('root');
$node->normalize(array('foo' => 'bar'));
try
{
$node->normalize(array('foo' => 'bar'));
$this->fail('An exception should have been throw for a bad child node');
} catch (\Exception $e) {
$this->assertInstanceOf('Symfony\Component\Config\Definition\Exception\InvalidConfigurationException', $e);
$this->assertEquals('Unrecognized options "foo" under "root"', $e->getMessage());
}
}
// a remapped key (e.g. "mapping" -> "mappings") should be unset after being used