@ -95,7 +95,14 @@ class AutoloadGeneratorTest extends TestCase
{
{
$package = new Package('a', '1.0', '1.0');
$package = new Package('a', '1.0', '1.0');
$package->setAutoload(array(
$package->setAutoload(array(
'psr-0' => array('Main' => 'src/', 'Lala' => array('src/', 'lib/')),
'psr-0' => array(
'Main' => 'src/',
'Lala' => array('src/', 'lib/'),
),
'psr-4' => array(
'Acme\Fruit\\' => 'src-fruit/',
'Acme\Cake\\' => array('src-cake/', 'lib-cake/'),
),
'classmap' => array('composersrc/'),
'classmap' => array('composersrc/'),
));
));
@ -107,11 +114,22 @@ class AutoloadGeneratorTest extends TestCase
$this->fs->ensureDirectoryExists($this->workingDir.'/src');
$this->fs->ensureDirectoryExists($this->workingDir.'/src');
$this->fs->ensureDirectoryExists($this->workingDir.'/lib');
$this->fs->ensureDirectoryExists($this->workingDir.'/lib');
$this->fs->ensureDirectoryExists($this->workingDir.'/src-fruit');
$this->fs->ensureDirectoryExists($this->workingDir.'/src-cake');
$this->fs->ensureDirectoryExists($this->workingDir.'/lib-cake');
$this->fs->ensureDirectoryExists($this->workingDir.'/composersrc');
$this->fs->ensureDirectoryExists($this->workingDir.'/composersrc');
file_put_contents($this->workingDir.'/composersrc/foo.php', '<?php class ClassMapFoo {} ' );
file_put_contents($this->workingDir.'/composersrc/foo.php', '<?php class ClassMapFoo {} ' );
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', false, '_1');
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', false, '_1');
// Assert that autoload_namespaces.php was correctly generated.
$this->assertAutoloadFiles('main', $this->vendorDir.'/composer');
$this->assertAutoloadFiles('main', $this->vendorDir.'/composer');
// Assert that autoload_psr4.php was correctly generated.
$this->assertAutoloadFiles('psr4', $this->vendorDir.'/composer', 'psr4');
// Assert that autoload_classmap.php was correctly generated.
$this->assertAutoloadFiles('classmap', $this->vendorDir.'/composer', 'classmap');
$this->assertAutoloadFiles('classmap', $this->vendorDir.'/composer', 'classmap');
}
}
@ -122,6 +140,10 @@ class AutoloadGeneratorTest extends TestCase
$package = new Package('a', '1.0', '1.0');
$package = new Package('a', '1.0', '1.0');
$package->setAutoload(array(
$package->setAutoload(array(
'psr-0' => array('Main' => 'src/', 'Lala' => 'src/'),
'psr-0' => array('Main' => 'src/', 'Lala' => 'src/'),
'psr-4' => array(
'Acme\Fruit\\' => 'src-fruit/',
'Acme\Cake\\' => array('src-cake/', 'lib-cake/'),
),
'classmap' => array('composersrc/'),
'classmap' => array('composersrc/'),
));
));
@ -138,6 +160,7 @@ class AutoloadGeneratorTest extends TestCase
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', true, '_2');
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', true, '_2');
$this->assertAutoloadFiles('main3', $this->vendorDir.'/composer');
$this->assertAutoloadFiles('main3', $this->vendorDir.'/composer');
$this->assertAutoloadFiles('psr4_3', $this->vendorDir.'/composer', 'psr4');
$this->assertAutoloadFiles('classmap3', $this->vendorDir.'/composer', 'classmap');
$this->assertAutoloadFiles('classmap3', $this->vendorDir.'/composer', 'classmap');
}
}
@ -146,6 +169,10 @@ class AutoloadGeneratorTest extends TestCase
$package = new Package('a', '1.0', '1.0');
$package = new Package('a', '1.0', '1.0');
$package->setAutoload(array(
$package->setAutoload(array(
'psr-0' => array('Main' => 'src/', 'Lala' => 'src/'),
'psr-0' => array('Main' => 'src/', 'Lala' => 'src/'),
'psr-4' => array(
'Acme\Fruit\\' => 'src-fruit/',
'Acme\Cake\\' => array('src-cake/', 'lib-cake/'),
),
'classmap' => array('composersrc/'),
'classmap' => array('composersrc/'),
));
));
@ -162,6 +189,7 @@ class AutoloadGeneratorTest extends TestCase
file_put_contents($this->workingDir.'/composersrc/foo.php', '<?php class ClassMapFoo {} ' );
file_put_contents($this->workingDir.'/composersrc/foo.php', '<?php class ClassMapFoo {} ' );
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', false, '_3');
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', false, '_3');
$this->assertAutoloadFiles('main2', $this->vendorDir.'/composer');
$this->assertAutoloadFiles('main2', $this->vendorDir.'/composer');
$this->assertAutoloadFiles('psr4_2', $this->vendorDir.'/composer', 'psr4');
$this->assertAutoloadFiles('classmap2', $this->vendorDir.'/composer', 'classmap');
$this->assertAutoloadFiles('classmap2', $this->vendorDir.'/composer', 'classmap');
}
}
@ -170,6 +198,10 @@ class AutoloadGeneratorTest extends TestCase
$package = new Package('a', '1.0', '1.0');
$package = new Package('a', '1.0', '1.0');
$package->setAutoload(array(
$package->setAutoload(array(
'psr-0' => array('Main\\Foo' => '', 'Main\\Bar' => ''),
'psr-0' => array('Main\\Foo' => '', 'Main\\Bar' => ''),
'psr-4' => array(
'Acme\Fruit\\' => 'src-fruit/',
'Acme\Cake\\' => array('src-cake/', 'lib-cake/'),
),
'classmap' => array('Main/Foo/src', 'lib'),
'classmap' => array('Main/Foo/src', 'lib'),
'files' => array('foo.php', 'Main/Foo/bar.php'),
'files' => array('foo.php', 'Main/Foo/bar.php'),
));
));
@ -486,6 +518,20 @@ return array(
'A' => array(\$vendorDir . '/a/a/src'),
'A' => array(\$vendorDir . '/a/a/src'),
);
);
EOF;
// autoload_psr4.php is expected to be empty in this example.
$expectedPsr4 = < < < EOF
<?php
// autoload_psr4.php @generated by Composer
\$vendorDir = dirname(dirname(__FILE__));
\$baseDir = dirname(\$vendorDir);
return array(
);
EOF;
EOF;
$expectedClassmap = < < < EOF
$expectedClassmap = < < < EOF
@ -505,6 +551,7 @@ EOF;
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', true, '_9');
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', true, '_9');
$this->assertEquals($expectedNamespace, file_get_contents($this->vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedNamespace, file_get_contents($this->vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedPsr4, file_get_contents($this->vendorDir.'/composer/autoload_psr4.php'));
$this->assertEquals($expectedClassmap, file_get_contents($this->vendorDir.'/composer/autoload_classmap.php'));
$this->assertEquals($expectedClassmap, file_get_contents($this->vendorDir.'/composer/autoload_classmap.php'));
}
}
@ -678,6 +725,7 @@ EOF;
$package = new Package('a', '1.0', '1.0');
$package = new Package('a', '1.0', '1.0');
$package->setAutoload(array(
$package->setAutoload(array(
'psr-0' => array('Foo' => 'src'),
'psr-0' => array('Foo' => 'src'),
'psr-4' => array('Acme\Foo\\' => 'src-psr4'),
'classmap' => array('classmap'),
'classmap' => array('classmap'),
'files' => array('test.php'),
'files' => array('test.php'),
));
));
@ -685,6 +733,7 @@ EOF;
$vendorPackage = new Package('b/b', '1.0', '1.0');
$vendorPackage = new Package('b/b', '1.0', '1.0');
$vendorPackage->setAutoload(array(
$vendorPackage->setAutoload(array(
'psr-0' => array('Bar' => 'lib'),
'psr-0' => array('Bar' => 'lib'),
'psr-4' => array('Acme\Bar\\' => 'lib-psr4'),
'classmap' => array('classmaps'),
'classmap' => array('classmaps'),
'files' => array('bootstrap.php'),
'files' => array('bootstrap.php'),
));
));
@ -734,6 +783,21 @@ return array(
'Bar' => array($vendorDir . '/b/b/lib'),
'Bar' => array($vendorDir . '/b/b/lib'),
);
);
EOF;
$expectedPsr4 = < < < 'EOF'
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir).'/working-dir';
return array(
'Acme\\Foo\\' => array($baseDir . '/src-psr4'),
'Acme\\Bar\\' => array($vendorDir . '/b/b/lib-psr4'),
);
EOF;
EOF;
$expectedClassmap = < < < 'EOF'
$expectedClassmap = < < < 'EOF'
@ -754,6 +818,7 @@ return array(
EOF;
EOF;
$this->assertEquals($expectedNamespace, file_get_contents($vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedNamespace, file_get_contents($vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedPsr4, file_get_contents($vendorDir.'/composer/autoload_psr4.php'));
$this->assertEquals($expectedClassmap, file_get_contents($vendorDir.'/composer/autoload_classmap.php'));
$this->assertEquals($expectedClassmap, file_get_contents($vendorDir.'/composer/autoload_classmap.php'));
$this->assertContains("\n \$vendorDir . '/b/b/bootstrap.php',\n", file_get_contents($vendorDir.'/composer/autoload_files.php'));
$this->assertContains("\n \$vendorDir . '/b/b/bootstrap.php',\n", file_get_contents($vendorDir.'/composer/autoload_files.php'));
$this->assertContains("\n \$baseDir . '/test.php',\n", file_get_contents($vendorDir.'/composer/autoload_files.php'));
$this->assertContains("\n \$baseDir . '/test.php',\n", file_get_contents($vendorDir.'/composer/autoload_files.php'));
@ -768,6 +833,7 @@ EOF;
$package = new Package('a', '1.0', '1.0');
$package = new Package('a', '1.0', '1.0');
$package->setAutoload(array(
$package->setAutoload(array(
'psr-0' => array('Foo' => '../path/../src'),
'psr-0' => array('Foo' => '../path/../src'),
'psr-4' => array('Acme\Foo\\' => '../path/../src-psr4'),
'classmap' => array('../classmap'),
'classmap' => array('../classmap'),
'files' => array('../test.php'),
'files' => array('../test.php'),
));
));
@ -798,7 +864,21 @@ return array(
EOF;
EOF;
$expectedClassmap = < < < 'EOF'
$expectedPsr4 = < < < 'EOF'
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir).'/working-dir';
return array(
'Acme\\Foo\\' => array($baseDir . '/../src-psr4'),
);
EOF;
$expectedClassmap = < < < 'EOF'
<?php
<?php
// autoload_classmap.php @generated by Composer
// autoload_classmap.php @generated by Composer
@ -814,6 +894,7 @@ return array(
EOF;
EOF;
$this->assertEquals($expectedNamespace, file_get_contents($this->vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedNamespace, file_get_contents($this->vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedPsr4, file_get_contents($this->vendorDir.'/composer/autoload_psr4.php'));
$this->assertEquals($expectedClassmap, file_get_contents($this->vendorDir.'/composer/autoload_classmap.php'));
$this->assertEquals($expectedClassmap, file_get_contents($this->vendorDir.'/composer/autoload_classmap.php'));
$this->assertContains("\n \$baseDir . '/../test.php',\n", file_get_contents($this->vendorDir.'/composer/autoload_files.php'));
$this->assertContains("\n \$baseDir . '/../test.php',\n", file_get_contents($this->vendorDir.'/composer/autoload_files.php'));
}
}
@ -823,6 +904,7 @@ EOF;
$package = new Package('a', '1.0', '1.0');
$package = new Package('a', '1.0', '1.0');
$package->setAutoload(array(
$package->setAutoload(array(
'psr-0' => array('Foo' => ''),
'psr-0' => array('Foo' => ''),
'psr-4' => array('Acme\Foo\\' => ''),
'classmap' => array(''),
'classmap' => array(''),
));
));
@ -850,7 +932,21 @@ return array(
EOF;
EOF;
$expectedClassmap = < < < 'EOF'
$expectedPsr4 = < < < 'EOF'
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Acme\\Foo\\' => array($baseDir . '/'),
);
EOF;
$expectedClassmap = < < < 'EOF'
<?php
<?php
// autoload_classmap.php @generated by Composer
// autoload_classmap.php @generated by Composer
@ -866,6 +962,7 @@ return array(
EOF;
EOF;
$this->assertEquals($expectedNamespace, file_get_contents($this->vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedNamespace, file_get_contents($this->vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedPsr4, file_get_contents($this->vendorDir.'/composer/autoload_psr4.php'));
$this->assertEquals($expectedClassmap, file_get_contents($this->vendorDir.'/composer/autoload_classmap.php'));
$this->assertEquals($expectedClassmap, file_get_contents($this->vendorDir.'/composer/autoload_classmap.php'));
}
}
@ -874,6 +971,7 @@ EOF;
$package = new Package('a', '1.0', '1.0');
$package = new Package('a', '1.0', '1.0');
$package->setAutoload(array(
$package->setAutoload(array(
'psr-0' => array('Foo' => 'composer-test-autoload-src/src'),
'psr-0' => array('Foo' => 'composer-test-autoload-src/src'),
'psr-4' => array('Acme\Foo\\' => 'composer-test-autoload-src/src-psr4'),
));
));
$this->repository->expects($this->once())
$this->repository->expects($this->once())
@ -894,10 +992,25 @@ return array(
'Foo' => array($baseDir . '/composer-test-autoload-src/src'),
'Foo' => array($baseDir . '/composer-test-autoload-src/src'),
);
);
EOF;
$expectedPsr4 = < < < 'EOF'
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Acme\\Foo\\' => array($baseDir . '/composer-test-autoload-src/src-psr4'),
);
EOF;
EOF;
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', false, 'VendorSubstring');
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', false, 'VendorSubstring');
$this->assertEquals($expectedNamespace, file_get_contents($this->vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedNamespace, file_get_contents($this->vendorDir.'/composer/autoload_namespaces.php'));
$this->assertEquals($expectedPsr4, file_get_contents($this->vendorDir.'/composer/autoload_psr4.php'));
}
}
private function assertAutoloadFiles($name, $dir, $type = 'namespaces')
private function assertAutoloadFiles($name, $dir, $type = 'namespaces')