mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2024-09-15 03:55:36 +00:00
20862be7d0
- slim/slim: ^3.1 - symfony/expression-language: ^3.4 - fxp/composer-asset-plugin: ~1.3 - bower-asset/vue: ^2.5 - bower-asset/vue-resource: ^1.5
157 lines
5.2 KiB
PHP
157 lines
5.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Fxp Composer Asset Plugin package.
|
|
*
|
|
* (c) François Pluchino <francois.pluchino@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Fxp\Composer\AssetPlugin\Tests\Repository\Vcs;
|
|
|
|
use Composer\Test\Repository\Vcs\PerforceDriverTest as BasePerforceDriverTest;
|
|
use Fxp\Composer\AssetPlugin\Repository\Vcs\PerforceDriver;
|
|
use Fxp\Composer\AssetPlugin\Util\Perforce;
|
|
|
|
/**
|
|
* Tests of vcs perforce repository.
|
|
*
|
|
* @author François Pluchino <francois.pluchino@gmail.com>
|
|
*/
|
|
class PerforceDriverTest extends BasePerforceDriverTest
|
|
{
|
|
/**
|
|
* @var PerforceDriver
|
|
*/
|
|
protected $driver;
|
|
|
|
/**
|
|
* @var Perforce|\PHPUnit_Framework_MockObject_MockObject
|
|
*/
|
|
protected $perforce;
|
|
|
|
protected function setUp()
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->driver = new PerforceDriver($this->repoConfig, $this->io, $this->config, $this->process, $this->remoteFileSystem);
|
|
$this->overrideDriverInternalPerforce($this->perforce);
|
|
}
|
|
|
|
protected function getMockIOInterface()
|
|
{
|
|
return $this->getMockBuilder('Composer\IO\IOInterface')->getMock();
|
|
}
|
|
|
|
protected function getMockProcessExecutor()
|
|
{
|
|
return $this->getMockBuilder('Composer\Util\ProcessExecutor')->getMock();
|
|
}
|
|
|
|
public function testInitializeCapturesVariablesFromRepoConfig()
|
|
{
|
|
$driver = new PerforceDriver($this->repoConfig, $this->io, $this->config, $this->process, $this->remoteFileSystem);
|
|
$driver->initialize();
|
|
$this->assertEquals(self::TEST_URL, $driver->getUrl());
|
|
$this->assertEquals(self::TEST_DEPOT, $driver->getDepot());
|
|
$this->assertEquals(self::TEST_BRANCH, $driver->getBranch());
|
|
}
|
|
|
|
/**
|
|
* Test that supports() simply return false.
|
|
*
|
|
* @covers \Composer\Repository\Vcs\PerforceDriver::supports
|
|
*/
|
|
public function testSupportsReturnsFalseNoDeepCheck()
|
|
{
|
|
$this->expectOutputString('');
|
|
$this->assertFalse(PerforceDriver::supports($this->io, $this->config, 'existing.url'));
|
|
}
|
|
|
|
public function testInitializeLogsInAndConnectsClient()
|
|
{
|
|
$this->perforce->expects($this->at(0))->method('p4Login');
|
|
$this->perforce->expects($this->at(1))->method('checkStream');
|
|
$this->perforce->expects($this->at(2))->method('writeP4ClientSpec');
|
|
$this->perforce->expects($this->at(3))->method('connectClient');
|
|
$this->driver->initialize();
|
|
}
|
|
|
|
public function testPublicRepositoryWithEmptyComposer()
|
|
{
|
|
$identifier = 'TEST_IDENTIFIER';
|
|
$this->perforce->expects($this->any())
|
|
->method('getComposerInformation')
|
|
->with($this->equalTo($identifier))
|
|
->will($this->returnValue(''));
|
|
|
|
$this->driver->initialize();
|
|
$validEmpty = array(
|
|
'_nonexistent_package' => true,
|
|
);
|
|
|
|
$this->assertSame($validEmpty, $this->driver->getComposerInformation($identifier));
|
|
}
|
|
|
|
public function testPublicRepositoryWithCodeCache()
|
|
{
|
|
$identifier = 'TEST_IDENTIFIER';
|
|
$this->perforce->expects($this->any())
|
|
->method('getComposerInformation')
|
|
->with($this->equalTo($identifier))
|
|
->will($this->returnValue(array('name' => 'foo')));
|
|
|
|
$this->driver->initialize();
|
|
$composer1 = $this->driver->getComposerInformation($identifier);
|
|
$composer2 = $this->driver->getComposerInformation($identifier);
|
|
|
|
$this->assertNotNull($composer1);
|
|
$this->assertNotNull($composer2);
|
|
$this->assertSame($composer1, $composer2);
|
|
}
|
|
|
|
public function testPublicRepositoryWithFilesystemCache()
|
|
{
|
|
$identifier = 'TEST_IDENTIFIER';
|
|
$this->perforce->expects($this->any())
|
|
->method('getComposerInformation')
|
|
->with($this->equalTo($identifier))
|
|
->will($this->returnValue(array('name' => 'foo')));
|
|
|
|
$driver2 = new PerforceDriver($this->repoConfig, $this->io, $this->config, $this->process, $this->remoteFileSystem);
|
|
$reflectionClass = new \ReflectionClass($driver2);
|
|
$property = $reflectionClass->getProperty('perforce');
|
|
$property->setAccessible(true);
|
|
$property->setValue($driver2, $this->perforce);
|
|
|
|
$this->driver->initialize();
|
|
$driver2->initialize();
|
|
|
|
$composer1 = $this->driver->getComposerInformation($identifier);
|
|
$composer2 = $driver2->getComposerInformation($identifier);
|
|
|
|
$this->assertNotNull($composer1);
|
|
$this->assertNotNull($composer2);
|
|
$this->assertSame($composer1, $composer2);
|
|
}
|
|
|
|
protected function getTestRepoConfig()
|
|
{
|
|
return array_merge(parent::getTestRepoConfig(), array(
|
|
'asset-type' => 'ASSET',
|
|
'filename' => 'ASSET.json',
|
|
));
|
|
}
|
|
|
|
protected function getMockPerforce()
|
|
{
|
|
$methods = array('p4login', 'checkStream', 'writeP4ClientSpec', 'connectClient', 'getComposerInformation', 'cleanupClientSpec');
|
|
|
|
return $this->getMockBuilder('Fxp\Composer\AssetPlugin\Util\Perforce')
|
|
->disableOriginalConstructor()
|
|
->setMethods($methods)
|
|
->getMock();
|
|
}
|
|
}
|