diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2013-05-28 17:04:24 +0000 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2013-05-28 17:04:24 +0000 |
commit | 85c92954fc4059a781c672a499fca773eafd6eeb (patch) | |
tree | 6b98d938ed68f128dc852505f6a267ab531d82a7 /morphlib | |
parent | ebe23c206c9e449cb53bf12ad1f9fa637ba6e79a (diff) | |
parent | b1f13dc60d5c0711d5c5e32901824c9da0fd389d (diff) | |
download | morph-85c92954fc4059a781c672a499fca773eafd6eeb.tar.gz |
Merge remote-tracking branch 'origin/baserock/danielsilverstone/repo-alias-updates'
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/repoaliasresolver.py | 29 | ||||
-rw-r--r-- | morphlib/repoaliasresolver_tests.py | 9 |
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') |