From 255c0be7fc1e3a324b19ccfa75807900597b7292 Mon Sep 17 00:00:00 2001 From: Pierre du Plessis Date: Mon, 4 Feb 2013 10:12:41 +0200 Subject: [PATCH] Added tests for include path flag --- .../Test/Autoload/AutoloadGeneratorTest.php | 29 +++++++-- .../Fixtures/autoload_real_include_path.php | 64 +++++++++++++++++++ 2 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 tests/Composer/Test/Autoload/Fixtures/autoload_real_include_path.php diff --git a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php index e763d2742..233b399af 100644 --- a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php +++ b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php @@ -55,11 +55,6 @@ class AutoloadGeneratorTest extends TestCase return $that->vendorDir; })); - $this->config->expects($this->at(2)) - ->method('get') - ->with($this->equalTo('use-include-path')) - ->will($this->returnValue(false)); - $this->dir = getcwd(); chdir($this->workingDir); @@ -583,6 +578,30 @@ EOF; $this->assertFalse(file_exists($this->vendorDir."/composer/include_paths.php")); } + + + public function testUseGlobalIncludePath() + { + $package = new Package('a', '1.0', '1.0'); + $package->setAutoload(array( + 'psr-0' => array('Main\\Foo' => '', 'Main\\Bar' => ''), + )); + $package->setTargetDir('Main/Foo/'); + + $this->repository->expects($this->once()) + ->method('getPackages') + ->will($this->returnValue(array())); + + $this->config->expects($this->at(2)) + ->method('get') + ->with($this->equalTo('use-include-path')) + ->will($this->returnValue(true)); + + $this->fs->ensureDirectoryExists($this->vendorDir.'/a'); + + $this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', false, 'IncludePath'); + $this->assertFileEquals(__DIR__.'/Fixtures/autoload_real_include_path.php', $this->vendorDir.'/composer/autoload_real.php'); + } private function createClassFile($basedir) { diff --git a/tests/Composer/Test/Autoload/Fixtures/autoload_real_include_path.php b/tests/Composer/Test/Autoload/Fixtures/autoload_real_include_path.php new file mode 100644 index 000000000..a410ff688 --- /dev/null +++ b/tests/Composer/Test/Autoload/Fixtures/autoload_real_include_path.php @@ -0,0 +1,64 @@ + $path) { + $loader->add($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + + $loader->setUseIncludePath(true); + spl_autoload_register(array('ComposerAutoloaderInitIncludePath', 'autoload'), true, true); + + $loader->register(true); + + return $loader; + } + + public static function autoload($class) + { + $dir = dirname(dirname(__DIR__)) . '/'; + $prefixes = array('Main\\Foo', 'Main\\Bar'); + foreach ($prefixes as $prefix) { + if (0 !== strpos($class, $prefix)) { + continue; + } + $path = $dir . implode('/', array_slice(explode('\\', $class), 2)).'.php'; + if (!$path = stream_resolve_include_path($path)) { + return false; + } + require $path; + + return true; + } + } +}