summaryrefslogtreecommitdiff
path: root/morphlib
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-05-28 17:04:24 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-05-28 17:04:24 +0000
commit85c92954fc4059a781c672a499fca773eafd6eeb (patch)
tree6b98d938ed68f128dc852505f6a267ab531d82a7 /morphlib
parentebe23c206c9e449cb53bf12ad1f9fa637ba6e79a (diff)
parentb1f13dc60d5c0711d5c5e32901824c9da0fd389d (diff)
downloadmorph-85c92954fc4059a781c672a499fca773eafd6eeb.tar.gz
Merge remote-tracking branch 'origin/baserock/danielsilverstone/repo-alias-updates'
Diffstat (limited to 'morphlib')
-rw-r--r--morphlib/repoaliasresolver.py29
-rw-r--r--morphlib/repoaliasresolver_tests.py9
2 files changed, 20 insertions, 18 deletions
diff --git a/morphlib/repoaliasresolver.py b/morphlib/repoaliasresolver.py
index 653eba90..bc759dd4 100644
--- a/morphlib/repoaliasresolver.py
+++ b/morphlib/repoaliasresolver.py
@@ -45,17 +45,14 @@ class RepoAliasResolver(object):
def __init__(self, aliases):
self.aliases = {}
- alias_pattern = (r'^(?P<prefix>[a-z0-9]+)'
+ alias_pattern = (r'^(?P<prefix>[a-z][a-z0-9-]+)'
r'=(?P<pullpat>[^#]+)#(?P<pushpat>[^#]+)$')
for alias in aliases:
- logging.debug('expanding: alias="%s"' % alias)
m = re.match(alias_pattern, alias)
- logging.debug('expanding: m=%s' % repr(m))
if not m:
logging.warning('Alias %s is malformed' % alias)
continue
prefix = m.group('prefix')
- logging.debug('expanding: prefix group=%s' % prefix)
self.aliases[prefix] = RepoAlias(alias, prefix, m.group('pullpat'),
m.group('pushpat'))
@@ -80,27 +77,23 @@ class RepoAliasResolver(object):
return sorted(known_aliases)
def _expand_reponame(self, reponame, patname):
- logging.debug('expanding: reponame=%s' % reponame)
- logging.debug('expanding: patname=%s' % patname)
-
prefix, suffix = self._split_reponame(reponame)
- logging.debug('expanding: prefix=%s' % prefix)
- logging.debug('expanding: suffix=%s' % suffix)
# There was no prefix.
if prefix is None:
- logging.debug('expanding: no prefix')
- return reponame
-
- if prefix not in self.aliases:
+ result = reponame
+ elif prefix not in self.aliases:
# Unknown prefix. Which means it may be a real URL instead.
# Let the caller deal with it.
- logging.debug('expanding: unknown prefix')
- return reponame
+ result = reponame
+ else:
+ pat = getattr(self.aliases[prefix], patname)
+ result = self._apply_url_pattern(pat, suffix)
- pat = getattr(self.aliases[prefix], patname)
- return self._apply_url_pattern(pat, suffix)
+ logging.debug("Expansion of %s for %s yielded: %s" %
+ (reponame, patname, result))
+ return result
def _split_reponame(self, reponame):
'''Split reponame into prefix and suffix.
@@ -109,7 +102,7 @@ class RepoAliasResolver(object):
'''
- pat = r'^(?P<prefix>[a-z0-9]+):(?P<rest>.*)$'
+ pat = r'^(?P<prefix>[a-z][a-z0-9-]+):(?P<rest>.*)$'
m = re.match(pat, reponame)
if m:
return m.group('prefix'), m.group('rest')
diff --git a/morphlib/repoaliasresolver_tests.py b/morphlib/repoaliasresolver_tests.py
index 8e1827d7..c4ea16b0 100644
--- a/morphlib/repoaliasresolver_tests.py
+++ b/morphlib/repoaliasresolver_tests.py
@@ -33,6 +33,9 @@ class RepoAliasResolverTests(unittest.TestCase):
('append='
'git://append/#'
'git@append/'),
+ ('footrove-01='
+ 'git://footrove.machine/%s#'
+ 'ssh://git@footrove.machine/%s.git'),
]
self.resolver = morphlib.repoaliasresolver.RepoAliasResolver(
self.aliases)
@@ -66,6 +69,12 @@ class RepoAliasResolverTests(unittest.TestCase):
url = self.resolver.push_url('baserock:bar')
self.assertEqual(url, 'git@gitorious.org:baserock/bar.git')
+ def test_resolve_urls_for_alias_with_dash(self):
+ url = self.resolver.pull_url('footrove-01:baz')
+ self.assertEqual(url, 'git://footrove.machine/baz')
+ url = self.resolver.push_url('footrove-01:baz')
+ self.assertEqual(url, 'ssh://git@footrove.machine/baz.git')
+
def test_resolve_urls_for_unknown_alias(self):
self.assertEqual(self.resolver.pull_url('unknown:foo'), 'unknown:foo')
self.assertEqual(self.resolver.push_url('unknown:foo'), 'unknown:foo')