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;
use Composer\Config;
use Composer\Json\JsonFile;
use Composer\IO\IOInterface;
@ -140,7 +141,7 @@ class GitBitbucketDriver extends VcsDriver implements VcsDriverInterface
/**
* {@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)) {
return false;

View File

@ -18,6 +18,7 @@ use Composer\Util\Filesystem;
use Composer\Util\Git as GitUtil;
use Composer\IO\IOInterface;
use Composer\Cache;
use Composer\Config;
/**
* @author Jordi Boggiano <j.boggiano@seld.be>
@ -211,7 +212,7 @@ class GitDriver extends VcsDriver
/**
* {@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)) {
return true;

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\Downloader\TransportException;
use Composer\Json\JsonFile;
use Composer\Cache;
@ -231,9 +232,14 @@ class GitHubDriver extends VcsDriver
/**
* {@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;
}

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\Json\JsonFile;
use Composer\IO\IOInterface;
@ -150,7 +151,7 @@ class HgBitbucketDriver extends VcsDriver
/**
* {@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)) {
return false;

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\Json\JsonFile;
use Composer\Util\ProcessExecutor;
use Composer\Util\Filesystem;
@ -189,7 +190,7 @@ class HgDriver extends VcsDriver
/**
* {@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)) {
return true;

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\IO\IOInterface;
use Composer\Util\ProcessExecutor;
use Composer\Util\Perforce;
@ -158,7 +159,7 @@ class PerforceDriver extends VcsDriver
/**
* {@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)) {
return Perforce::checkServerExists($url, new ProcessExecutor);

View File

@ -13,6 +13,7 @@
namespace Composer\Repository\Vcs;
use Composer\Cache;
use Composer\Config;
use Composer\Json\JsonFile;
use Composer\Util\ProcessExecutor;
use Composer\Util\Filesystem;
@ -241,7 +242,7 @@ class SvnDriver extends VcsDriver
/**
* {@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);
if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) {

View File

@ -12,6 +12,7 @@
namespace Composer\Repository\Vcs;
use Composer\Config;
use Composer\IO\IOInterface;
/**
@ -90,10 +91,11 @@ interface VcsDriverInterface
/**
* Checks if this driver can handle a given url
*
* @param IOInterface $io IO instance
* @param string $url
* @param bool $deep unless true, only shallow checks (url matching typically) should be done
* @param IOInterface $io IO instance
* @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
* @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) {
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->initialize();
@ -89,7 +89,7 @@ class VcsRepository extends ArrayRepository
}
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->initialize();

View File

@ -104,7 +104,6 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase
public function testHasComposerFile()
{
$this->setUp();
$repoConfig = array(
'url' => 'TEST_PERFORCE_URL',
'depot' => 'TEST_DEPOT_CONFIG',
@ -142,6 +141,6 @@ class PerforceDriverTest extends \PHPUnit_Framework_TestCase
public function testSupportsReturnsFalseNoDeepCheck()
{
$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)
{
if ($assertion === true) {
$this->assertTrue(SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url));
} else {
$this->assertFalse(SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url));
}
$config = new Config();
$result = SvnDriver::supports($this->getMock('Composer\IO\IOInterface'), $url, $config);
$this->assertEquals($assertion, $result);
}
}