From dd81449998f86bc0028bfd7424fa08ee92c62cbd Mon Sep 17 00:00:00 2001 From: matt-whittom Date: Thu, 15 Aug 2013 12:16:15 -0500 Subject: [PATCH] Updated to remove vfsStreams (no longer needed by tests) Updated Perforce to cleanup, modified VcsRepository to call cleanup on Driver class Updated tests, perforce constructor to make tests cleaner/easier --- composer.json | 3 +- composer.lock | 97 ++++---- .../Downloader/PerforceDownloader.php | 12 +- .../Repository/Vcs/PerforceDriver.php | 40 ++- src/Composer/Repository/Vcs/VcsDriver.php | 8 + .../Repository/Vcs/VcsDriverInterface.php | 6 + src/Composer/Repository/VcsRepository.php | 1 + src/Composer/Util/Perforce.php | 183 ++++++++------ .../Downloader/PerforceDownloaderTest.php | 3 +- .../Repository/Vcs/PerforceDriverTest.php | 15 +- .../Repository/Vcs/TestingPerforceDriver.php | 26 -- tests/Composer/Test/Util/PerforceTest.php | 232 +++++++++--------- tests/Composer/Test/Util/TestingPerforce.php | 106 -------- 13 files changed, 333 insertions(+), 399 deletions(-) delete mode 100644 tests/Composer/Test/Repository/Vcs/TestingPerforceDriver.php delete mode 100644 tests/Composer/Test/Util/TestingPerforce.php diff --git a/composer.json b/composer.json index 77cc9590f..f0d4ee56e 100644 --- a/composer.json +++ b/composer.json @@ -30,8 +30,7 @@ "symfony/process": "~2.1" }, "require-dev": { - "phpunit/phpunit": "~3.7.10", - "mikey179/vfsStream" : "1.2.*" + "phpunit/phpunit": "~3.7.10" }, "suggest": { "ext-zip": "Enabling the zip extension allows you to unzip archives, and allows gzip compression of all internet traffic", diff --git a/composer.lock b/composer.lock index 5a23476b4..b6ff8ec60 100644 --- a/composer.lock +++ b/composer.lock @@ -3,7 +3,7 @@ "This file locks the dependencies of your project to a known state", "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" ], - "hash": "6203fdb419c10ffd84f85611fc9eec61", + "hash": "370b764a9317165e8ea7a2e1623e031b", "packages": [ { "name": "justinrainbow/json-schema", @@ -15,7 +15,7 @@ }, "dist": { "type": "zip", - "url": "https://github.com/justinrainbow/json-schema/zipball/v1.1.0", + "url": "https://github.com/justinrainbow/json-schema/archive/v1.1.0.zip", "reference": "v1.1.0", "shasum": "" }, @@ -28,7 +28,37 @@ "JsonSchema": "src/" } }, - "time": "2012-01-02 21:33:17" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "NewBSD" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch", + "homepage": "http://wiedler.ch/igor/" + }, + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com", + "homepage": "http://digitalkaoz.net" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2012-01-03 00:33:17" }, { "name": "seld/jsonlint", @@ -79,17 +109,17 @@ }, { "name": "symfony/console", - "version": "dev-master", + "version": "v2.3.3", "target-dir": "Symfony/Component/Console", "source": { "type": "git", "url": "https://github.com/symfony/Console.git", - "reference": "872a494b88fba2f62be85e0bc8441e7946bb6ba6" + "reference": "v2.3.3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/872a494b88fba2f62be85e0bc8441e7946bb6ba6", - "reference": "872a494b88fba2f62be85e0bc8441e7946bb6ba6", + "url": "https://api.github.com/repos/symfony/Console/zipball/v2.3.3", + "reference": "v2.3.3", "shasum": "" }, "require": { @@ -104,7 +134,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.3-dev" } }, "autoload": { @@ -128,7 +158,7 @@ ], "description": "Symfony Console Component", "homepage": "http://symfony.com", - "time": "2013-08-09 06:00:31" + "time": "2013-07-21 12:12:18" }, { "name": "symfony/finder", @@ -179,17 +209,17 @@ }, { "name": "symfony/process", - "version": "dev-master", + "version": "v2.3.3", "target-dir": "Symfony/Component/Process", "source": { "type": "git", "url": "https://github.com/symfony/Process.git", - "reference": "723fe405fcc878ae75469babcb9507d292797ece" + "reference": "v2.3.3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/723fe405fcc878ae75469babcb9507d292797ece", - "reference": "723fe405fcc878ae75469babcb9507d292797ece", + "url": "https://api.github.com/repos/symfony/Process/zipball/v2.3.3", + "reference": "v2.3.3", "shasum": "" }, "require": { @@ -198,7 +228,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.3-dev" } }, "autoload": { @@ -222,40 +252,10 @@ ], "description": "Symfony Process Component", "homepage": "http://symfony.com", - "time": "2013-08-09 07:03:52" + "time": "2013-08-02 21:51:01" } ], "packages-dev": [ - { - "name": "mikey179/vfsStream", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/mikey179/vfsStream.git", - "reference": "v1.2.0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/v1.2.0", - "reference": "v1.2.0", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "org\\bovigo\\vfs\\": "src/main/php" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "homepage": "http://vfs.bovigo.org/", - "time": "2013-04-01 10:41:02" - }, { "name": "phpunit/php-code-coverage", "version": "1.2.12", @@ -675,10 +675,9 @@ ], "minimum-stability": "stable", - "stability-flags": { - "symfony/console": 20, - "symfony/process": 20 - }, + "stability-flags": [ + + ], "platform": { "php": ">=5.3.2" }, diff --git a/src/Composer/Downloader/PerforceDownloader.php b/src/Composer/Downloader/PerforceDownloader.php index c7ca64ec1..5cede4ff6 100644 --- a/src/Composer/Downloader/PerforceDownloader.php +++ b/src/Composer/Downloader/PerforceDownloader.php @@ -6,10 +6,14 @@ * (c) Nils Adermann * 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\Downloader; use Composer\Package\PackageInterface; @@ -17,7 +21,7 @@ use Composer\Repository\VcsRepository; use Composer\Util\Perforce; /** - * @author Jordi Boggiano + * @author Matt Whittom */ class PerforceDownloader extends VcsDownloader { @@ -39,6 +43,7 @@ class PerforceDownloader extends VcsDownloader $this->perforce->writeP4ClientSpec(); $this->perforce->connectClient(); $this->perforce->syncCodeBase($label); + $this->perforce->cleanupClientSpec(); } private function initPerforce($package, $path){ @@ -47,7 +52,7 @@ class PerforceDownloader extends VcsDownloader } $repository = $package->getRepository(); $repoConfig = $this->getRepoConfig($repository); - $this->perforce = new Perforce($repoConfig, $package->getSourceUrl(), $path); + $this->perforce = Perforce::createPerforce($repoConfig, $package->getSourceUrl(), $path); } public function injectPerforce($perforce){ @@ -64,14 +69,13 @@ class PerforceDownloader extends VcsDownloader */ public function doUpdate(PackageInterface $initial, PackageInterface $target, $path) { - print("PerforceDownloader:doUpdate\n"); $this->doDownload($target, $path); } /** * {@inheritDoc} */ - public function getLocalChanges($path) + public function getLocalChanges(PackageInterface $package, $path) { print ("Perforce driver does not check for local changes before overriding\n"); return; diff --git a/src/Composer/Repository/Vcs/PerforceDriver.php b/src/Composer/Repository/Vcs/PerforceDriver.php index 0f930a52b..7068ebb3e 100644 --- a/src/Composer/Repository/Vcs/PerforceDriver.php +++ b/src/Composer/Repository/Vcs/PerforceDriver.php @@ -6,13 +6,14 @@ * (c) Nils Adermann * Jordi Boggiano * - * Contributor: matt-whittom + * 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\Repository\Vcs; use Composer\IO\IOInterface; @@ -21,12 +22,14 @@ use Composer\Util\Filesystem; use Composer\Util\Perforce; /** - * @author matt-whittom <> + * @author Matt Whittom */ class PerforceDriver extends VcsDriver { protected $depot; protected $branch; protected $perforce; + protected $composer_info; + protected $composer_info_identifier; /** * {@inheritDoc} @@ -54,7 +57,7 @@ class PerforceDriver extends VcsDriver { } $repoDir = $this->config->get('cache-vcs-dir') . "/$this->depot"; - $this->perforce = new Perforce($this->repoConfig, $this->getUrl(), $repoDir, $this->process); + $this->perforce = Perforce::createPerforce($this->repoConfig, $this->getUrl(), $repoDir, $this->process); } public function injectPerforce(Perforce $perforce) { @@ -66,6 +69,12 @@ class PerforceDriver extends VcsDriver { * {@inheritDoc} */ public function getComposerInformation($identifier) { + if (isset($this->composer_info_identifier)){ + if (strcmp($identifier, $this->composer_info_identifier) === 0 ) + { + return $this->composer_info; + } + } $composer_info = $this->perforce->getComposerInformation($identifier); return $composer_info; @@ -127,9 +136,12 @@ class PerforceDriver extends VcsDriver { * {@inheritDoc} */ public function hasComposerFile($identifier) { - $composer_info = $this->perforce->getComposerInformation("//$this->depot/$identifier"); - $result = strlen(trim($composer_info)) > 0; - + $this->composer_info = $this->perforce->getComposerInformation("//$this->depot/$identifier"); + $this->composer_info_identifier = $identifier; + $result = false; + if (isset($this->composer_info)){ + $result = count($this->composer_info) > 0; + } return $result; } @@ -146,4 +158,20 @@ class PerforceDriver extends VcsDriver { public static function supports(IOInterface $io, $url, $deep = FALSE) { return Perforce::checkServerExists($url, new ProcessExecutor); } + + /** + * {@inheritDoc} + */ + public function cleanup(){ + $this->perforce->cleanupClientSpec(); + $this->perforce = null; + } + + public function getDepot(){ + return $this->depot; + } + + public function getBranch(){ + return $this->branch; + } } diff --git a/src/Composer/Repository/Vcs/VcsDriver.php b/src/Composer/Repository/Vcs/VcsDriver.php index f6d428802..1a42e0927 100644 --- a/src/Composer/Repository/Vcs/VcsDriver.php +++ b/src/Composer/Repository/Vcs/VcsDriver.php @@ -105,4 +105,12 @@ abstract class VcsDriver implements VcsDriverInterface { return (bool) preg_match('{^(file://|/|[a-z]:[\\\\/])}i', $url); } + + /** + * {@inheritDoc} + */ + public function cleanup() + { + return; + } } diff --git a/src/Composer/Repository/Vcs/VcsDriverInterface.php b/src/Composer/Repository/Vcs/VcsDriverInterface.php index 44486f007..b29841b68 100644 --- a/src/Composer/Repository/Vcs/VcsDriverInterface.php +++ b/src/Composer/Repository/Vcs/VcsDriverInterface.php @@ -81,6 +81,12 @@ interface VcsDriverInterface */ public function hasComposerFile($identifier); + /** + * Performs any cleanup necessary as the driver is not longer needed + * + */ + public function cleanup(); + /** * Checks if this driver can handle a given url * diff --git a/src/Composer/Repository/VcsRepository.php b/src/Composer/Repository/VcsRepository.php index 2b876bc22..701db33bb 100644 --- a/src/Composer/Repository/VcsRepository.php +++ b/src/Composer/Repository/VcsRepository.php @@ -253,6 +253,7 @@ class VcsRepository extends ArrayRepository continue; } } + $driver->cleanup(); if (!$verbose) { $this->io->overwrite('', false); diff --git a/src/Composer/Util/Perforce.php b/src/Composer/Util/Perforce.php index 7a9e26643..6acee208f 100644 --- a/src/Composer/Util/Perforce.php +++ b/src/Composer/Util/Perforce.php @@ -1,60 +1,91 @@ + * 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\Util; use Composer\IO\IOInterface; - +/** + * @author Matt Whittom + */ class Perforce { protected $path; - protected $p4client; - protected $p4user; - protected $p4password; - protected $p4port; - protected $p4stream; - protected $p4clientSpec; - protected $p4depotType; - protected $p4branch; + protected $p4Depot; + protected $p4Client; + protected $p4User; + protected $p4Password; + protected $p4Port; + protected $p4Stream; + protected $p4ClientSpec; + protected $p4DepotType; + protected $p4Branch; protected $process; + protected $unique_perforce_client_name; + protected $windowsFlag; - public function __construct($repoConfig, $port, $path, ProcessExecutor $process = NULL) { - $this->p4port = $port; + + public static function createPerforce($repoConfig, $port, $path, ProcessExecutor $process = NULL) { + if (!isset($process)){ + $process = new ProcessExecutor; + } + $isWindows = defined('PHP_WINDOWS_VERSION_BUILD'); + if (isset($repoConfig['unique_perforce_client_name'])){ + $unique_perforce_client_name = $repoConfig['unique_perforce_client_name']; + } else { + $unique_perforce_client_name = gethostname() . "_" . time(); + $repoConfig['unique_perforce_client_name'] = $unique_perforce_client_name; + } + + $perforce = new Perforce($repoConfig, $port, $path, $process, $isWindows, $unique_perforce_client_name); + return $perforce; + } + + public function __construct($repoConfig, $port, $path, ProcessExecutor $process, $isWindows, $unique_perforce_client_name) { + $this->windowsFlag = $isWindows; + $this->unique_perforce_client_name = $unique_perforce_client_name; + $this->p4Port = $port; $this->path = $path; - $this->process = $process ? : new ProcessExecutor; $fs = new Filesystem(); $fs->ensureDirectoryExists($path); + $this->process = $process; if (isset($repoConfig['depot'])) { - $this->p4depot = $repoConfig['depot']; + $this->p4Depot = $repoConfig['depot']; } if (isset($repoConfig['branch'])) { - $this->p4branch = $repoConfig['branch']; + $this->p4Branch = $repoConfig['branch']; } if (isset($repoConfig['p4user'])) { - $this->p4user = $repoConfig['p4user']; + $this->p4User = $repoConfig['p4user']; } else { - $this->p4user = $this->getP4variable("P4USER"); + $this->p4User = $this->getP4variable("P4USER"); } if (isset($repoConfig['p4password'])) { - $this->p4password = $repoConfig['p4password']; + $this->p4Password = $repoConfig['p4password']; } } - protected function getRandomValue() { - return mt_rand(1000, 9999); - } - - protected function isWindows(){ - return defined('PHP_WINDOWS_VERSION_BUILD'); + public function cleanupClientSpec(){ + $client = $this->getClient(); + $command = "p4 client -d $client"; + $this->executeCommand($command); + $clientSpec = $this->getP4ClientSpec(); + $fileSystem = new FileSystem($this->process); + $fileSystem->remove($clientSpec); } protected function executeCommand($command) { @@ -64,14 +95,13 @@ class Perforce { return $result; } - protected function getClient() { - if (!isset($this->p4client)) { - $random_value = $this->getRandomValue(); + public function getClient() { + if (!isset($this->p4Client)) { $clean_stream_name = str_replace("@", "", str_replace("/", "_", str_replace("//", "", $this->getStream()))); - $this->p4client = "composer_perforce_" . $random_value . "_" . $clean_stream_name; + $this->p4Client = "composer_perforce_" . $this->unique_perforce_client_name . "_" . $clean_stream_name; } - return $this->p4client; + return $this->p4Client; } protected function getPath() { @@ -79,28 +109,31 @@ class Perforce { } protected function getPort() { - return $this->p4port; + return $this->p4Port; } - protected function isStream() { - return (strcmp($this->p4depotType, "stream") === 0); + public function setStream($stream) { + $this->p4Stream = $stream; + $this->p4DepotType = "stream"; } - protected function getStream() { - if (!isset($this->p4stream)) { + public function isStream() { + return (strcmp($this->p4DepotType, "stream") === 0); + } + + public function getStream() { + if (!isset($this->p4Stream)) { if ($this->isStream()) { - $this->p4stream = "//$this->p4depot/$this->p4branch"; + $this->p4Stream = "//$this->p4Depot/$this->p4Branch"; } else { - $this->p4stream = "//$this->p4depot"; + $this->p4Stream = "//$this->p4Depot"; } } - - return $this->p4stream; + return $this->p4Stream; } - protected function getStreamWithoutLabel() { - $stream = $this->getStream(); + public function getStreamWithoutLabel($stream) { $index = strpos($stream, "@"); if ($index === FALSE) { return $stream; @@ -109,37 +142,37 @@ class Perforce { return substr($stream, 0, $index); } - protected function getP4ClientSpec() { + public function getP4ClientSpec() { $p4clientSpec = $this->path . "/" . $this->getClient() . ".p4.spec"; return $p4clientSpec; } public function getUser() { - return $this->p4user; + return $this->p4User; } public function queryP4User(IOInterface $io) { $this->getUser(); - if (strlen($this->p4user) > 0) { + if (strlen($this->p4User) > 0) { return; } - $this->p4user = $this->getP4variable("P4USER"); - if (strlen($this->p4user) > 0) { + $this->p4User = $this->getP4variable("P4USER"); + if (strlen($this->p4User) > 0) { return; } - $this->p4user = $io->ask("Enter P4 User:"); - if ($this->isWindows()) { - $command = "p4 set P4USER=$this->p4user"; + $this->p4User = $io->ask("Enter P4 User:"); + if ($this->windowsFlag) { + $command = "p4 set P4USER=$this->p4User"; } else { - $command = "export P4USER=$this->p4user"; + $command = "export P4USER=$this->p4User"; } $result = $this->executeCommand($command); } protected function getP4variable($name) { - if ($this->isWindows()) { + if ($this->windowsFlag) { $command = "p4 set"; $result = $this->executeCommand($command); $resArray = explode("\n", $result); @@ -167,20 +200,20 @@ class Perforce { } } - protected function queryP4Password(IOInterface $io) { - if (isset($this->p4password)) { - return $this->p4password; + public function queryP4Password(IOInterface $io) { + if (isset($this->p4Password)) { + return $this->p4Password; } $password = $this->getP4variable("P4PASSWD"); if (strlen($password) <= 0) { $password = $io->askAndHideAnswer("Enter password for Perforce user " . $this->getUser() . ": "); } - $this->p4password = $password; + $this->p4Password = $password; return $password; } - protected function generateP4Command($command, $useClient = TRUE) { + public function generateP4Command($command, $useClient = TRUE) { $p4Command = "p4 "; $p4Command = $p4Command . "-u " . $this->getUser() . " "; if ($useClient) { @@ -192,22 +225,16 @@ class Perforce { return $p4Command; } - protected function isLoggedIn() { + public function isLoggedIn() { $command = $this->generateP4Command("login -s", FALSE); $result = trim($this->executeCommand($command)); $index = strpos($result, $this->getUser()); if ($index === FALSE) { return FALSE; } - return TRUE; } - public function setStream($stream) { - $this->p4stream = $stream; - $this->p4depotType = "stream"; - } - public function connectClient() { $p4CreateClientCommand = $this->generateP4Command("client -i < " . $this->getP4ClientSpec()); $this->executeCommand($p4CreateClientCommand); @@ -230,7 +257,7 @@ class Perforce { chdir($prevDir); } - protected function writeClientSpecToFile($spec) { + public function writeClientSpecToFile($spec) { fwrite($spec, "Client: " . $this->getClient() . "\n\n"); fwrite($spec, "Update: " . date("Y/m/d H:i:s") . "\n\n"); fwrite($spec, "Access: " . date("Y/m/d H:i:s") . "\n"); @@ -243,7 +270,7 @@ class Perforce { fwrite($spec, "LineEnd: local\n\n"); if ($this->isStream()) { fwrite($spec, "Stream:\n"); - fwrite($spec, " " . $this->getStreamWithoutLabel() . "\n"); + fwrite($spec, " " . $this->getStreamWithoutLabel($this->p4Stream) . "\n"); } else { fwrite( @@ -255,7 +282,8 @@ class Perforce { } public function writeP4ClientSpec() { - $spec = fopen($this->getP4ClientSpec(), 'w'); + $clientSpec = $this->getP4ClientSpec(); + $spec = fopen($clientSpec, 'w'); try { $this->writeClientSpecToFile($spec); } catch (Exception $e) { @@ -308,7 +336,7 @@ class Perforce { $this->queryP4User($io); if (!$this->isLoggedIn()) { $password = $this->queryP4Password($io); - if ($this->isWindows()) { + if ($this->windowsFlag) { $this->windowsLogin($password); } else { @@ -382,12 +410,11 @@ class Perforce { public function getBranches() { $possible_branches = array(); if (!$this->isStream()) { - $possible_branches[$this->p4branch] = $this->getStream(); + $possible_branches[$this->p4Branch] = $this->getStream(); } else { - $command = $this->generateP4Command("streams //$this->p4depot/..."); - $result = ""; - $this->process->execute($command, $result); + $command = $this->generateP4Command("streams //$this->p4Depot/..."); + $result = $this->executeCommand($command); $resArray = explode("\n", $result); foreach ($resArray as $line) { $resBits = explode(" ", $line); @@ -398,7 +425,7 @@ class Perforce { } } $branches = array(); - $branches['master'] = $possible_branches[$this->p4branch]; + $branches['master'] = $possible_branches[$this->p4Branch]; return $branches; } @@ -427,8 +454,8 @@ class Perforce { $index = strpos($line, "Depot"); if (!($index === FALSE)) { $fields = explode(" ", $line); - if (strcmp($this->p4depot, $fields[1]) === 0) { - $this->p4depotType = $fields[3]; + if (strcmp($this->p4Depot, $fields[1]) === 0) { + $this->p4DepotType = $fields[3]; return $this->isStream(); } diff --git a/tests/Composer/Test/Downloader/PerforceDownloaderTest.php b/tests/Composer/Test/Downloader/PerforceDownloaderTest.php index 66ed81776..634cc5f18 100644 --- a/tests/Composer/Test/Downloader/PerforceDownloaderTest.php +++ b/tests/Composer/Test/Downloader/PerforceDownloaderTest.php @@ -60,7 +60,8 @@ class PerforceDownloaderTest extends \PHPUnit_Framework_TestCase { $repoConfig = array("depot"=>"TEST_DEPOT", "branch"=>"TEST_BRANCH", "p4user"=>"TEST_USER"); $port = "TEST_PORT"; $path = "TEST_PATH"; - $perforce = $this->getMock('Composer\Util\Perforce', array('setStream', 'queryP4User', 'writeP4ClientSpec', 'connectClient', 'syncCodeBase'), array($repoConfig, $port, $path)); + $process = $this->getmock('Composer\Util\ProcessExecutor'); + $perforce = $this->getMock('Composer\Util\Perforce', array('setStream', 'queryP4User', 'writeP4ClientSpec', 'connectClient', 'syncCodeBase'), array($repoConfig, $port, $path, $process, true, "TEST")); $ref = "SOURCE_REF"; $label = "LABEL"; $perforce->expects($this->at(0)) diff --git a/tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php b/tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php index db1485836..ed14b077e 100644 --- a/tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php +++ b/tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php @@ -48,9 +48,6 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase { $fs->removeDirectory($this->testPath); } - //Test: - //hasComposerFile - public function testInitializeCapturesVariablesFromRepoConfig() { $this->setUp(); $repo_config = array( @@ -58,8 +55,9 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase { '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); + $driver = new PerforceDriver($repo_config, $this->io, $this->config, $this->process, $this->remoteFileSystem); + $process = $this->getMock('Composer\Util\ProcessExecutor'); + $arguments = array(array('depot'=>'TEST_DEPOT', 'branch'=>'TEST_BRANCH'), 'port'=>'TEST_PORT', 'path'=>$this->testPath, $process, true, "TEST"); $perforce = $this->getMock('Composer\Util\Perforce', null, $arguments); $driver->injectPerforce($perforce); $driver->initialize(); @@ -75,7 +73,7 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase { 'depot' => 'TEST_DEPOT_CONFIG', 'branch' => 'TEST_BRANCH_CONFIG' ); - $driver = new TestingPerforceDriver($repo_config, $this->io, $this->config, $this->process, $this->remoteFileSystem); + $driver = new PerforceDriver($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') @@ -99,8 +97,9 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase { '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); + $driver = new PerforceDriver($repo_config, $this->io, $this->config, $this->process, $this->remoteFileSystem); + $process = $this->getMock('Composer\Util\ProcessExecutor'); + $arguments = array(array('depot'=>'TEST_DEPOT', 'branch'=>'TEST_BRANCH'), 'port'=>'TEST_PORT', 'path'=>$this->testPath, $process, true, "TEST"); $perforce = $this->getMock('Composer\Util\Perforce', array('getComposerInformation'), $arguments); $perforce->expects($this->at(0)) ->method('getComposerInformation') diff --git a/tests/Composer/Test/Repository/Vcs/TestingPerforceDriver.php b/tests/Composer/Test/Repository/Vcs/TestingPerforceDriver.php deleted file mode 100644 index 574c69377..000000000 --- a/tests/Composer/Test/Repository/Vcs/TestingPerforceDriver.php +++ /dev/null @@ -1,26 +0,0 @@ -depot; - } - public function getBranch(){ - return $this->branch; - } - -} \ No newline at end of file diff --git a/tests/Composer/Test/Util/PerforceTest.php b/tests/Composer/Test/Util/PerforceTest.php index 8a653394f..62df75f69 100644 --- a/tests/Composer/Test/Util/PerforceTest.php +++ b/tests/Composer/Test/Util/PerforceTest.php @@ -1,21 +1,26 @@ + * 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\Util; -use Composer\Test\Util\TestingPerforce; +use Composer\Util\Perforce; use Composer\Util\ProcessExecutor; -use org\bovigo\vfs\vfsStreamWrapper; -use org\bovigo\vfs\vfsStreamDirectory; -use org\bovigo\vfs\vfsStream; - +/** + * @author Matt Whittom + */ class PerforceTest extends \PHPUnit_Framework_TestCase { protected $perforce; @@ -24,54 +29,59 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { public function setUp() { $this->processExecutor = $this->getMock('Composer\Util\ProcessExecutor'); $repoConfig = array("depot"=>"depot", "branch"=>"branch", "p4user"=>"user"); - $this->perforce = new TestingPerforce($repoConfig, "port", "path", $this->processExecutor); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, true, "TEST"); } public function testGetClientWithoutStream() { - $client = $this->perforce->testGetClient(); + $client = $this->perforce->getClient(); + $hostname = gethostname(); + $timestamp = time(); + $expected = "composer_perforce_TEST_depot"; $this->assertEquals($expected, $client); } public function testGetClientFromStream() { - $this->perforce->setDepotType("stream"); - $client = $this->perforce->testGetClient(); + $this->setPerforceToStream(); + + $client = $this->perforce->getClient(); $expected = "composer_perforce_TEST_depot_branch"; $this->assertEquals($expected, $client); } public function testGetStreamWithoutStream() { - $stream = $this->perforce->testGetStream(); + $stream = $this->perforce->getStream(); $this->assertEquals("//depot", $stream); } public function testGetStreamWithStream() { - $this->perforce->setDepotType("stream"); - $stream = $this->perforce->testGetStream(); + $this->setPerforceToStream(); + + $stream = $this->perforce->getStream(); $this->assertEquals("//depot/branch", $stream); } - public function testGetStreamWithoutLabel() { - $stream = $this->perforce->testGetStreamWithoutLabel(); - $this->assertEquals("//depot", $stream); - $this->perforce->setDepotType("stream"); - $stream = $this->perforce->testGetStreamWithoutLabel(); + + public function testGetStreamWithoutLabelWithStreamWithoutLabel(){ + $stream = $this->perforce->getStreamWithoutLabel("//depot/branch"); $this->assertEquals("//depot/branch", $stream); - $this->perforce->setStream("//depot/branching@label"); - $stream = $this->perforce->testGetStreamWithoutLabel(); + } + + public function testGetStreamWithoutLabelWithStreamWithLabel(){ + $stream = $this->perforce->getStreamWithoutLabel("//depot/branching@label"); $this->assertEquals("//depot/branching", $stream); } public function testGetClientSpec() { - $clientSpec = $this->perforce->testGetClientSpec(); + $clientSpec = $this->perforce->getP4ClientSpec(); $expected = "path/composer_perforce_TEST_depot.p4.spec"; $this->assertEquals($expected, $clientSpec); } public function testGenerateP4Command() { $command = "do something"; - $p4Command = $this->perforce->testGenerateP4Command($command); + $p4Command = $this->perforce->generateP4Command($command); $expected = "p4 -u user -c composer_perforce_TEST_depot -p port do something"; $this->assertEquals($expected, $p4Command); } @@ -79,13 +89,16 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { public function testQueryP4UserWithUserAlreadySet(){ $io = $this->getMock('Composer\IO\IOInterface'); - $this->perforce->setP4User("TEST_USER"); + $repoConfig = array("depot"=>"depot", "branch"=>"branch", "p4user"=>"TEST_USER"); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, true, "TEST"); + $this->perforce->queryP4user($io); $this->assertEquals("TEST_USER", $this->perforce->getUser()); } public function testQueryP4UserWithUserSetInP4VariablesWithWindowsOS(){ - $this->perforce->windows_flag = true; + $repoConfig = array("depot"=>"depot", "branch"=>"branch"); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, true, "TEST"); $io = $this->getMock('Composer\IO\IOInterface'); $expectedCommand = "p4 set"; @@ -94,13 +107,13 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = "P4USER=TEST_P4VARIABLE_USER\n"; return true;})); - $this->perforce->setP4User(null); $this->perforce->queryP4user($io); $this->assertEquals("TEST_P4VARIABLE_USER", $this->perforce->getUser()); } public function testQueryP4UserWithUserSetInP4VariablesNotWindowsOS(){ - $this->perforce->windows_flag = false; + $repoConfig = array("depot"=>"depot", "branch"=>"branch"); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, false, "TEST"); $io = $this->getMock('Composer\IO\IOInterface'); $expectedCommand = 'echo $P4USER'; @@ -109,12 +122,13 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = "TEST_P4VARIABLE_USER\n"; return true;})); - $this->perforce->setP4User(null); $this->perforce->queryP4user($io); $this->assertEquals("TEST_P4VARIABLE_USER", $this->perforce->getUser()); } public function testQueryP4UserQueriesForUser(){ + $repoConfig = array("depot"=>"depot", "branch"=>"branch"); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, false, "TEST"); $io = $this->getMock('Composer\IO\IOInterface'); $expectedQuestion = "Enter P4 User:"; $io->expects($this->at(0)) @@ -122,13 +136,13 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { ->with($this->equalTo($expectedQuestion)) ->will($this->returnValue("TEST_QUERY_USER")); - $this->perforce->setP4User(null); $this->perforce->queryP4user($io); $this->assertEquals("TEST_QUERY_USER", $this->perforce->getUser()); } public function testQueryP4UserStoresResponseToQueryForUserWithWindows(){ - $this->perforce->windows_flag = true; + $repoConfig = array("depot"=>"depot", "branch"=>"branch"); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, true, "TEST"); $io = $this->getMock('Composer\IO\IOInterface'); $expectedQuestion = "Enter P4 User:"; @@ -142,12 +156,12 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { ->with($this->equalTo($expectedCommand)) ->will($this->returnValue(0)); - $this->perforce->setP4User(null); $this->perforce->queryP4user($io); } public function testQueryP4UserStoresResponseToQueryForUserWithoutWindows(){ - $this->perforce->windows_flag = false; + $repoConfig = array("depot"=>"depot", "branch"=>"branch"); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, false, "TEST"); $io = $this->getMock('Composer\IO\IOInterface'); $expectedQuestion = "Enter P4 User:"; @@ -161,35 +175,34 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { ->with($this->equalTo($expectedCommand)) ->will($this->returnValue(0)); - $this->perforce->setP4User(null); $this->perforce->queryP4user($io); } public function testQueryP4PasswordWithPasswordAlreadySet(){ + $repoConfig = array("depot"=>"depot", "branch"=>"branch", "p4user"=>"user", "p4password"=>"TEST_PASSWORD"); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, false, "TEST"); $io = $this->getMock('Composer\IO\IOInterface'); - $this->perforce->setP4Password("TEST_PASSWORD"); - $password = $this->perforce->testQueryP4Password($io); + $password = $this->perforce->queryP4Password($io); $this->assertEquals("TEST_PASSWORD", $password); } public function testQueryP4PasswordWithPasswordSetInP4VariablesWithWindowsOS(){ - $this->perforce->windows_flag = true; - $io = $this->getMock('Composer\IO\IOInterface'); + $expectedCommand = "p4 set"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = "P4PASSWD=TEST_P4VARIABLE_PASSWORD\n"; return true;})); - $this->perforce->setP4Password(null); - $password = $this->perforce->testQueryP4Password($io); + $password = $this->perforce->queryP4Password($io); $this->assertEquals("TEST_P4VARIABLE_PASSWORD", $password); } public function testQueryP4PasswordWithPasswordSetInP4VariablesNotWindowsOS(){ - $this->perforce->windows_flag = false; + $repoConfig = array("depot"=>"depot", "branch"=>"branch", "p4user"=>"user"); + $this->perforce = new Perforce($repoConfig, "port", "path", $this->processExecutor, false, "TEST"); $io = $this->getMock('Composer\IO\IOInterface'); $expectedCommand = 'echo $P4PASSWD'; @@ -198,8 +211,7 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = "TEST_P4VARIABLE_PASSWORD\n"; return true;})); - $this->perforce->setP4Password(null); - $password = $this->perforce->testQueryP4Password($io); + $password = $this->perforce->queryP4Password($io); $this->assertEquals("TEST_P4VARIABLE_PASSWORD", $password); } @@ -211,62 +223,60 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { ->with($this->equalTo($expectedQuestion)) ->will($this->returnValue("TEST_QUERY_PASSWORD")); - $this->perforce->setP4Password(null); - $password = $this->perforce->testQueryP4Password($io); + $password = $this->perforce->queryP4Password($io); $this->assertEquals("TEST_QUERY_PASSWORD", $password); } public function testWriteP4ClientSpecWithoutStream() { - vfsStreamWrapper::register(); - VfsStreamWrapper::setRoot(new vfsStreamDirectory("path")); - $clientSpec = $this->perforce->testGetClientSpec(); - $this->perforce->writeP4ClientSpec(); - $spec = fopen(vfsStream::url($clientSpec), 'r'); + $stream = fopen("php://memory", 'w+'); + $this->perforce->writeClientSpecToFile($stream); + + rewind($stream); $expectedArray = $this->getExpectedClientSpec(FALSE); try { foreach ($expectedArray as $expected) { - $this->assertStringStartsWith($expected, fgets($spec)); + $this->assertStringStartsWith($expected, fgets($stream)); } - $this->assertFalse(fgets($spec)); + $this->assertFalse(fgets($stream)); } catch (Exception $e) { - fclose($spec); + fclose($stream); throw $e; } - fclose($spec); + fclose($stream); } public function testWriteP4ClientSpecWithStream() { - vfsStreamWrapper::register(); - VfsStreamWrapper::setRoot(new vfsStreamDirectory("path")); - $this->perforce->setStream("//depot/branching@label"); - $clientSpec = $this->perforce->testGetClientSpec(); - $this->perforce->writeP4ClientSpec(); - $spec = fopen(vfsStream::url($clientSpec), 'r'); + $this->setPerforceToStream(); + $stream = fopen("php://memory", 'w+'); + + $this->perforce->writeClientSpecToFile($stream); + rewind($stream); + $expectedArray = $this->getExpectedClientSpec(TRUE); try { foreach ($expectedArray as $expected) { - $this->assertStringStartsWith($expected, fgets($spec)); + $this->assertStringStartsWith($expected, fgets($stream)); } - $this->assertFalse(fgets($spec)); + $this->assertFalse(fgets($stream)); } catch (Exception $e) { - fclose($spec); + fclose($stream); throw $e; } - fclose($spec); + fclose($stream); } public function testIsLoggedIn() { - $expectedCommand = $this->winCompat("p4 -u user -p port login -s"); + $expectedCommand = "p4 -u user -p port login -s"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand), $this->equalTo(null)) ->will($this->returnValue(0)); - $this->perforce->testIsLoggedIn(); + $this->perforce->isLoggedIn(); } public function testConnectClient() { - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot -p port client -i < path/composer_perforce_TEST_depot.p4.spec"); + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot -p port client -i < path/composer_perforce_TEST_depot.p4.spec"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand), $this->equalTo(null)) @@ -276,33 +286,25 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { } public function testGetBranchesWithStream() { - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot_branchlabel -p port streams //depot/..."); + $this->setPerforceToStream(); + + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot_branch -p port streams //depot/..."; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = "Stream //depot/branch mainline none 'branch'\n"; return true;})); - $this->perforce->setStream("//depot/branch@label"); $branches = $this->perforce->getBranches(); $this->assertEquals("//depot/branch", $branches['master']); } public function testGetBranchesWithoutStream() { - $expectedCommand = $this->winCompat("p4 -u user -p port depots"); - $this->processExecutor->expects($this->at(0)) - ->method('execute') - ->with($this->equalTo($expectedCommand)) - ->will($this->returnCallback(function($command, &$output) {$output = "Depot depot 2013/01/28 local /path/to/depots/depot/... 'depot project'\n"; return true;})); - - $result = $this->perforce->checkStream("depot"); - $this->assertFalse($result); - $branches = $this->perforce->getBranches(); $this->assertEquals("//depot", $branches['master']); } public function testGetTagsWithoutStream() { - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot -p port labels"); + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot -p port labels"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand)) @@ -314,36 +316,35 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { } public function testGetTagsWithStream() { - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot_branch -p port labels"); + $this->setPerforceToStream(); + + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot_branch -p port labels"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = "Label 0.0.1 2013/07/31 'First Label!'\nLabel 0.0.2 2013/08/01 'Second Label!'\n"; return true;})); - $this->perforce->setStream("//depot/branch"); $tags = $this->perforce->getTags(); $this->assertEquals("//depot/branch@0.0.1", $tags['0.0.1']); $this->assertEquals("//depot/branch@0.0.2", $tags['0.0.2']); } public function testCheckStreamWithoutStream() { - $this->perforce->commandReturnValue = "Depot depot 2013/01/28 local /path/to/depots/depot/... 'depot project'"; $result = $this->perforce->checkStream("depot"); $this->assertFalse($result); - $this->assertFalse($this->perforce->testIsStream()); + $this->assertFalse($this->perforce->isStream()); } public function testCheckStreamWithStream() { - $line1 = "Depot depot 2013/01/28 branch /path/to/depots/depot/... 'depot project'\n"; - $line2 = "Depot depot 2013/01/28 development /path/to/depots/depot/... 'depot project'\n"; - $this->perforce->commandReturnValue = $line1 . $line2; + $this->processExecutor->expects($this->any())->method('execute') + ->will($this->returnCallback(function($command, &$output) {$output = "Depot depot 2013/06/25 stream /p4/1/depots/depot/... 'Created by Me'"; return true;})); $result = $this->perforce->checkStream("depot"); - $this->assertFalse($result); - $this->assertFalse($this->perforce->testIsStream()); + $this->assertTrue($result); + $this->assertTrue($this->perforce->isStream()); } public function testGetComposerInformationWithoutLabelWithoutStream() { - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot -p port print //depot/composer.json"); + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot -p port print //depot/composer.json"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand)) @@ -360,13 +361,13 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { } public function testGetComposerInformationWithLabelWithoutStream() { - $expectedCommand = $this->winCompat("p4 -u user -p port files //depot/composer.json@0.0.1"); + $expectedCommand = "p4 -u user -p port files //depot/composer.json@0.0.1"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = "//depot/composer.json#1 - branch change 10001 (text)"; return true;})); - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot -p port print //depot/composer.json@10001"); + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot -p port print //depot/composer.json@10001"; $this->processExecutor->expects($this->at(1)) ->method('execute') ->with($this->equalTo($expectedCommand)) @@ -384,13 +385,14 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { } public function testGetComposerInformationWithoutLabelWithStream() { - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot_branch -p port print //depot/branch/composer.json"); + $this->setPerforceToStream(); + + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot_branch -p port print //depot/branch/composer.json"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = PerforceTest::getComposerJson(); return true;})); - $this->perforce->setStream("//depot/branch"); $result = $this->perforce->getComposerInformation("//depot/branch"); $expected = array( @@ -403,19 +405,19 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { } public function testGetComposerInformationWithLabelWithStream() { - $expectedCommand = $this->winCompat("p4 -u user -p port files //depot/branch/composer.json@0.0.1"); + $this->setPerforceToStream(); + $expectedCommand = "p4 -u user -p port files //depot/branch/composer.json@0.0.1"; $this->processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = "//depot/composer.json#1 - branch change 10001 (text)"; return true;})); - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot_branch -p port print //depot/branch/composer.json@10001"); + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot_branch -p port print //depot/branch/composer.json@10001"; $this->processExecutor->expects($this->at(1)) ->method('execute') ->with($this->equalTo($expectedCommand)) ->will($this->returnCallback(function($command, &$output) {$output = PerforceTest::getComposerJson(); return true;})); - $this->perforce->setStream("//depot/branch"); $result = $this->perforce->getComposerInformation("//depot/branch@0.0.1"); $expected = array( @@ -428,7 +430,7 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { } public function testSyncCodeBaseWithoutStream() { - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot -p port sync -f @label"); + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot -p port sync -f @label"; $this->processExecutor->expects($this->at(1)) ->method('execute') ->with($this->equalTo($expectedCommand), $this->equalTo(null)) @@ -438,20 +440,20 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { } public function testSyncCodeBaseWithStream() { - $expectedCommand = $this->winCompat("p4 -u user -c composer_perforce_TEST_depot_branch -p port sync -f @label"); - $this->processExecutor->expects($this->at(1)) - ->method('execute') - ->with($this->equalTo($expectedCommand), $this->equalTo(null)) - ->will($this->returnValue(0)); + $this->setPerforceToStream(); + $expectedCommand = "p4 -u user -c composer_perforce_TEST_depot_branch -p port sync -f @label"; + $this->processExecutor->expects($this->at(1)) + ->method('execute') + ->with($this->equalTo($expectedCommand)) + ->will($this->returnValue(0)); - $this->perforce->setStream("//depot/branch"); $this->perforce->syncCodeBase("label"); } public function testCheckServerExists() { $processExecutor = $this->getMock('Composer\Util\ProcessExecutor'); - $expectedCommand = $this->winCompat("p4 -p perforce.does.exist:port info -s"); + $expectedCommand = "p4 -p perforce.does.exist:port info -s"; $processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand), $this->equalTo(null)) @@ -464,7 +466,7 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { public function testCheckServerExistsWithFailure() { $processExecutor = $this->getMock('Composer\Util\ProcessExecutor'); - $expectedCommand = $this->winCompat("p4 -p perforce.does.not.exist:port info -s"); + $expectedCommand = "p4 -p perforce.does.not.exist:port info -s"; $processExecutor->expects($this->at(0)) ->method('execute') ->with($this->equalTo($expectedCommand), $this->equalTo(null)) @@ -513,7 +515,7 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { ); if ($withStream) { $expectedArray[] = "Stream:"; - $expectedArray[] = " //depot/branching"; + $expectedArray[] = " //depot/branch"; } else { $expectedArray[] = "View: //depot/... //composer_perforce_TEST_depot/depot/..."; @@ -522,16 +524,8 @@ class PerforceTest extends \PHPUnit_Framework_TestCase { return $expectedArray; } - private function winCompat($cmd) { - if (defined('PHP_WINDOWS_VERSION_BUILD')) { - $cmd = str_replace('cd ', 'cd /D ', $cmd); - $cmd = str_replace('composerPath', getcwd() . '/composerPath', $cmd); - - return strtr($cmd, "'", '"'); - } - - return $cmd; + private function setPerforceToStream(){ + $this->perforce->setStream("//depot/branch"); } - } diff --git a/tests/Composer/Test/Util/TestingPerforce.php b/tests/Composer/Test/Util/TestingPerforce.php deleted file mode 100644 index dc21e8c33..000000000 --- a/tests/Composer/Test/Util/TestingPerforce.php +++ /dev/null @@ -1,106 +0,0 @@ -windows_flag = false; - } - /* - * Override functions - */ - protected function getRandomValue() { - return "TEST"; - } - protected function isWindows(){ - return $this->windows_flag; - } - -// protected function executeCommand($command) { -// $this->previousCommand = $this->lastCommand; -// $this->lastCommand = $command; -// $result = $this->commandReturnValue; -// $this->commandReturnValue = $this->nextCommandReturnValue; -// $this->nextCommandReturnValue = null; -// return $result; -// } - - public function writeP4ClientSpec() { - $spec = fopen(vfsStream::url($this->getP4ClientSpec()), 'w'); - $this->writeClientSpecToFile($spec); - fclose($spec); - } - - /* - * Test Helper functions - */ - public function setDepotType($depotType) { - $this->p4depotType = $depotType; - $this->p4stream = NULL; - } - - /* - * Functions to expose protected methods for testing: - */ - public function setP4User($p4user){ - $this->p4user = $p4user; - } - public function setP4Password($password){ - $this->p4password = $password; - } - - public function testGetClient() { - return $this->getClient(); - } - - public function testGetStream() { - return $this->getStream(); - } - - public function testGetStreamWithoutLabel() { - return $this->getStreamWithoutLabel(); - } - - public function testGetClientSpec() { - return $this->getP4ClientSpec(); - } - - public function testGenerateP4Command($command, $useClient = TRUE) { - return $this->generateP4Command($command, $useClient); - } - - public function testIsLoggedIn() - { - return $this->isLoggedIn(); - } - - public function testIsStream() - { - return $this->isStream(); - } - - public function testGetP4Variable($name) - { - return $this->testGetP4Variable($name); - } - - public function testQueryP4Password($io) - { - return $this->queryP4Password($io); - } -} \ No newline at end of file