1
0
Fork 0

Added tests for include path flag

pull/1483/head
Pierre du Plessis 2013-02-04 10:12:41 +02:00
parent 91ca7d7493
commit 255c0be7fc
2 changed files with 88 additions and 5 deletions

View File

@ -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)
{

View File

@ -0,0 +1,64 @@
<?php
// autoload_real.php generated by Composer
class ComposerAutoloaderInitIncludePath
{
private static $loader;
public static function loadClassLoader($class)
{
if ('Composer\Autoload\ClassLoader' === $class) {
require __DIR__ . '/ClassLoader.php';
}
}
public static function getLoader()
{
if (null !== self::$loader) {
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitIncludePath', 'loadClassLoader'));
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitIncludePath', 'loadClassLoader'));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $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;
}
}
}