Autoloader: fix loading app clases located in lib/
This commit is contained in:
parent
e21a3a1a23
commit
71fc4a2cf4
|
@ -78,14 +78,15 @@ class Autoloader {
|
|||
} elseif (strpos($class, 'OC\\') === 0) {
|
||||
$paths[] = strtolower(str_replace('\\', '/', substr($class, 3)) . '.php');
|
||||
} elseif (strpos($class, 'OCP\\') === 0) {
|
||||
$paths[] = 'public/' . strtolower(str_replace('\\', '/', substr($class, 3)) . '.php');
|
||||
$paths[] = 'public/' . strtolower(str_replace('\\', '/', substr($class, 4)) . '.php');
|
||||
} elseif (strpos($class, 'OCA\\') === 0) {
|
||||
list(, $app, $rest) = explode('\\', $class, 3);
|
||||
$app = strtolower($app);
|
||||
foreach (\OC::$APPSROOTS as $appDir) {
|
||||
list(, $app,) = explode('\\', $class);
|
||||
if (stream_resolve_include_path($appDir['path'] . '/' . strtolower($app))) {
|
||||
$paths[] = $appDir['path'] . '/' . strtolower(str_replace('\\', '/', substr($class, 4)) . '.php');
|
||||
if (stream_resolve_include_path($appDir['path'] . '/' . $app)) {
|
||||
$paths[] = $appDir['path'] . '/' . $app . '/' . strtolower(str_replace('\\', '/', $rest) . '.php');
|
||||
// If not found in the root of the app directory, insert '/lib' after app id and try again.
|
||||
$paths[] = $appDir['path'] . '/lib/' . strtolower(str_replace('\\', '/', substr($class, 4)) . '.php');
|
||||
$paths[] = $appDir['path'] . '/' . $app . '/lib/' . strtolower(str_replace('\\', '/', $rest) . '.php');
|
||||
}
|
||||
}
|
||||
} elseif (strpos($class, 'Test_') === 0) {
|
||||
|
|
|
@ -45,23 +45,30 @@ class AutoLoader extends \PHPUnit_Framework_TestCase {
|
|||
$this->assertEquals(array('foo/Foo/Bar.php'), $this->loader->findClass('Foo_Bar'));
|
||||
}
|
||||
|
||||
public function loadTestNamespace() {
|
||||
$this->assertEquals(array('test/foo/bar.php'), $this->loader->findClass('Test\Foo\Bar'));
|
||||
public function testLoadTestNamespace() {
|
||||
$this->assertEquals(array('tests/lib/foo/bar.php'), $this->loader->findClass('Test\Foo\Bar'));
|
||||
}
|
||||
|
||||
public function loadTest() {
|
||||
$this->assertEquals(array('test/foo/bar.php'), $this->loader->findClass('Test_Foo_Bar'));
|
||||
public function testLoadTest() {
|
||||
$this->assertEquals(array('tests/lib/foo/bar.php'), $this->loader->findClass('Test_Foo_Bar'));
|
||||
}
|
||||
|
||||
public function loadCoreNamespace() {
|
||||
$this->assertEquals(array('lib/foo/bar.php'), $this->loader->findClass('OC\Foo\Bar'));
|
||||
public function testLoadCoreNamespace() {
|
||||
$this->assertEquals(array('foo/bar.php'), $this->loader->findClass('OC\Foo\Bar'));
|
||||
}
|
||||
|
||||
public function loadCore() {
|
||||
$this->assertEquals(array('lib/legacy/foo/bar.php', 'lib/foo/bar.php'), $this->loader->findClass('OC_Foo_Bar'));
|
||||
public function testLoadCore() {
|
||||
$this->assertEquals(array('legacy/foo/bar.php', 'foo/bar.php'), $this->loader->findClass('OC_Foo_Bar'));
|
||||
}
|
||||
|
||||
public function loadPublicNamespace() {
|
||||
$this->assertEquals(array('lib/public/foo/bar.php'), $this->loader->findClass('OCP\Foo\Bar'));
|
||||
public function testLoadPublicNamespace() {
|
||||
$this->assertEquals(array('public/foo/bar.php'), $this->loader->findClass('OCP\Foo\Bar'));
|
||||
}
|
||||
|
||||
public function testLoadAppNamespace() {
|
||||
$result = $this->loader->findClass('OCA\Files\Foobar');
|
||||
$this->assertEquals(2, count($result));
|
||||
$this->assertStringEndsWith('apps/files/foobar.php', $result[0]);
|
||||
$this->assertStringEndsWith('apps/files/lib/foobar.php', $result[1]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue