* Jordi Boggiano * * Contributor: matt-whittom * Date: 7/17/13 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Test\Repository\Vcs; use Composer\Repository\Vcs\PerforceDriver; use Composer\Util\Filesystem; use Composer\Config; class PerforceDriverTest extends \PHPUnit_Framework_TestCase { private $config; private $io; private $process; private $remoteFileSystem; private $testPath; public function setUp() { $this->testPath = sys_get_temp_dir() . '/composer-test'; $this->config = new Config(); $this->config->merge( array( 'config' => array( 'home' => $this->testPath, ), ) ); $this->io = $this->getMock('Composer\IO\IOInterface'); $this->process = $this->getMock('Composer\Util\ProcessExecutor'); $this->remoteFileSystem = $this->getMockBuilder('Composer\Util\RemoteFilesystem')->disableOriginalConstructor()->getMock(); } public function tearDown() { $fs = new Filesystem; $fs->removeDirectory($this->testPath); } //Test: //hasComposerFile public function testInitializeCapturesVariablesFromRepoConfig() { $this->setUp(); $repo_config = array( 'url' => 'TEST_PERFORCE_URL', 'depot' => 'TEST_DEPOT_CONFIG', 'branch' => 'TEST_BRANCH_CONFIG' ); $driver = new TestingPerforceDriver($repo_config, $this->io, $this->config, $this->process, $this->remoteFileSystem); $arguments = array(array('depot'=>'TEST_DEPOT', 'branch'=>'TEST_BRANCH'), 'port'=>'TEST_PORT', 'path'=>$this->testPath); $perforce = $this->getMock('Composer\Util\Perforce', null, $arguments); $driver->injectPerforce($perforce); $driver->initialize(); $this->assertEquals("TEST_PERFORCE_URL", $driver->getUrl()); $this->assertEquals("TEST_DEPOT_CONFIG", $driver->getDepot()); $this->assertEquals("TEST_BRANCH_CONFIG", $driver->getBranch()); } public function testInitializeLogsInAndConnectsClient() { $this->setUp(); $repo_config = array( 'url' => 'TEST_PERFORCE_URL', 'depot' => 'TEST_DEPOT_CONFIG', 'branch' => 'TEST_BRANCH_CONFIG' ); $driver = new TestingPerforceDriver($repo_config, $this->io, $this->config, $this->process, $this->remoteFileSystem); $perforce = $this->getMockBuilder('Composer\Util\Perforce')->disableOriginalConstructor()->getMock(); $perforce->expects($this->at(0)) ->method('p4Login') ->with($this->io); $perforce->expects($this->at(1)) ->method('checkStream') ->with($this->equalTo("TEST_DEPOT_CONFIG")); $perforce->expects($this->at(2)) ->method('writeP4ClientSpec'); $perforce->expects($this->at(3)) ->method('connectClient'); $driver->injectPerforce($perforce); $driver->initialize(); } public function testHasComposerFile() { $this->setUp(); $repo_config = array( 'url' => 'TEST_PERFORCE_URL', 'depot' => 'TEST_DEPOT_CONFIG', 'branch' => 'TEST_BRANCH_CONFIG' ); $driver = new TestingPerforceDriver($repo_config, $this->io, $this->config, $this->process, $this->remoteFileSystem); $arguments = array(array('depot'=>'TEST_DEPOT', 'branch'=>'TEST_BRANCH'), 'port'=>'TEST_PORT', 'path'=>$this->testPath); $perforce = $this->getMock('Composer\Util\Perforce', array('getComposerInformation'), $arguments); $perforce->expects($this->at(0)) ->method('getComposerInformation') ->with($this->equalTo("//TEST_DEPOT_CONFIG/TEST_IDENTIFIER")) ->will($this->returnValue("Some json stuff")); $driver->injectPerforce($perforce); $driver->initialize(); $identifier = "TEST_IDENTIFIER"; $result = $driver->hasComposerFile($identifier); $this->assertTrue($result); } }