MDL-79697 core: PSR-4 NS can be spread across multiple dirs
The PSR-4 specification does not preclude a single namespaces from having multiple sources. This is the case for several PSR standards including standard packagist packages distributed by PSR: - PSR-7 - HTTP Message Interfaces: \Psr\Http\Message - PSR-17 - HTTP Factories: \Psr\Http\Message - PSR-15 - http-server-handler: \Psr\Http\Server - PSR-15 - http-server-middleware: \Psr\Http\Server
This commit is contained in:
@@ -631,7 +631,8 @@ class component_test extends advanced_testcase {
|
||||
// This is not in the spec, but may come up in some libraries using both namespaces and PEAR-style class names.
|
||||
// If problems arise we can remove this test, but will need to add a warning.
|
||||
// Normalise to forward slash for testing purposes.
|
||||
$directory = str_replace('\\', '/', $CFG->dirroot) . "/lib/tests/fixtures/component/";
|
||||
$dirroot = str_replace('\\', '/', $CFG->dirroot);
|
||||
$directory = "{$dirroot}/lib/tests/fixtures/component/";
|
||||
|
||||
$psr0 = [
|
||||
'psr0' => 'lib/tests/fixtures/component/psr0',
|
||||
@@ -702,6 +703,28 @@ class component_test extends advanced_testcase {
|
||||
'classname' => 'overlap_subnamespace_example2',
|
||||
'file' => "{$directory}overlap/subnamespace/example2.php",
|
||||
],
|
||||
'PSR-4 namespaces can come from multiple sources - first source' => [
|
||||
'psr0' => $psr0,
|
||||
'psr4' => [
|
||||
'Psr\\Http\\Message' => [
|
||||
'lib/psr/http-message/src',
|
||||
'lib/psr/http-factory/src',
|
||||
],
|
||||
],
|
||||
'classname' => 'Psr\Http\Message\ServerRequestInterface',
|
||||
'includedfiles' => "{$dirroot}/lib/psr/http-message/src/ServerRequestInterface.php",
|
||||
],
|
||||
'PSR-4 namespaces can come from multiple sources - second source' => [
|
||||
'psr0' => [],
|
||||
'psr4' => [
|
||||
'Psr\\Http\\Message' => [
|
||||
'lib/psr/http-message/src',
|
||||
'lib/psr/http-factory/src',
|
||||
],
|
||||
],
|
||||
'classname' => 'Psr\Http\Message\ServerRequestFactoryInterface',
|
||||
'includedfiles' => "{$dirroot}/lib/psr/http-factory/src/ServerRequestFactoryInterface.php",
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user