1
0
Fork 0

extract regex to const. To be able to reuse it

pull/4633/head
Jaapio 2015-11-29 13:59:54 +01:00
parent b471440ea0
commit df92cb09ab
2 changed files with 7 additions and 2 deletions

View File

@ -62,6 +62,9 @@ class GitLabDriver extends VcsDriver
*/ */
protected $gitDriver; protected $gitDriver;
const URL_REGEX = '#^((https?)://(.*)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git|/)?$#';
/** /**
* Extracts information from the repository url. * Extracts information from the repository url.
* SSH urls uses https by default. * SSH urls uses https by default.
@ -70,7 +73,7 @@ class GitLabDriver extends VcsDriver
*/ */
public function initialize() public function initialize()
{ {
if (!preg_match('#^((https?)://([0-9a-zA-Z\./]+)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git|/)?$#', $this->url, $match)) { if (!preg_match(static::URL_REGEX, $this->url, $match)) {
throw new \InvalidArgumentException('The URL provided is invalid. It must be the HTTP URL of a GitLab project.'); throw new \InvalidArgumentException('The URL provided is invalid. It must be the HTTP URL of a GitLab project.');
} }
@ -343,7 +346,7 @@ class GitLabDriver extends VcsDriver
*/ */
public static function supports(IOInterface $io, Config $config, $url, $deep = false) public static function supports(IOInterface $io, Config $config, $url, $deep = false)
{ {
if (!preg_match('#^((https?)://([^/]+)/|git@([^:]+):)([^/]+)/(.+?)(?:\.git|/)?$#', $url, $match)) { if (!preg_match(static::URL_REGEX, $url, $match)) {
return false; return false;
} }

View File

@ -26,6 +26,7 @@ class GitLabDriverTest extends \PHPUnit_Framework_TestCase
$this->config->merge(array( $this->config->merge(array(
'config' => array( 'config' => array(
'home' => sys_get_temp_dir().'/composer-test', 'home' => sys_get_temp_dir().'/composer-test',
'gitlab-domains' => array('mycompany.com/gitlab', 'gitlab.com')
), ),
)); ));
@ -215,6 +216,7 @@ JSON;
array('git@gitlab.com:foo/bar.git', extension_loaded('openssl')), array('git@gitlab.com:foo/bar.git', extension_loaded('openssl')),
array('git@example.com:foo/bar.git', false), array('git@example.com:foo/bar.git', false),
array('http://example.com/foo/bar', false), array('http://example.com/foo/bar', false),
array('https://mycompany.com/gitlab/mygroup/myproject', true),
); );
} }