diff --git a/src/Composer/Repository/ArtifactRepository.php b/src/Composer/Repository/ArtifactRepository.php index 6a942ad2d..0b7775aaf 100644 --- a/src/Composer/Repository/ArtifactRepository.php +++ b/src/Composer/Repository/ArtifactRepository.php @@ -139,7 +139,7 @@ class ArtifactRepository extends ArrayRepository $package = JsonFile::parseJson($json, $composerFile); $package['dist'] = array( 'type' => 'zip', - 'url' => $file->getRealPath(), + 'url' => $file->getPathname(), 'shasum' => sha1_file($file->getRealPath()) ); diff --git a/tests/Composer/Test/Repository/ArtifactRepositoryTest.php b/tests/Composer/Test/Repository/ArtifactRepositoryTest.php index 7833899e0..db7ca42ba 100644 --- a/tests/Composer/Test/Repository/ArtifactRepositoryTest.php +++ b/tests/Composer/Test/Repository/ArtifactRepositoryTest.php @@ -16,6 +16,7 @@ use Composer\TestCase; use Composer\IO\NullIO; use Composer\Config; use Composer\Package\BasePackage; +use Composer\Util\Filesystem; class ArtifactRepositoryTest extends TestCase { @@ -44,6 +45,29 @@ class ArtifactRepositoryTest extends TestCase $this->assertSame($expectedPackages, $foundPackages); } + + public function testAbsoluteRepoUrlCreatesAbsoluteUrlPackages() + { + $absolutePath = __DIR__ . '/Fixtures/artifacts'; + $coordinates = array('type' => 'artifact', 'url' => $absolutePath); + $repo = new ArtifactRepository($coordinates, new NullIO(), new Config()); + + foreach ($repo->getPackages() as $package) { + $this->assertTrue(strpos($package->getDistUrl(), $absolutePath) === 0); + } + } + + public function testRelativeRepoUrlCreatesRelativeUrlPackages() + { + $relativePath = 'tests/Composer/Test/Repository/Fixtures/artifacts'; + $coordinates = array('type' => 'artifact', 'url' => $relativePath); + $repo = new ArtifactRepository($coordinates, new NullIO(), new Config()); + + foreach ($repo->getPackages() as $package) { + $this->assertTrue(strpos($package->getDistUrl(), $relativePath) === 0); + } + } + } //Files jsonInFirstLevel.zip, jsonInRoot.zip and jsonInSecondLevel.zip were generated with: