From ef37b86c81d8acbf586df147bd1958a6095f2b4d Mon Sep 17 00:00:00 2001 From: Rob Bast Date: Thu, 30 Jul 2015 13:37:12 +0200 Subject: [PATCH] closes #1508 - updated tests --- .../Test/Mock/ProcessExecutorMock.php | 31 --- .../Package/Loader/RootPackageLoaderTest.php | 231 ++++++++++++------ 2 files changed, 150 insertions(+), 112 deletions(-) delete mode 100644 tests/Composer/Test/Mock/ProcessExecutorMock.php diff --git a/tests/Composer/Test/Mock/ProcessExecutorMock.php b/tests/Composer/Test/Mock/ProcessExecutorMock.php deleted file mode 100644 index 13ea9792b..000000000 --- a/tests/Composer/Test/Mock/ProcessExecutorMock.php +++ /dev/null @@ -1,31 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Test\Mock; - -use Composer\Util\ProcessExecutor; - -class ProcessExecutorMock extends ProcessExecutor -{ - private $execute; - - public function __construct(\Closure $execute) - { - $this->execute = $execute; - } - - public function execute($command, &$output = null, $cwd = null) - { - $execute = $this->execute; - - return $execute($command, $output, $cwd); - } -} diff --git a/tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php b/tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php index fc3192414..2a4d9ccf6 100644 --- a/tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php +++ b/tests/Composer/Test/Package/Loader/RootPackageLoaderTest.php @@ -15,7 +15,6 @@ namespace Composer\Test\Package\Loader; use Composer\Config; use Composer\Package\Loader\RootPackageLoader; use Composer\Package\BasePackage; -use Composer\Test\Mock\ProcessExecutorMock; class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase { @@ -29,27 +28,39 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase $manager = $this->getMockBuilder('\\Composer\\Repository\\RepositoryManager') ->disableOriginalConstructor() - ->getMock(); + ->getMock() + ; + + $executor = $this->getMockBuilder('\\Composer\\Util\\ProcessExecutor') + ->setMethods(array('execute')) + ->disableArgumentCloning() + ->disableOriginalConstructor() + ->getMock() + ; + + $executor + ->expects($this->at(0)) + ->method('execute') + ->with('git describe --exact-match --tags') + ->willReturn(1) + ; $self = $this; - /* Can do away with this mock object when https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 is fixed */ - $processExecutor = new ProcessExecutorMock(function ($command, &$output = null, $cwd = null) use ($self, $commitHash) { - if (0 === strpos($command, 'git describe')) { - // simulate not being on a tag - return 1; - } + $executor + ->expects($this->at(1)) + ->method('execute') + ->willReturnCallback(function ($command, &$output) use ($self, $commitHash) { + $self->assertEquals('git branch --no-color --no-abbrev -v', $command); + $output = "* (no branch) $commitHash Commit message\n"; - $self->assertStringStartsWith('git branch', $command); - - $output = "* (no branch) $commitHash Commit message\n"; - - return 0; - }); + return 0; + }) + ; $config = new Config; $config->merge(array('repositories' => array('packagist' => false))); - $loader = new RootPackageLoader($manager, $config, null, $processExecutor); + $loader = new RootPackageLoader($manager, $config, null, $executor); $package = $loader->load(array()); $this->assertEquals("dev-$commitHash", $package->getVersion()); @@ -63,22 +74,32 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase $manager = $this->getMockBuilder('\\Composer\\Repository\\RepositoryManager') ->disableOriginalConstructor() - ->getMock(); + ->getMock() + ; + + $executor = $this->getMockBuilder('\\Composer\\Util\\ProcessExecutor') + ->setMethods(array('execute')) + ->disableArgumentCloning() + ->disableOriginalConstructor() + ->getMock() + ; $self = $this; - /* Can do away with this mock object when https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 is fixed */ - $processExecutor = new ProcessExecutorMock(function ($command, &$output = null, $cwd = null) use ($self) { - $self->assertEquals('git describe --exact-match --tags', $command); + $executor + ->expects($this->at(0)) + ->method('execute') + ->willReturnCallback(function ($command, &$output) use ($self) { + $self->assertEquals('git describe --exact-match --tags', $command); + $output = "v2.0.5-alpha2"; - $output = "v2.0.5-alpha2"; - - return 0; - }); + return 0; + }) + ; $config = new Config; $config->merge(array('repositories' => array('packagist' => false))); - $loader = new RootPackageLoader($manager, $config, null, $processExecutor); + $loader = new RootPackageLoader($manager, $config, null, $executor); $package = $loader->load(array()); $this->assertEquals("2.0.5.0-alpha2", $package->getVersion()); @@ -92,26 +113,43 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase $manager = $this->getMockBuilder('\\Composer\\Repository\\RepositoryManager') ->disableOriginalConstructor() - ->getMock(); + ->getMock() + ; + + $executor = $this->getMockBuilder('\\Composer\\Util\\ProcessExecutor') + ->setMethods(array('execute')) + ->disableArgumentCloning() + ->disableOriginalConstructor() + ->getMock() + ; $self = $this; - /* Can do away with this mock object when https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 is fixed */ - $processExecutor = new ProcessExecutorMock(function ($command, &$output = null, $cwd = null) use ($self) { - if ('git describe --exact-match --tags' === $command) { + $executor + ->expects($this->at(0)) + ->method('execute') + ->willReturnCallback(function ($command, &$output) use ($self) { + $self->assertEquals('git describe --exact-match --tags', $command); $output = "foo-bar"; return 0; - } + }) + ; - $output = "* foo 03a15d220da53c52eddd5f32ffca64a7b3801bea Commit message\n"; + $executor + ->expects($this->at(1)) + ->method('execute') + ->willReturnCallback(function ($command, &$output) use ($self) { + $self->assertEquals('git branch --no-color --no-abbrev -v', $command); + $output = "* foo 03a15d220da53c52eddd5f32ffca64a7b3801bea Commit message\n"; - return 0; - }); + return 0; + }) + ; $config = new Config; $config->merge(array('repositories' => array('packagist' => false))); - $loader = new RootPackageLoader($manager, $config, null, $processExecutor); + $loader = new RootPackageLoader($manager, $config, null, $executor); $package = $loader->load(array()); $this->assertEquals("dev-foo", $package->getVersion()); @@ -121,21 +159,25 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase { $manager = $this->getMockBuilder('\\Composer\\Repository\\RepositoryManager') ->disableOriginalConstructor() - ->getMock(); + ->getMock() + ; - $self = $this; - - /* Can do away with this mock object when https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 is fixed */ - $processExecutor = $this->getMockBuilder('Composer\Util\ProcessExecutor') + $executor = $this->getMockBuilder('\\Composer\\Util\\ProcessExecutor') + ->setMethods(array('execute')) + ->disableArgumentCloning() ->disableOriginalConstructor() - ->getMock(); - $processExecutor->expects($this->any()) + ->getMock() + ; + + $executor + ->expects($this->any()) ->method('execute') - ->willReturn(null); + ->willReturn(null) + ; $config = new Config; $config->merge(array('repositories' => array('packagist' => false))); - $loader = new RootPackageLoader($manager, $config, null, $processExecutor); + $loader = new RootPackageLoader($manager, $config, null, $executor); $package = $loader->load(array()); $this->assertEquals("1.0.0.0", $package->getVersion()); @@ -148,10 +190,6 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase ->disableOriginalConstructor() ->getMock(); - $processExecutor = new ProcessExecutorMock(function ($command, &$output = null, $cwd = null) { - return 1; - }); - $config = new Config; $config->merge(array('repositories' => array('packagist' => false))); @@ -188,32 +226,53 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase $manager = $this->getMockBuilder('\\Composer\\Repository\\RepositoryManager') ->disableOriginalConstructor() - ->getMock(); + ->getMock() + ; + + $executor = $this->getMockBuilder('\\Composer\\Util\\ProcessExecutor') + ->setMethods(array('execute')) + ->disableArgumentCloning() + ->disableOriginalConstructor() + ->getMock() + ; $self = $this; - /* Can do away with this mock object when https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 is fixed */ - $processExecutor = new ProcessExecutorMock(function ($command, &$output = null, $cwd = null) use ($self) { - if (0 === strpos($command, 'git rev-list')) { + $executor + ->expects($this->at(0)) + ->method('execute') + ->willReturnCallback(function ($command) use ($self) { + $self->assertEquals('git describe --exact-match --tags', $command); + + return 1; + }) + ; + + $executor + ->expects($this->at(1)) + ->method('execute') + ->willReturnCallback(function ($command, &$output) use ($self) { + $self->assertEquals('git branch --no-color --no-abbrev -v', $command); + $output = "* latest-production 38137d2f6c70e775e137b2d8a7a7d3eaebf7c7e5 Commit message\n master 4f6ed96b0bc363d2aa4404c3412de1c011f67c66 Commit message\n"; + + return 0; + }) + ; + + $executor + ->expects($this->at(2)) + ->method('execute') + ->willReturnCallback(function ($command, &$output) use ($self) { + $self->assertEquals('git rev-list master..latest-production', $command); $output = ""; return 0; - } - - if ('git branch --no-color --no-abbrev -v' !== $command) { - return 1; //0; - } - - $self->assertEquals('git branch --no-color --no-abbrev -v', $command); - - $output = "* latest-production 38137d2f6c70e775e137b2d8a7a7d3eaebf7c7e5 Commit message\n master 4f6ed96b0bc363d2aa4404c3412de1c011f67c66 Commit message\n"; - - return 0; - }); + }) + ; $config = new Config; $config->merge(array('repositories' => array('packagist' => false))); - $loader = new RootPackageLoader($manager, $config, null, $processExecutor); + $loader = new RootPackageLoader($manager, $config, null, $executor); $package = $loader->load(array('require' => array('foo/bar' => 'self.version'))); $this->assertEquals("dev-master", $package->getPrettyVersion()); @@ -227,32 +286,42 @@ class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase $manager = $this->getMockBuilder('\\Composer\\Repository\\RepositoryManager') ->disableOriginalConstructor() - ->getMock(); + ->getMock() + ; + + $executor = $this->getMockBuilder('\\Composer\\Util\\ProcessExecutor') + ->setMethods(array('execute')) + ->disableArgumentCloning() + ->disableOriginalConstructor() + ->getMock() + ; $self = $this; - /* Can do away with this mock object when https://github.com/sebastianbergmann/phpunit-mock-objects/issues/81 is fixed */ - $processExecutor = new ProcessExecutorMock(function ($command, &$output = null, $cwd = null) use ($self) { - if (0 === strpos($command, 'git rev-list')) { - $output = ""; + $executor + ->expects($this->at(0)) + ->method('execute') + ->willReturnCallback(function ($command) use ($self) { + $self->assertEquals('git describe --exact-match --tags', $command); + + return 1; + }) + ; + + $executor + ->expects($this->at(1)) + ->method('execute') + ->willReturnCallback(function ($command, &$output) use ($self) { + $self->assertEquals('git branch --no-color --no-abbrev -v', $command); + $output = "* latest-production 38137d2f6c70e775e137b2d8a7a7d3eaebf7c7e5 Commit message\n master 4f6ed96b0bc363d2aa4404c3412de1c011f67c66 Commit message\n"; return 0; - } - - if ('git branch --no-color --no-abbrev -v' !== $command) { - return 1; //0; - } - - $self->assertEquals('git branch --no-color --no-abbrev -v', $command); - - $output = "* latest-production 38137d2f6c70e775e137b2d8a7a7d3eaebf7c7e5 Commit message\n master 4f6ed96b0bc363d2aa4404c3412de1c011f67c66 Commit message\n"; - - return 0; - }); + }) + ; $config = new Config; $config->merge(array('repositories' => array('packagist' => false))); - $loader = new RootPackageLoader($manager, $config, null, $processExecutor); + $loader = new RootPackageLoader($manager, $config, null, $executor); $package = $loader->load(array('require' => array('foo/bar' => 'self.version'), "non-feature-branches" => array("latest-.*"))); $this->assertEquals("dev-latest-production", $package->getPrettyVersion());