From 0e5a4e07baa7630d4e02b01c681c9df42db69500 Mon Sep 17 00:00:00 2001 From: mikey179 Date: Tue, 21 Feb 2012 00:12:39 +0100 Subject: [PATCH] add tests to make sure a runtime exception is thrown if return code from git command line call is not 0 --- .../Test/Downloader/GitDownloaderTest.php | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/Composer/Test/Downloader/GitDownloaderTest.php b/tests/Composer/Test/Downloader/GitDownloaderTest.php index 525d2d0e9..885a80d35 100755 --- a/tests/Composer/Test/Downloader/GitDownloaderTest.php +++ b/tests/Composer/Test/Downloader/GitDownloaderTest.php @@ -50,6 +50,29 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase $downloader->download($packageMock, 'composerPath'); } + /** + * @expectedException \RuntimeException + */ + public function testDownloadThrowsRuntimeExceptionIfGitCommandFails() + { + $expectedGitCommand = $this->getCmd('git clone \'https://github.com/l3l0/composer\' \'composerPath\' && cd \'composerPath\' && git checkout \'ref\' && git reset --hard \'ref\''); + $packageMock = $this->getMock('Composer\Package\PackageInterface'); + $packageMock->expects($this->any()) + ->method('getSourceReference') + ->will($this->returnValue('ref')); + $packageMock->expects($this->once()) + ->method('getSourceUrl') + ->will($this->returnValue('https://github.com/l3l0/composer')); + $processExecutor = $this->getMock('Composer\Util\ProcessExecutor'); + $processExecutor->expects($this->once()) + ->method('execute') + ->with($this->equalTo($expectedGitCommand)) + ->will($this->returnValue(1)); + + $downloader = new GitDownloader($this->getMock('Composer\IO\IOInterface'), $processExecutor); + $downloader->download($packageMock, 'composerPath'); + } + /** * @expectedException \InvalidArgumentException */ @@ -91,6 +114,35 @@ class GitDownloaderTest extends \PHPUnit_Framework_TestCase $downloader->update($packageMock, $packageMock, 'composerPath'); } + /** + * @expectedException \RuntimeException + */ + public function testUpdateThrowsRuntimeExceptionIfGitCommandFails() + { + $expectedGitUpdateCommand = $this->getCmd('cd \'composerPath\' && git fetch && git checkout \'ref\' && git reset --hard \'ref\''); + $expectedGitResetCommand = $this->getCmd('cd \'composerPath\' && git status --porcelain'); + + $packageMock = $this->getMock('Composer\Package\PackageInterface'); + $packageMock->expects($this->any()) + ->method('getSourceReference') + ->will($this->returnValue('ref')); + $packageMock->expects($this->any()) + ->method('getSourceUrl') + ->will($this->returnValue('https://github.com/l3l0/composer')); + $processExecutor = $this->getMock('Composer\Util\ProcessExecutor'); + $processExecutor->expects($this->at(0)) + ->method('execute') + ->with($this->equalTo($expectedGitResetCommand)) + ->will($this->returnValue(0)); + $processExecutor->expects($this->at(1)) + ->method('execute') + ->with($this->equalTo($expectedGitUpdateCommand)) + ->will($this->returnValue(1)); + + $downloader = new GitDownloader($this->getMock('Composer\IO\IOInterface'), $processExecutor); + $downloader->update($packageMock, $packageMock, 'composerPath'); + } + public function testRemove() { $expectedGitResetCommand = $this->getCmd('cd \'composerPath\' && git status --porcelain');