From 7566315c7af0213c6c8c0958150114263307b08d Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Tue, 4 Feb 2014 12:24:59 +0100 Subject: [PATCH 1/6] Don't put dots in archive filenames they cause problems with PharData composer/satis#114 --- src/Composer/Package/Archiver/ArchiveManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Composer/Package/Archiver/ArchiveManager.php b/src/Composer/Package/Archiver/ArchiveManager.php index 80865245e..a8891e0c7 100644 --- a/src/Composer/Package/Archiver/ArchiveManager.php +++ b/src/Composer/Package/Archiver/ArchiveManager.php @@ -72,7 +72,7 @@ class ArchiveManager */ public function getPackageFilename(PackageInterface $package) { - $nameParts = array(preg_replace('#[^a-z0-9-_.]#i', '-', $package->getName())); + $nameParts = array(preg_replace('#[^a-z0-9-_]#i', '-', $package->getName())); if (preg_match('{^[a-f0-9]{40}$}', $package->getDistReference())) { $nameParts = array_merge($nameParts, array($package->getDistReference(), $package->getDistType())); From 084c11ef517339aeb80efca5485fda049203778c Mon Sep 17 00:00:00 2001 From: Andreas Hennings Date: Tue, 4 Feb 2014 12:33:42 +0100 Subject: [PATCH 2/6] AutoloadGeneratorTest::testMainPackageAutoloadingWithTargetDir() - Remove PSR-4 from the package in target-dir test, since it is incompatible with target-dir. --- tests/Composer/Test/Autoload/AutoloadGeneratorTest.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php index 499f4de0d..3dd979ee9 100644 --- a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php +++ b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php @@ -198,10 +198,6 @@ class AutoloadGeneratorTest extends TestCase $package = new Package('a', '1.0', '1.0'); $package->setAutoload(array( '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'), 'files' => array('foo.php', 'Main/Foo/bar.php'), )); From cab6943df0915c937340ee9a1e9163a203aa0001 Mon Sep 17 00:00:00 2001 From: Andreas Hennings Date: Sun, 22 Dec 2013 21:34:31 +0100 Subject: [PATCH 3/6] AutoloadGeneratorTest::testOverrideVendorsAutoloading() - break autoload definitions to multiple lines. --- .../Test/Autoload/AutoloadGeneratorTest.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php index 3dd979ee9..230cdc28c 100644 --- a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php +++ b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php @@ -478,14 +478,22 @@ class AutoloadGeneratorTest extends TestCase public function testOverrideVendorsAutoloading() { $package = new Package('z', '1.0', '1.0'); - $package->setAutoload(array('psr-0' => array('A\\B' => $this->workingDir.'/lib'), 'classmap' => array($this->workingDir.'/src'))); + $package->setAutoload(array( + 'psr-0' => array('A\\B' => $this->workingDir.'/lib'), + 'classmap' => array($this->workingDir.'/src') + )); $package->setRequires(array(new Link('z', 'a/a'))); $packages = array(); $packages[] = $a = new Package('a/a', '1.0', '1.0'); $packages[] = $b = new Package('b/b', '1.0', '1.0'); - $a->setAutoload(array('psr-0' => array('A' => 'src/', 'A\\B' => 'lib/'), 'classmap' => array('classmap'))); - $b->setAutoload(array('psr-0' => array('B\\Sub\\Name' => 'src/'))); + $a->setAutoload(array( + 'psr-0' => array('A' => 'src/', 'A\\B' => 'lib/'), + 'classmap' => array('classmap'), + )); + $b->setAutoload(array( + 'psr-0' => array('B\\Sub\\Name' => 'src/'), + )); $this->repository->expects($this->once()) ->method('getCanonicalPackages') From bb26152de2b53e79fd7c64ccc5bab22e7160e9cd Mon Sep 17 00:00:00 2001 From: Andreas Hennings Date: Sun, 22 Dec 2013 21:56:58 +0100 Subject: [PATCH 4/6] docblock comments on properties in AutoloadGeneratorTest --- .../Test/Autoload/AutoloadGeneratorTest.php | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php index 230cdc28c..76e913df5 100644 --- a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php +++ b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php @@ -19,16 +19,52 @@ use Composer\Package\AliasPackage; use Composer\Package\Package; use Composer\TestCase; use Composer\Script\ScriptEvents; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Installer\InstallationManager; +use Composer\Config; +use Composer\EventDispatcher\EventDispatcher; +use PHPUnit_Framework_MockObject_MockObject as MockObject; class AutoloadGeneratorTest extends TestCase { + /** + * @var string + */ public $vendorDir; + + /** + * @var Config|MockObject + */ private $config; + + /** + * @var string + */ private $workingDir; + + /** + * @var InstallationManager|MockObject + */ private $im; + + /** + * @var InstalledRepositoryInterface|MockObject + */ private $repository; + + /** + * @var AutoloadGenerator + */ private $generator; + + /** + * @var Filesystem + */ private $fs; + + /** + * @var EventDispatcher|MockObject + */ private $eventDispatcher; protected function setUp() From 6a9fd1dd6057fc36706fbc2cd490e87ec67957c4 Mon Sep 17 00:00:00 2001 From: Andreas Hennings Date: Sun, 22 Dec 2013 22:00:26 +0100 Subject: [PATCH 5/6] rename \$package to \$mainPackage in AutoloadGeneratorTest::testOverrideVendorsAutoloading() for clarity. --- tests/Composer/Test/Autoload/AutoloadGeneratorTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php index 76e913df5..7702584ea 100644 --- a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php +++ b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php @@ -513,12 +513,12 @@ class AutoloadGeneratorTest extends TestCase public function testOverrideVendorsAutoloading() { - $package = new Package('z', '1.0', '1.0'); - $package->setAutoload(array( + $mainPackage = new Package('z', '1.0', '1.0'); + $mainPackage->setAutoload(array( 'psr-0' => array('A\\B' => $this->workingDir.'/lib'), 'classmap' => array($this->workingDir.'/src') )); - $package->setRequires(array(new Link('z', 'a/a'))); + $mainPackage->setRequires(array(new Link('z', 'a/a'))); $packages = array(); $packages[] = $a = new Package('a/a', '1.0', '1.0'); @@ -592,7 +592,7 @@ return array( EOF; - $this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', true, '_9'); + $this->generator->dump($this->config, $this->repository, $mainPackage, $this->im, 'composer', true, '_9'); $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')); From fcf8e7f5155468e5615edcbb66f030a069bac2db Mon Sep 17 00:00:00 2001 From: Andreas Hennings Date: Wed, 8 Jan 2014 00:05:24 +0100 Subject: [PATCH 6/6] Random docblock improvements in AutoloadGeneratorTest. --- tests/Composer/Test/Autoload/AutoloadGeneratorTest.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php index 7702584ea..f63d8c82b 100644 --- a/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php +++ b/tests/Composer/Test/Autoload/AutoloadGeneratorTest.php @@ -511,6 +511,12 @@ class AutoloadGeneratorTest extends TestCase $this->assertTrue(function_exists('testFilesAutoloadOrderByDependencyRoot')); } + /** + * Test that PSR-0 and PSR-4 mappings are processed in the correct order for + * autoloading and for classmap generation: + * - The main package has priority over other packages. + * - Longer namespaces have priority over shorter namespaces. + */ public function testOverrideVendorsAutoloading() { $mainPackage = new Package('z', '1.0', '1.0'); @@ -542,8 +548,12 @@ class AutoloadGeneratorTest extends TestCase $this->fs->ensureDirectoryExists($this->vendorDir.'/a/a/src'); $this->fs->ensureDirectoryExists($this->vendorDir.'/a/a/lib/A/B'); $this->fs->ensureDirectoryExists($this->vendorDir.'/b/b/src'); + + // Define the classes A\B\C and Foo\Bar in the main package. file_put_contents($this->workingDir.'/lib/A/B/C.php', 'workingDir.'/src/classes.php', 'vendorDir.'/a/a/lib/A/B/C.php', 'vendorDir.'/a/a/classmap/classes.php', '