Merge remote-tracking branch 'stefk/master'
commit
74fe0fd497
|
@ -380,7 +380,8 @@ class GitDownloader extends VcsDownloader
|
||||||
{
|
{
|
||||||
// set push url for github projects
|
// set push url for github projects
|
||||||
if (preg_match('{^(?:https?|git)://github.com/([^/]+)/([^/]+?)(?:\.git)?$}', $package->getSourceUrl(), $match)) {
|
if (preg_match('{^(?:https?|git)://github.com/([^/]+)/([^/]+?)(?:\.git)?$}', $package->getSourceUrl(), $match)) {
|
||||||
$pushUrl = 'git@github.com:'.$match[1].'/'.$match[2].'.git';
|
$protocols = $this->config->get('github-protocols');
|
||||||
|
$pushUrl = $protocols[0] === 'git' ? 'git@github.com:'.$match[1].'/'.$match[2].'.git' : $package->getSourceUrl();
|
||||||
$cmd = sprintf('git remote set-url --push origin %s', escapeshellarg($pushUrl));
|
$cmd = sprintf('git remote set-url --push origin %s', escapeshellarg($pushUrl));
|
||||||
$this->process->execute($cmd, $ignoredOutput, $path);
|
$this->process->execute($cmd, $ignoredOutput, $path);
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,11 @@ class ArtifactRepository extends ArrayRepository
|
||||||
private function scanDirectory($path)
|
private function scanDirectory($path)
|
||||||
{
|
{
|
||||||
$io = $this->io;
|
$io = $this->io;
|
||||||
foreach (new \RecursiveDirectoryIterator($path) as $file) {
|
|
||||||
|
$directory = new \RecursiveDirectoryIterator($path);
|
||||||
|
$iterator = new \RecursiveIteratorIterator($directory);
|
||||||
|
$regex = new \RegexIterator($iterator, '/^.+\.(zip|phar)$/i');
|
||||||
|
foreach ($regex as $file) {
|
||||||
/* @var $file \SplFileInfo */
|
/* @var $file \SplFileInfo */
|
||||||
if (!$file->isFile()) {
|
if (!$file->isFile()) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -137,7 +137,19 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
|
||||||
$downloader->download($packageMock, 'composerPath');
|
$downloader->download($packageMock, 'composerPath');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDownloadUsesCustomVariousProtocolsForGithub()
|
public function pushUrlProvider()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('git', 'git@github.com:composer/composer.git'),
|
||||||
|
array('https', 'https://github.com/composer/composer'),
|
||||||
|
array('http', 'https://github.com/composer/composer')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider pushUrlProvider
|
||||||
|
*/
|
||||||
|
public function testDownloadAndSetPushUrlUseCustomVariousProtocolsForGithub($protocol, $pushUrl)
|
||||||
{
|
{
|
||||||
$packageMock = $this->getMock('Composer\Package\PackageInterface');
|
$packageMock = $this->getMock('Composer\Package\PackageInterface');
|
||||||
$packageMock->expects($this->any())
|
$packageMock->expects($this->any())
|
||||||
|
@ -151,18 +163,24 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase
|
||||||
->will($this->returnValue('1.0.0'));
|
->will($this->returnValue('1.0.0'));
|
||||||
$processExecutor = $this->getMock('Composer\Util\ProcessExecutor');
|
$processExecutor = $this->getMock('Composer\Util\ProcessExecutor');
|
||||||
|
|
||||||
$expectedGitCommand = $this->winCompat("git clone 'http://github.com/composer/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'http://github.com/composer/composer' && git fetch composer");
|
$expectedGitCommand = $this->winCompat("git clone '{$protocol}://github.com/composer/composer' 'composerPath' && cd 'composerPath' && git remote add composer '{$protocol}://github.com/composer/composer' && git fetch composer");
|
||||||
$processExecutor->expects($this->at(0))
|
$processExecutor->expects($this->at(0))
|
||||||
->method('execute')
|
->method('execute')
|
||||||
->with($this->equalTo($expectedGitCommand))
|
->with($this->equalTo($expectedGitCommand))
|
||||||
->will($this->returnValue(0));
|
->will($this->returnValue(0));
|
||||||
|
|
||||||
|
$expectedGitCommand = $this->winCompat("git remote set-url --push origin '{$pushUrl}'");
|
||||||
|
$processExecutor->expects($this->at(1))
|
||||||
|
->method('execute')
|
||||||
|
->with($this->equalTo($expectedGitCommand), $this->equalTo(null), $this->equalTo($this->winCompat('composerPath')))
|
||||||
|
->will($this->returnValue(0));
|
||||||
|
|
||||||
$processExecutor->expects($this->exactly(4))
|
$processExecutor->expects($this->exactly(4))
|
||||||
->method('execute')
|
->method('execute')
|
||||||
->will($this->returnValue(0));
|
->will($this->returnValue(0));
|
||||||
|
|
||||||
$config = new Config();
|
$config = new Config();
|
||||||
$config->merge(array('config' => array('github-protocols' => array('http'))));
|
$config->merge(array('config' => array('github-protocols' => array($protocol))));
|
||||||
|
|
||||||
$downloader = $this->getDownloaderMock(null, $config, $processExecutor);
|
$downloader = $this->getDownloaderMock(null, $config, $processExecutor);
|
||||||
$downloader->download($packageMock, 'composerPath');
|
$downloader->download($packageMock, 'composerPath');
|
||||||
|
|
|
@ -25,6 +25,7 @@ class ArtifactRepositoryTest extends TestCase
|
||||||
'vendor0/package0-0.0.1',
|
'vendor0/package0-0.0.1',
|
||||||
'composer/composer-1.0.0-alpha6',
|
'composer/composer-1.0.0-alpha6',
|
||||||
'vendor1/package2-4.3.2',
|
'vendor1/package2-4.3.2',
|
||||||
|
'vendor3/package1-5.4.3',
|
||||||
);
|
);
|
||||||
|
|
||||||
$coordinates = array('type' => 'artifact', 'url' => __DIR__ . '/Fixtures/artifacts');
|
$coordinates = array('type' => 'artifact', 'url' => __DIR__ . '/Fixtures/artifacts');
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue