Merge pull request #798 from cs278/dev-hash-detached-head
Ensure composer works with a detached headpull/817/head
commit
a756f7f880
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* 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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Test\Package\Loader;
|
||||
|
||||
use Composer\Package\Loader\RootPackageLoader;
|
||||
use Composer\Test\Mock\ProcessExecutorMock;
|
||||
|
||||
class RootPackageLoaderTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testDetachedHeadBecomesDevHash()
|
||||
{
|
||||
if (!function_exists('proc_open')) {
|
||||
$this->markTestSkipped('proc_open() is not available');
|
||||
}
|
||||
|
||||
$commitHash = '03a15d220da53c52eddd5f32ffca64a7b3801bea';
|
||||
|
||||
$manager = $this->getMockBuilder('\\Composer\\Repository\\RepositoryManager')
|
||||
->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, $commitHash) {
|
||||
$self->assertStringStartsWith('git branch', $command);
|
||||
|
||||
$output = "* (no branch) $commitHash Commit message\n";
|
||||
|
||||
return 0;
|
||||
});
|
||||
|
||||
$loader = new RootPackageLoader($manager, null, $processExecutor);
|
||||
$package = $loader->load(array());
|
||||
|
||||
$this->assertEquals("dev-$commitHash", $package->getVersion());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue