Skip to content

Commit 60d8387

Browse files
author
Ryan Beisner
committed
Add opendev.org https and git fetcher
Related to juju#552 https://bugs.launchpad.net/charm-barbican/+bug/1846263
1 parent cd8792b commit 60d8387

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

charmtools/fetchers.py

+16
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,21 @@ def fetch(self, dir_):
195195
return rename(dir_)
196196

197197

198+
class OpendevFetcher(Fetcher):
199+
MATCH = re.compile(r"""
200+
^(https:\/\/(www\.)?opendev\.com\/|git@opendev.com:)
201+
(?P<repo>[^@]*)(@(?P<revision>.*))?$
202+
""", re.VERBOSE)
203+
204+
def fetch(self, dir_):
205+
dir_ = tempfile.mkdtemp(dir=dir_)
206+
url = 'https://opendev.org/' + self.repo
207+
git('clone {} {}'.format(url, dir_))
208+
if self.revision:
209+
git('checkout {}'.format(self.revision), cwd=dir_)
210+
return rename(dir_)
211+
212+
198213
class GitFetcher(Fetcher):
199214
"""Generic git fetcher.
200215
@@ -358,6 +373,7 @@ def check_output(cmd, **kw):
358373
BzrFetcher,
359374
BzrMergeProposalFetcher,
360375
GithubFetcher,
376+
OpendevFetcher,
361377
BitbucketFetcher,
362378
LocalFetcher,
363379
CharmstoreDownloader,

tests/test_fetchers.py

+36
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
BzrFetcher,
88
BzrMergeProposalFetcher,
99
GithubFetcher,
10+
OpendevFetcher,
1011
GitFetcher,
1112
BitbucketFetcher,
1213
LocalFetcher,
@@ -132,6 +133,41 @@ def test_can_fetch(self):
132133
self.assertEqual(test, {})
133134

134135

136+
class OpendevFetcherTest(unittest.TestCase):
137+
def test_can_fetch(self):
138+
f = OpendevFetcher.can_fetch
139+
140+
good_tests = [
141+
f('https://opendev.com/charms/foo'),
142+
f('https://www.opendev.com/charms/foo'),
143+
f('git@opendev.com:charms/foo'),
144+
]
145+
146+
bad_tests = [
147+
f('http://www.opendev.com/charms/foo'),
148+
f('http://opendev.com/charms/foo'),
149+
f('gh:charms/foo'),
150+
f('github:charms/foo'),
151+
f('http://github.com/charms/foo'),
152+
f('https://github.com/charms/foo'),
153+
f('http://www.github.com/charms/foo'),
154+
f('https://www.github.com/charms/foo'),
155+
f('git@github.com:charms/foo'),
156+
f('lp:~openstack-charmers/charms/bionic/foo'),
157+
f('lp:~openstack-charmers/charms/bionic/foo/+merge/12345'),
158+
f('bb:charms/foo'),
159+
f('local:~/src/charms/bionic/foo'),
160+
f('cs:bionic/foo'),
161+
f('bundle:openstack-base/single'),
162+
]
163+
164+
for test in good_tests:
165+
self.assertEqual(test['repo'], 'charms/foo')
166+
167+
for test in bad_tests:
168+
self.assertEqual(test, {})
169+
170+
135171
class GitFetcherTest(unittest.TestCase):
136172
def test_can_fetch(self):
137173
f = GitFetcher.can_fetch

0 commit comments

Comments
 (0)