summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/autoloader.php11
-rw-r--r--tests/lib/autoloader.php27
2 files changed, 23 insertions, 15 deletions
diff --git a/lib/autoloader.php b/lib/autoloader.php
index d84924d5969..9615838a9a2 100644
--- a/lib/autoloader.php
+++ b/lib/autoloader.php
@@ -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) {
diff --git a/tests/lib/autoloader.php b/tests/lib/autoloader.php
index d9fc016adf5..0e7d606ccf6 100644
--- a/tests/lib/autoloader.php
+++ b/tests/lib/autoloader.php
@@ -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]);
}
}