1
0
Fork 0

Adding Config as parameter to the Driver::supports(), updating all drivers, user and tests.

pull/2375/head
Gennady Feldman 2013-10-28 15:57:02 -04:00
parent d8dbcab710
commit 93ebfd54b1
11 changed files with 35 additions and 24 deletions

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs; namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\Json\JsonFile; use Composer\Json\JsonFile;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
@ -140,7 +141,7 @@ class GitBitbucketDriver extends VcsDriver implements VcsDriverInterface
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public static function supports(IOInterface $io, $url, $deep = false) public static function supports(IOInterface $io, $url, Config $config, $deep = false)
{ {
if (!preg_match('#^https://bitbucket\.org/([^/]+)/(.+?)\.git$#', $url)) { if (!preg_match('#^https://bitbucket\.org/([^/]+)/(.+?)\.git$#', $url)) {
return false; return false;

View File

@ -18,6 +18,7 @@ use Composer\Util\Filesystem;
use Composer\Util\Git as GitUtil; use Composer\Util\Git as GitUtil;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\Cache; use Composer\Cache;
use Composer\Config;
/** /**
* @author Jordi Boggiano <j.boggiano@seld.be> * @author Jordi Boggiano <j.boggiano@seld.be>
@ -211,7 +212,7 @@ class GitDriver extends VcsDriver
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public static function supports(IOInterface $io, $url, $deep = false) public static function supports(IOInterface $io, $url, Config $config, $deep = false)
{ {
if (preg_match('#(^git://|\.git$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) { if (preg_match('#(^git://|\.git$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) {
return true; return true;

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs; namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\Downloader\TransportException; use Composer\Downloader\TransportException;
use Composer\Json\JsonFile; use Composer\Json\JsonFile;
use Composer\Cache; use Composer\Cache;
@ -231,9 +232,14 @@ class GitHubDriver extends VcsDriver
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public static function supports(IOInterface $io, $url, $deep = false) public static function supports(IOInterface $io, $url, Config $config, $deep = false)
{ {
if (!preg_match('#^((?:https?|git)://([^/]+)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git)?$#', $url)) { if (!preg_match('#^((?:https?|git)://([^/]+)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git)?$#', $url, $matches)) {
return false;
}
$originUrl = isset($matches[2]) ? $matches[2] : $matches[3];
if (!in_array($originUrl, $config->get('github-domains'))) {
return false; return false;
} }

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs; namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\Json\JsonFile; use Composer\Json\JsonFile;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
@ -150,7 +151,7 @@ class HgBitbucketDriver extends VcsDriver
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public static function supports(IOInterface $io, $url, $deep = false) public static function supports(IOInterface $io, $url, Config $config, $deep = false)
{ {
if (!preg_match('#^https://bitbucket\.org/([^/]+)/([^/]+)/?$#', $url)) { if (!preg_match('#^https://bitbucket\.org/([^/]+)/([^/]+)/?$#', $url)) {
return false; return false;

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs; namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\Json\JsonFile; use Composer\Json\JsonFile;
use Composer\Util\ProcessExecutor; use Composer\Util\ProcessExecutor;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
@ -189,7 +190,7 @@ class HgDriver extends VcsDriver
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public static function supports(IOInterface $io, $url, $deep = false) public static function supports(IOInterface $io, $url, Config $config, $deep = false)
{ {
if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) {
return true; return true;

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs; namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\Util\ProcessExecutor; use Composer\Util\ProcessExecutor;
use Composer\Util\Perforce; use Composer\Util\Perforce;
@ -158,7 +159,7 @@ class PerforceDriver extends VcsDriver
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public static function supports(IOInterface $io, $url, $deep = false) public static function supports(IOInterface $io, $url, Config $config, $deep = false)
{ {
if ($deep || preg_match('#\b(perforce|p4)\b#i', $url)) { if ($deep || preg_match('#\b(perforce|p4)\b#i', $url)) {
return Perforce::checkServerExists($url, new ProcessExecutor); return Perforce::checkServerExists($url, new ProcessExecutor);

View File

@ -13,6 +13,7 @@
namespace Composer\Repository\Vcs; namespace Composer\Repository\Vcs;
use Composer\Cache; use Composer\Cache;
use Composer\Config;
use Composer\Json\JsonFile; use Composer\Json\JsonFile;
use Composer\Util\ProcessExecutor; use Composer\Util\ProcessExecutor;
use Composer\Util\Filesystem; use Composer\Util\Filesystem;
@ -241,7 +242,7 @@ class SvnDriver extends VcsDriver
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public static function supports(IOInterface $io, $url, $deep = false) public static function supports(IOInterface $io, $url, Config $config, $deep = false)
{ {
$url = self::normalizeUrl($url); $url = self::normalizeUrl($url);
if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) { if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) {

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs; namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
/** /**
@ -91,9 +92,10 @@ interface VcsDriverInterface
* Checks if this driver can handle a given url * Checks if this driver can handle a given url
* *
* @param IOInterface $io IO instance * @param IOInterface $io IO instance
* @param string $url * @param string $url URL to validate/check
* @param Config $config current $config
* @param bool $deep unless true, only shallow checks (url matching typically) should be done * @param bool $deep unless true, only shallow checks (url matching typically) should be done
* @return bool * @return bool
*/ */
public static function supports(IOInterface $io, $url, $deep = false); public static function supports(IOInterface $io, $url, Config $config, $deep = false);
} }

View File

@ -80,7 +80,7 @@ class VcsRepository extends ArrayRepository
} }
foreach ($this->drivers as $driver) { foreach ($this->drivers as $driver) {
if ($driver::supports($this->io, $this->url)) { if ($driver::supports($this->io, $this->url, $this->config)) {
$driver = new $driver($this->repoConfig, $this->io, $this->config); $driver = new $driver($this->repoConfig, $this->io, $this->config);
$driver->initialize(); $driver->initialize();
@ -89,7 +89,7 @@ class VcsRepository extends ArrayRepository
} }
foreach ($this->drivers as $driver) { foreach ($this->drivers as $driver) {
if ($driver::supports($this->io, $this->url, true)) { if ($driver::supports($this->io, $this->url, $this->config, true)) {
$driver = new $driver($this->repoConfig, $this->io, $this->config); $driver = new $driver($this->repoConfig, $this->io, $this->config);
$driver->initialize(); $driver->initialize();

View File

@ -104,7 +104,6 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase
public function testHasComposerFile() public function testHasComposerFile()
{ {
$this->setUp();
$repoConfig = array( $repoConfig = array(
'url' => 'TEST_PERFORCE_URL', 'url' => 'TEST_PERFORCE_URL',
'depot' => 'TEST_DEPOT_CONFIG', 'depot' => 'TEST_DEPOT_CONFIG',
@ -142,6 +141,6 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase
public function testSupportsReturnsFalseNoDeepCheck() public function testSupportsReturnsFalseNoDeepCheck()
{ {
$this->expectOutputString(''); $this->expectOutputString('');
$this->assertFalse(PerforceDriver::supports($this->io, 'existing.url')); $this->assertFalse(PerforceDriver::supports($this->io, 'existing.url', $this->config));
} }
} }

View File

@ -80,10 +80,8 @@ class SvnDriverTest extends \PHPUnit_Framework_TestCase
*/ */
public function testSupport($url, $assertion) public function testSupport($url, $assertion)
{ {
if ($assertion === true) { $config = new Config();
$this->assertTrue(SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url)); $result = SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url, $config);
} else { $this->assertEquals($assertion, $result);
$this->assertFalse(SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url));
}
} }
} }