change wrapped exception message to be more usefull
This commit is contained in:
parent
6c531c132b
commit
d015a0f660
@ -210,7 +210,7 @@ class XmlFileLoader extends FileLoader
|
|||||||
try {
|
try {
|
||||||
$dom = XmlUtils::loadFile($file, array($this, 'validateSchema'));
|
$dom = XmlUtils::loadFile($file, array($this, 'validateSchema'));
|
||||||
} catch (\InvalidArgumentException $e) {
|
} catch (\InvalidArgumentException $e) {
|
||||||
throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
|
throw new InvalidArgumentException(sprintf('Unable to parse file "%s".', $file), $e->getCode(), $e);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->validateExtensions($dom, $file);
|
$this->validateExtensions($dom, $file);
|
||||||
|
@ -50,7 +50,7 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$loader->load('foo.xml');
|
$loader->load('foo.xml');
|
||||||
$this->fail('->load() throws an InvalidArgumentException if the loaded file does not exist');
|
$this->fail('->load() throws an InvalidArgumentException if the loaded file does not exist');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$this->assertInstanceOf('\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the loaded file does not exist');
|
$this->assertInstanceOf('InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the loaded file does not exist');
|
||||||
$this->assertStringStartsWith('The file "foo.xml" does not exist (in:', $e->getMessage(), '->load() throws an InvalidArgumentException if the loaded file does not exist');
|
$this->assertStringStartsWith('The file "foo.xml" does not exist (in:', $e->getMessage(), '->load() throws an InvalidArgumentException if the loaded file does not exist');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -66,7 +66,11 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$m->invoke($loader, self::$fixturesPath.'/ini/parameters.ini');
|
$m->invoke($loader, self::$fixturesPath.'/ini/parameters.ini');
|
||||||
$this->fail('->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
$this->fail('->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$this->assertInstanceOf('\InvalidArgumentException', $e, '->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
$this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Exception\\InvalidArgumentException', $e, '->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
||||||
|
$this->assertRegExp(sprintf('#^Unable to parse file ".+%s".$#', 'parameters.ini'), $e->getMessage(), '->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
||||||
|
|
||||||
|
$e = $e->getPrevious();
|
||||||
|
$this->assertInstanceOf('InvalidArgumentException', $e, '->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
||||||
$this->assertStringStartsWith('[ERROR 4] Start tag expected, \'<\' not found (in', $e->getMessage(), '->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
$this->assertStringStartsWith('[ERROR 4] Start tag expected, \'<\' not found (in', $e->getMessage(), '->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +80,11 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$m->invoke($loader, self::$fixturesPath.'/xml/nonvalid.xml');
|
$m->invoke($loader, self::$fixturesPath.'/xml/nonvalid.xml');
|
||||||
$this->fail('->parseFile() throws an InvalidArgumentException if the loaded file does not validate the XSD');
|
$this->fail('->parseFile() throws an InvalidArgumentException if the loaded file does not validate the XSD');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$this->assertInstanceOf('\InvalidArgumentException', $e, '->parseFile() throws an InvalidArgumentException if the loaded file does not validate the XSD');
|
$this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Exception\\InvalidArgumentException', $e, '->parseFile() throws an InvalidArgumentException if the loaded file does not validate the XSD');
|
||||||
|
$this->assertRegExp(sprintf('#^Unable to parse file ".+%s".$#', 'nonvalid.xml'), $e->getMessage(), '->parseFile() throws an InvalidArgumentException if the loaded file is not a valid XML file');
|
||||||
|
|
||||||
|
$e = $e->getPrevious();
|
||||||
|
$this->assertInstanceOf('InvalidArgumentException', $e, '->parseFile() throws an InvalidArgumentException if the loaded file does not validate the XSD');
|
||||||
$this->assertStringStartsWith('[ERROR 1845] Element \'nonvalid\': No matching global declaration available for the validation root. (in', $e->getMessage(), '->parseFile() throws an InvalidArgumentException if the loaded file does not validate the XSD');
|
$this->assertStringStartsWith('[ERROR 1845] Element \'nonvalid\': No matching global declaration available for the validation root. (in', $e->getMessage(), '->parseFile() throws an InvalidArgumentException if the loaded file does not validate the XSD');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,8 +270,12 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$loader->load('extensions/services3.xml');
|
$loader->load('extensions/services3.xml');
|
||||||
$this->fail('->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
$this->fail('->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$this->assertInstanceOf('\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
$this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Exception\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
$this->assertRegexp('/The attribute \'bar\' is not allowed/', $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
$this->assertRegExp(sprintf('#^Unable to parse file ".+%s".$#', 'services3.xml'), $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
|
|
||||||
|
$e = $e->getPrevious();
|
||||||
|
$this->assertInstanceOf('InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
|
$this->assertContains('The attribute \'bar\' is not allowed', $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
}
|
}
|
||||||
|
|
||||||
// non-registered extension
|
// non-registered extension
|
||||||
@ -295,8 +307,12 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$loader->load('extensions/services7.xml');
|
$loader->load('extensions/services7.xml');
|
||||||
$this->fail('->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
$this->fail('->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$this->assertInstanceOf('\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
$this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Exception\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
$this->assertRegexp('/The attribute \'bar\' is not allowed/', $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
$this->assertRegExp(sprintf('#^Unable to parse file ".+%s".$#', 'services7.xml'), $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
|
|
||||||
|
$e = $e->getPrevious();
|
||||||
|
$this->assertInstanceOf('InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
|
$this->assertContains('The attribute \'bar\' is not allowed', $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration does not validate the XSD');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,15 +349,23 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals('BarClass2', $inner2->getClass(), '->load() uses the same configuration as for the anonymous ones');
|
$this->assertEquals('BarClass2', $inner2->getClass(), '->load() uses the same configuration as for the anonymous ones');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @expectedException \InvalidArgumentException
|
|
||||||
* @expectedExceptionMessage Document types are not allowed.
|
|
||||||
*/
|
|
||||||
public function testDocTypeIsNotAllowed()
|
public function testDocTypeIsNotAllowed()
|
||||||
{
|
{
|
||||||
$container = new ContainerBuilder();
|
$container = new ContainerBuilder();
|
||||||
|
|
||||||
$loader1 = new XmlFileLoader($container, new FileLocator(self::$fixturesPath.'/xml'));
|
$loader = new XmlFileLoader($container, new FileLocator(self::$fixturesPath.'/xml'));
|
||||||
$loader1->load('withdoctype.xml');
|
|
||||||
|
// document types are not allowed.
|
||||||
|
try {
|
||||||
|
$loader->load('withdoctype.xml');
|
||||||
|
$this->fail('->load() throws an InvalidArgumentException if the configuration contains a document type');
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Exception\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration contains a document type');
|
||||||
|
$this->assertRegExp(sprintf('#^Unable to parse file ".+%s".$#', 'withdoctype.xml'), $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration contains a document type');
|
||||||
|
|
||||||
|
$e = $e->getPrevious();
|
||||||
|
$this->assertInstanceOf('InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration contains a document type');
|
||||||
|
$this->assertSame('Document types are not allowed.', $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration contains a document type');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user