* Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Test\Downloader; use Composer\Downloader\HgDownloader; class HgDownloaderTest extends \PHPUnit_Framework_TestCase { /** * @expectedException \InvalidArgumentException */ public function testDownloadForPackageWithoutSourceReference() { $packageMock = $this->getMock('Composer\Package\PackageInterface'); $packageMock->expects($this->once()) ->method('getSourceReference') ->will($this->returnValue(null)); $downloader = new HgDownloader(); $downloader->download($packageMock, '/path'); } public function testDownload() { $expectedGitCommand = '(hg clone \'https://mercurial.dev/l3l0/composer\' composerPath 2> /dev/null) && cd composerPath && hg up \'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://mercurial.dev/l3l0/composer')); $processExecutor = $this->getMock('Composer\Util\ProcessExecutor'); $processExecutor->expects($this->once()) ->method('execute') ->with($this->equalTo($expectedGitCommand)); $downloader = new HgDownloader($processExecutor); $downloader->download($packageMock, 'composerPath'); } /** * @expectedException \InvalidArgumentException */ public function testUpdateforPackageWithoutSourceReference() { $initialPackageMock = $this->getMock('Composer\Package\PackageInterface'); $sourcePackageMock = $this->getMock('Composer\Package\PackageInterface'); $sourcePackageMock->expects($this->once()) ->method('getSourceReference') ->will($this->returnValue(null)); $downloader = new HgDownloader(); $downloader->update($initialPackageMock, $sourcePackageMock, '/path'); } public function testUpdate() { $expectedGitUpdateCommand = 'cd composerPath && hg pull && hg up \'ref\''; $expectedGitResetCommand = 'cd composerPath && hg st'; $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)); $processExecutor->expects($this->at(1)) ->method('execute') ->with($this->equalTo($expectedGitUpdateCommand)); $downloader = new HgDownloader($processExecutor); $downloader->update($packageMock, $packageMock, 'composerPath'); } public function testRemove() { $expectedGitResetCommand = 'cd composerPath && hg st'; $packageMock = $this->getMock('Composer\Package\PackageInterface'); $processExecutor = $this->getMock('Composer\Util\ProcessExecutor'); $processExecutor->expects($this->any()) ->method('execute') ->with($this->equalTo($expectedGitResetCommand)); $downloader = new HgDownloader($processExecutor); $downloader->remove($packageMock, 'composerPath'); } public function testGetInstallationSource() { $downloader = new HgDownloader(); $this->assertEquals('source', $downloader->getInstallationSource()); } }