diff --git a/src/Composer/Repository/ArtifactRepository.php b/src/Composer/Repository/ArtifactRepository.php index 8442ce9ba..72ef46041 100644 --- a/src/Composer/Repository/ArtifactRepository.php +++ b/src/Composer/Repository/ArtifactRepository.php @@ -94,6 +94,10 @@ class ArtifactRepository extends ArrayRepository 'shasum' => sha1_file($file->getRealPath()) ); + if(empty($package['version'])) { + $package['version'] = 'dev-master'; + } + $package = $this->loader->load($package); return $package; diff --git a/tests/Composer/Test/Repository/ArtifactRepositoryTest.php b/tests/Composer/Test/Repository/ArtifactRepositoryTest.php index abf3eefd3..8c0cf0dbd 100644 --- a/tests/Composer/Test/Repository/ArtifactRepositoryTest.php +++ b/tests/Composer/Test/Repository/ArtifactRepositoryTest.php @@ -15,13 +15,15 @@ namespace Composer\Repository; use Composer\Test\TestCase; use Composer\IO\NullIO; use Composer\Config; -use Composer\Package\Package; +use Composer\Package\BasePackage; class ArtifactRepositoryTest extends TestCase { public function testExtractsConfigsFromZipArchives() { $expectedPackages = array( + 'composer/composer-dev-master', + 'composer/composer-1.0.x-dev', 'composer/composer-1.0.0-alpha6', 'vendor0/package0-0.0.1', 'vendor1/package2-4.3.2', @@ -30,7 +32,7 @@ class ArtifactRepositoryTest extends TestCase $coordinates = array('type' => 'artifact', 'url' => __DIR__ . '/Fixtures/artifacts'); $repo = new ArtifactRepository($coordinates, new NullIO(), new Config()); - $foundPackages = array_map(function(Package $package) { + $foundPackages = array_map(function(BasePackage $package) { return "{$package->getPrettyName()}-{$package->getPrettyVersion()}"; }, $repo->getPackages()); diff --git a/tests/Composer/Test/Repository/Fixtures/artifacts/artifact-no-version.zip b/tests/Composer/Test/Repository/Fixtures/artifacts/artifact-no-version.zip new file mode 100644 index 000000000..a60ba1fa9 Binary files /dev/null and b/tests/Composer/Test/Repository/Fixtures/artifacts/artifact-no-version.zip differ