1
0
Fork 0

Merged zip & tar archivers

pull/1567/head
Matthieu Moquet 2012-08-28 22:32:26 +02:00 committed by Nils Adermann
parent b21bb1dcc5
commit a733d76b33
5 changed files with 30 additions and 86 deletions

View File

@ -19,14 +19,20 @@ use Composer\Package\PackageInterface;
* @author Till Klampaeckel <till@php.net>
* @author Matthieu Moquet <matthieu@moquet.net>
*/
class TarArchiver extends BaseArchiver
class PharArchiver extends BaseArchiver
{
static public $formats = array(
'zip' => \Phar::ZIP,
'tar' => \Phar::TAR,
);
/**
* {@inheritdoc}
*/
public function archive($sources, $target, $format, $sourceRef = null)
{
$this->createPharArchive($sources, $target, \Phar::TAR);
// source reference is useless for this archiver
$this->createPharArchive($sources, $target, static::$formats[$format]);
}
/**
@ -34,6 +40,6 @@ class TarArchiver extends BaseArchiver
*/
public function supports($format, $sourceType)
{
return 'tar' === $format;
return in_array($format, array_keys(static::$formats));
}
}

View File

@ -1,39 +0,0 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Package\Archiver;
use Composer\Package\BasePackage;
use Composer\Package\PackageInterface;
/**
* @author Till Klampaeckel <till@php.net>
* @author Matthieu Moquet <matthieu@moquet.net>
*/
class ZipArchiver extends BaseArchiver
{
/**
* {@inheritdoc}
*/
public function archive($sources, $target, $format, $sourceRef = null)
{
$this->createPharArchive($sources, $target, \Phar::ZIP);
}
/**
* {@inheritdoc}
*/
public function supports($format, $sourceType)
{
return 'zip' === $format;
}
}

View File

@ -35,8 +35,7 @@ class ArchiveManagerTest extends ArchiverTest
$this->manager = new ArchiveManager($this->workDir);
$this->manager->addArchiver(new Archiver\GitArchiver);
$this->manager->addArchiver(new Archiver\MercurialArchiver);
$this->manager->addArchiver(new Archiver\TarArchiver);
$this->manager->addArchiver(new Archiver\ZipArchiver);
$this->manager->addArchiver(new Archiver\PharArchiver);
}
public function testUnknownFormat()

View File

@ -12,15 +12,15 @@
namespace Composer\Test\Package\Archiver;
use Composer\Package\Archiver\TarArchiver;
use Composer\Package\Archiver\PharArchiver;
/**
* @author Till Klampaeckel <till@php.net>
* @author Matthieu Moquet <matthieu@moquet.net>
*/
class TarArchiverTest extends ArchiverTest
class PharArchiverTest extends ArchiverTest
{
public function testArchive()
public function testTarArchive()
{
$this->setupGitRepo();
@ -28,11 +28,27 @@ class TarArchiverTest extends ArchiverTest
$target = sys_get_temp_dir().'/composer_archiver_test.tar';
// Test archive
$archiver = new TarArchiver();
$archiver = new PharArchiver();
$archiver->archive($package->getSourceUrl(), $target, 'tar');
$this->assertFileExists($target);
unlink($target);
$this->removeGitRepo();
}
public function testZipArchive()
{
$this->setupGitRepo();
$package = $this->setupPackage();
$target = sys_get_temp_dir().'/composer_archiver_test.zip';
// Test archive
$archiver = new PharArchiver();
$archiver->archive($package->getSourceUrl(), $target, 'zip');
$this->assertFileExists($target);
unlink($target);
$this->removeGitRepo();
}
}

View File

@ -1,38 +0,0 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Test\Package\Archiver;
use Composer\Package\Archiver\ZipArchiver;
/**
* @author Till Klampaeckel <till@php.net>
* @author Matthieu Moquet <matthieu@moquet.net>
*/
class ZipArchiverTest extends ArchiverTest
{
public function testArchive()
{
$this->setupGitRepo();
$package = $this->setupPackage();
$target = sys_get_temp_dir().'/composer_archiver_test.zip';
// Test archive
$archiver = new ZipArchiver();
$archiver->archive($package->getSourceUrl(), $target, 'zip');
$this->assertFileExists($target);
unlink($target);
$this->removeGitRepo();
}
}