Fix how download manager is constructed
This fixes tests due to upstream changes. The createDownloadManager in the Factory now takes the config as extra parameter.pull/1567/head
parent
60b1cc7d24
commit
c248115e04
|
@ -319,22 +319,18 @@ class Factory
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $workDir Directory used to download sources
|
|
||||||
* @param Downloader\DownloadManager $dm Manager use to download sources
|
* @param Downloader\DownloadManager $dm Manager use to download sources
|
||||||
|
* @param Config $config The configuration
|
||||||
*
|
*
|
||||||
* @return Archiver\ArchiveManager
|
* @return Archiver\ArchiveManager
|
||||||
*/
|
*/
|
||||||
public function createArchiveManager($workDir = null, DownloadManager $dm = null)
|
public function createArchiveManager(DownloadManager $dm = null, Config $config)
|
||||||
{
|
{
|
||||||
if (null === $dm) {
|
if (null === $dm) {
|
||||||
$dm = $this->createDownloadManager(new IO\NullIO());
|
$dm = $this->createDownloadManager(new IO\NullIO(), $config);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $workDir) {
|
$am = new Archiver\ArchiveManager($dm);
|
||||||
$workDir = sys_get_temp_dir();
|
|
||||||
}
|
|
||||||
|
|
||||||
$am = new Archiver\ArchiveManager($workDir, $dm);
|
|
||||||
$am->addArchiver(new Archiver\GitArchiver);
|
$am->addArchiver(new Archiver\GitArchiver);
|
||||||
$am->addArchiver(new Archiver\MercurialArchiver);
|
$am->addArchiver(new Archiver\MercurialArchiver);
|
||||||
$am->addArchiver(new Archiver\PharArchiver);
|
$am->addArchiver(new Archiver\PharArchiver);
|
||||||
|
|
|
@ -24,19 +24,15 @@ use Composer\Util\Filesystem;
|
||||||
*/
|
*/
|
||||||
class ArchiveManager
|
class ArchiveManager
|
||||||
{
|
{
|
||||||
protected $buildDir;
|
|
||||||
|
|
||||||
protected $downloadManager;
|
protected $downloadManager;
|
||||||
|
|
||||||
protected $archivers = array();
|
protected $archivers = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $buildDir The directory used to build the archive
|
|
||||||
* @param DownloadManager $downloadManager A manager used to download package sources
|
* @param DownloadManager $downloadManager A manager used to download package sources
|
||||||
*/
|
*/
|
||||||
public function __construct($buildDir, DownloadManager $downloadManager)
|
public function __construct(DownloadManager $downloadManager)
|
||||||
{
|
{
|
||||||
$this->buildDir = $buildDir;
|
|
||||||
$this->downloadManager = $downloadManager;
|
$this->downloadManager = $downloadManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,17 +47,19 @@ class ArchiveManager
|
||||||
/**
|
/**
|
||||||
* Create an archive of the specified package.
|
* Create an archive of the specified package.
|
||||||
*
|
*
|
||||||
* @param PackageInterface $package The package to archive
|
* @param PackageInterface $package The package to archive
|
||||||
* @param string $format The format of the archive (zip, tar, ...)
|
* @param string $format The format of the archive (zip, tar, ...)
|
||||||
|
* @param string $targetDir The diretory where to build the archive
|
||||||
*
|
*
|
||||||
* @return string The path of the created archive
|
* @return string The path of the created archive
|
||||||
*/
|
*/
|
||||||
public function archive(PackageInterface $package, $format)
|
public function archive(PackageInterface $package, $format, $targetDir)
|
||||||
{
|
{
|
||||||
if (empty($format)) {
|
if (empty($format)) {
|
||||||
throw new \InvalidArgumentException('Format must be specified');
|
throw new \InvalidArgumentException('Format must be specified');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Search for the most appropriate archiver
|
||||||
$usableArchiver = null;
|
$usableArchiver = null;
|
||||||
foreach ($this->archivers as $archiver) {
|
foreach ($this->archivers as $archiver) {
|
||||||
if ($archiver->supports($format, $package->getSourceType())) {
|
if ($archiver->supports($format, $package->getSourceType())) {
|
||||||
|
@ -78,12 +76,12 @@ class ArchiveManager
|
||||||
// Directory used to download the sources
|
// Directory used to download the sources
|
||||||
$filesystem = new Filesystem();
|
$filesystem = new Filesystem();
|
||||||
$packageName = $package->getUniqueName();
|
$packageName = $package->getUniqueName();
|
||||||
$sources = sys_get_temp_dir().'/'.$packageName;
|
$sources = sys_get_temp_dir().'/composer_archiver/'.$packageName;
|
||||||
$filesystem->ensureDirectoryExists($sources);
|
$filesystem->ensureDirectoryExists($sources);
|
||||||
|
|
||||||
// Archive filename
|
// Archive filename
|
||||||
$target = $this->buildDir.'/'.$packageName.'.'.$format;
|
$target = $targetDir.'/'.$packageName.'.'.$format;
|
||||||
$filesystem->ensureDirectoryExists(dirname($this->buildDir.$target));
|
$filesystem->ensureDirectoryExists(dirname($target));
|
||||||
|
|
||||||
// Download sources
|
// Download sources
|
||||||
$this->downloadManager->download($package, $sources, true);
|
$this->downloadManager->download($package, $sources, true);
|
||||||
|
|
|
@ -25,17 +25,15 @@ use Composer\Package\PackageInterface;
|
||||||
class ArchiveManagerTest extends ArchiverTest
|
class ArchiveManagerTest extends ArchiverTest
|
||||||
{
|
{
|
||||||
protected $manager;
|
protected $manager;
|
||||||
|
protected $targetDir;
|
||||||
protected $workDir;
|
|
||||||
|
|
||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
$factory = new Factory();
|
$factory = new Factory();
|
||||||
|
$this->manager = $factory->createArchiveManager(null, $factory->createConfig());
|
||||||
$this->workDir = sys_get_temp_dir();
|
$this->targetDir = sys_get_temp_dir().'/composer_archiver_tests';
|
||||||
$this->manager = $factory->createArchiveManager($this->workDir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUnknownFormat()
|
public function testUnknownFormat()
|
||||||
|
@ -44,7 +42,7 @@ class ArchiveManagerTest extends ArchiverTest
|
||||||
|
|
||||||
$package = $this->setupPackage();
|
$package = $this->setupPackage();
|
||||||
|
|
||||||
$this->manager->archive($package, '__unknown_format__');
|
$this->manager->archive($package, '__unknown_format__', $this->targetDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testArchiveTarWithVcs()
|
public function testArchiveTarWithVcs()
|
||||||
|
@ -55,7 +53,7 @@ class ArchiveManagerTest extends ArchiverTest
|
||||||
|
|
||||||
// The package is source from git,
|
// The package is source from git,
|
||||||
// so it should `git archive --format tar`
|
// so it should `git archive --format tar`
|
||||||
$this->manager->archive($package, 'tar');
|
$this->manager->archive($package, 'tar', $this->targetDir);
|
||||||
|
|
||||||
$target = $this->getTargetName($package, 'tar');
|
$target = $this->getTargetName($package, 'tar');
|
||||||
$this->assertFileExists($target);
|
$this->assertFileExists($target);
|
||||||
|
@ -71,7 +69,7 @@ class ArchiveManagerTest extends ArchiverTest
|
||||||
$package = $this->setupPackage();
|
$package = $this->setupPackage();
|
||||||
|
|
||||||
// This should use the TarArchiver
|
// This should use the TarArchiver
|
||||||
$this->manager->archive($package, 'tar');
|
$this->manager->archive($package, 'tar', $this->targetDir);
|
||||||
|
|
||||||
$package->setSourceType('__unknown_type__'); // disable VCS recognition
|
$package->setSourceType('__unknown_type__'); // disable VCS recognition
|
||||||
$target = $this->getTargetName($package, 'tar');
|
$target = $this->getTargetName($package, 'tar');
|
||||||
|
@ -83,8 +81,8 @@ class ArchiveManagerTest extends ArchiverTest
|
||||||
|
|
||||||
protected function getTargetName(PackageInterface $package, $format)
|
protected function getTargetName(PackageInterface $package, $format)
|
||||||
{
|
{
|
||||||
$packageName = str_replace('/', DIRECTORY_SEPARATOR, $package->getUniqueName());
|
$packageName = $package->getUniqueName();
|
||||||
$target = $this->workDir.DIRECTORY_SEPARATOR.$packageName.'.'.$format;
|
$target = $this->targetDir.'/'.$packageName.'.'.$format;
|
||||||
|
|
||||||
return $target;
|
return $target;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue