From c8d110aa72351c8d4d28586e4cb143591f26dc3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Haso=C5=88?= Date: Fri, 18 May 2012 14:41:57 +0200 Subject: [PATCH] Imporoved exception message for GitDownloader (various protocols for github) --- src/Composer/Downloader/GitDownloader.php | 4 +++- tests/Composer/Test/Downloader/GitDownloaderTest.php | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Composer/Downloader/GitDownloader.php b/src/Composer/Downloader/GitDownloader.php index 50311b2bf..a75a7d6d3 100644 --- a/src/Composer/Downloader/GitDownloader.php +++ b/src/Composer/Downloader/GitDownloader.php @@ -92,18 +92,20 @@ class GitDownloader extends VcsDownloader // github, autoswitch protocols if (preg_match('{^(?:https?|git)(://github.com/.*)}', $url, $match)) { $protocols = array('git', 'https', 'http'); + $messages = array(); foreach ($protocols as $protocol) { $url = $protocol . $match[1]; if (0 === $this->process->execute(call_user_func($commandCallable, $url), $handler)) { return; } + $messages[] = '- ' . $url . "\n" . preg_replace('#^#m', ' ', $this->process->getErrorOutput()); if (null !== $path) { $this->filesystem->removeDirectory($path); } } // failed to checkout, first check git accessibility - $this->throwException('Failed to clone ' . $url .' via git, https and http protocols, aborting.' . "\n\n" . $this->process->getErrorOutput(), $url); + $this->throwException('Failed to clone ' . $url .' via git, https and http protocols, aborting.' . "\n\n" . implode("\n", $messages), $url); } $command = call_user_func($commandCallable, $url); diff --git a/tests/Composer/Test/Downloader/GitDownloaderTest.php b/tests/Composer/Test/Downloader/GitDownloaderTest.php index 6d4953153..1381c7b0d 100644 --- a/tests/Composer/Test/Downloader/GitDownloaderTest.php +++ b/tests/Composer/Test/Downloader/GitDownloaderTest.php @@ -78,19 +78,19 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase ->will($this->returnValue(1)); $expectedGitCommand = $this->getCmd("git clone 'https://github.com/composer/composer' 'composerPath' && cd 'composerPath' && git checkout 'ref' && git reset --hard 'ref' && git remote add composer 'https://github.com/composer/composer'"); - $processExecutor->expects($this->at(1)) + $processExecutor->expects($this->at(2)) ->method('execute') ->with($this->equalTo($expectedGitCommand)) ->will($this->returnValue(1)); $expectedGitCommand = $this->getCmd("git clone 'http://github.com/composer/composer' 'composerPath' && cd 'composerPath' && git checkout 'ref' && git reset --hard 'ref' && git remote add composer 'http://github.com/composer/composer'"); - $processExecutor->expects($this->at(2)) + $processExecutor->expects($this->at(4)) ->method('execute') ->with($this->equalTo($expectedGitCommand)) ->will($this->returnValue(0)); $expectedGitCommand = $this->getCmd("git remote set-url --push origin 'git@github.com:composer/composer.git'"); - $processExecutor->expects($this->at(3)) + $processExecutor->expects($this->at(5)) ->method('execute') ->with($this->equalTo($expectedGitCommand), $this->equalTo(null), $this->equalTo('composerPath')) ->will($this->returnValue(0));