[Validator] Fix init of YamlFileLoader::$classes for empty files

This commit is contained in:
Nicolas Grekas 2016-12-08 13:07:24 +01:00
parent 7a07c1b464
commit 073a1dae13
2 changed files with 7 additions and 9 deletions

View File

@ -46,13 +46,7 @@ class YamlFileLoader extends FileLoader
$this->yamlParser = new YamlParser(); $this->yamlParser = new YamlParser();
} }
// This method may throw an exception. Do not modify the class' $this->classes = $this->parseFile($this->file);
// state before it completes
if (false === ($classes = $this->parseFile($this->file))) {
return false;
}
$this->classes = $classes;
if (isset($this->classes['namespaces'])) { if (isset($this->classes['namespaces'])) {
foreach ($this->classes['namespaces'] as $alias => $namespace) { foreach ($this->classes['namespaces'] as $alias => $namespace) {
@ -111,7 +105,7 @@ class YamlFileLoader extends FileLoader
* *
* @param string $path The path of the YAML file * @param string $path The path of the YAML file
* *
* @return array|null The class descriptions or null, if the file was empty * @return array The class descriptions
* *
* @throws \InvalidArgumentException If the file could not be loaded or did * @throws \InvalidArgumentException If the file could not be loaded or did
* not contain a YAML array * not contain a YAML array
@ -126,7 +120,7 @@ class YamlFileLoader extends FileLoader
// empty file // empty file
if (null === $classes) { if (null === $classes) {
return; return array();
} }
// not an array // not an array

View File

@ -31,6 +31,10 @@ class YamlFileLoaderTest extends \PHPUnit_Framework_TestCase
$metadata = new ClassMetadata('Symfony\Component\Validator\Tests\Fixtures\Entity'); $metadata = new ClassMetadata('Symfony\Component\Validator\Tests\Fixtures\Entity');
$this->assertFalse($loader->loadClassMetadata($metadata)); $this->assertFalse($loader->loadClassMetadata($metadata));
$r = new \ReflectionProperty($loader, 'classes');
$r->setAccessible(true);
$this->assertSame(array(), $r->getValue($loader));
} }
/** /**