Merge ~chris.sanders/juju-lint/+git/csanders:1814135 into juju-lint:master

Proposed by Chris Sanders
Status: Merged
Approved by: Chris Sanders
Approved revision: d4da2462a684e54271efeb0dc2a748a2508eb5a7
Merged at revision: dbd758bdbd6ac6fcf1b409a231c2fa7c9eb898d7
Proposed branch: ~chris.sanders/juju-lint/+git/csanders:1814135
Merge into: juju-lint:master
Diff against target: 44 lines (+12/-2)
2 files modified
jujulint.py (+8/-2)
tests/test_jujulint.py (+4/-0)
Reviewer Review Type Date Requested Status
Joel Sing (community) +1 Approve
Chris Sanders (community) Needs Resubmitting
Review via email: mp+362624@code.launchpad.net

Commit message

Handle hyphen in charm user names

To post a comment you must log in.
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
Joel Sing (jsing) :
review: Needs Fixing
Revision history for this message
Chris Sanders (chris.sanders) wrote :

Updates applied, resubmitting

review: Needs Resubmitting
Revision history for this message
Joel Sing (jsing) wrote :

LGTM

review: Approve (+1)
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision dbd758bdbd6ac6fcf1b409a231c2fa7c9eb898d7

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/jujulint.py b/jujulint.py
index 5aae9ff..a3d1e0f 100755
--- a/jujulint.py
+++ b/jujulint.py
@@ -36,6 +36,10 @@ import attr
36# - info mode, e.g. num of machines, version (e.g. look at ceph), architecture36# - info mode, e.g. num of machines, version (e.g. look at ceph), architecture
3737
3838
39class InvalidCharmNameError(Exception):
40 pass
41
42
39@attrs43@attrs
40class ModelInfo(object):44class ModelInfo(object):
41 # Info obtained from juju status data45 # Info obtained from juju status data
@@ -265,8 +269,10 @@ def results(model):
265def map_charms(applications, model):269def map_charms(applications, model):
266 for app in applications:270 for app in applications:
267 charm = applications[app]["charm"]271 charm = applications[app]["charm"]
268 match = re.search(r'^(\w+:)?(~\w+/)?(\w+/)?([a-zA-Z0-9-]+?)(-\d+)?$', charm)272 match = re.match(r'^(?:\w+:)?(?:~[\w-]+/)?(?:\w+/)?([a-zA-Z0-9-]+?)(?:-\d+)?$', charm)
269 charm = match.group(4)273 if not match:
274 raise InvalidCharmNameError("charm name '{}' is invalid".format(charm))
275 charm = match.group(1)
270 model.charms.add(charm)276 model.charms.add(charm)
271 model.app_to_charm[app] = charm277 model.app_to_charm[app] = charm
272278
diff --git a/tests/test_jujulint.py b/tests/test_jujulint.py
index 187adc5..acf5cdc 100644
--- a/tests/test_jujulint.py
+++ b/tests/test_jujulint.py
@@ -23,7 +23,11 @@ class TestJujuLint(unittest.TestCase):
23 'test-app-3': {'charm': "cs:TEST-CHARM12-123"},23 'test-app-3': {'charm': "cs:TEST-CHARM12-123"},
24 'test-app-4': {'charm': "local:SERIES/TEST-CHARM12"},24 'test-app-4': {'charm': "local:SERIES/TEST-CHARM12"},
25 'test-app-5': {'charm': "local:TEST-CHARM12"},25 'test-app-5': {'charm': "local:TEST-CHARM12"},
26 'test-app-6': {'charm': "cs:~TEST-CHARMERS/TEST-CHARM12-123"},
26 }27 }
27 jujulint.map_charms(applications, model)28 jujulint.map_charms(applications, model)
28 for charm in model.charms:29 for charm in model.charms:
29 self.assertEqual("TEST-CHARM12", charm)30 self.assertEqual("TEST-CHARM12", charm)
31 applications = {'test-app1': {'charm': "cs:invalid-charm$"}, }
32 with self.assertRaises(jujulint.InvalidCharmNameError):
33 jujulint.map_charms(applications, model)

Subscribers

People subscribed via source and target branches