Merge lp:~bac/charmworld/bug-1240576 into lp:~juju-jitsu/charmworld/trunk

Proposed by Brad Crittenden
Status: Merged
Merged at revision: 425
Proposed branch: lp:~bac/charmworld/bug-1240576
Merge into: lp:~juju-jitsu/charmworld/trunk
Diff against target: 85 lines (+34/-3)
2 files modified
charmworld/views/api.py (+1/-1)
charmworld/views/tests/test_api.py (+33/-2)
To merge this branch: bzr merge lp:~bac/charmworld/bug-1240576
Reviewer Review Type Date Requested Status
Juju-Jitsu Hackers Pending
Review via email: mp+192074@code.launchpad.net

Description of the change

Parse charms with hyphens properly.

https://codereview.appspot.com/15580047/

To post a comment you must log in.
Revision history for this message
Brad Crittenden (bac) wrote :

Reviewers: mp+192074_code.launchpad.net,

Message:
Please take a look.

Description:
Parse charms with hyphens properly.

https://code.launchpad.net/~bac/charmworld/bug-1240576/+merge/192074

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/15580047/

Affected files (+23, -1 lines):
   A [revision details]
   M charmworld/views/api.py
   M charmworld/views/tests/test_api.py

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: <email address hidden>
+New revision: <email address hidden>

Index: charmworld/views/api.py
=== modified file 'charmworld/views/api.py'
--- charmworld/views/api.py 2013-10-17 18:38:21 +0000
+++ charmworld/views/api.py 2013-10-22 00:33:12 +0000
@@ -407,7 +407,7 @@
          if len(elements) < 2:
              raise ValueError('charm ID does not contain enough elements')
          # If the charm ID includes a revision number, parse it out.
- if '-' in elements[-1]:
+ if re.search('-\d+$', elements[-1]):
              name, revision = elements[-1].rsplit('-', 1)
          else:
              name = elements[-1]

Index: charmworld/views/tests/test_api.py
=== modified file 'charmworld/views/tests/test_api.py'
--- charmworld/views/tests/test_api.py 2013-10-18 18:53:19 +0000
+++ charmworld/views/tests/test_api.py 2013-10-22 00:36:55 +0000
@@ -1729,6 +1729,9 @@
      return names

+# XXX: Rick Harding 2013-10-21:
+# Odd bug requires these tests to be run last, hence the Z in the name to
+# force it to be last.
  class TestZAPI3(TestAPI, API3Mixin):
      """Test API 3."""

@@ -1809,6 +1812,20 @@
          self.assertEqual(200, response.status_code)
          self.assertEqual(response.json_body, new_charm)

+ def test_charm_no_revision_with_hyphen(self):
+ """Retrieving a charm with no revision results in the latest
one."""
+ self.use_index_client()
+ # Make a charm.
+ old_charm = self.make_charm(
+ owner='owner', series='series', name='a-name',
store_revision=1)[1]
+ # Make a newer revision of the same charm.
+ new_charm = self.make_charm(
+ owner='owner', series='series', name='a-name',
store_revision=2)[1]
+ revisionless_charm_id = self.get_id(old_charm).rsplit('-', 1)[0]
+ response = self.get_response('charm',
remainder=revisionless_charm_id)
+ self.assertEqual(200, response.status_code)
+ self.assertEqual(response.json_body, new_charm)
+
      def test_search_interesting_contains_charms_and_bundles(self):
          self.use_index_client()
          bundle = self.make_indexed_bundle(name='bat')
@@ -1825,6 +1842,9 @@
          self.assertItemsEqual(expected, list_names(result['featured']))

+# XXX: Rick Harding 2013-10-21:
+# Odd bug requires these tests to be run last, hence the Z in the name to
+# force it to be last.
  class TestZAPI2(TestAPI, API2Mixin):
      """Test API 2."""

lp:~bac/charmworld/bug-1240576 updated
427. By Brad Crittenden

Add new test, clean up comments.

Revision history for this message
Brad Crittenden (bac) wrote :

*** Submitted:

Parse charms with hyphens properly.

R=benji
CC=
https://codereview.appspot.com/15580047

https://codereview.appspot.com/15580047/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'charmworld/views/api.py'
--- charmworld/views/api.py 2013-10-17 18:38:21 +0000
+++ charmworld/views/api.py 2013-10-22 00:55:31 +0000
@@ -407,7 +407,7 @@
407 if len(elements) < 2:407 if len(elements) < 2:
408 raise ValueError('charm ID does not contain enough elements')408 raise ValueError('charm ID does not contain enough elements')
409 # If the charm ID includes a revision number, parse it out.409 # If the charm ID includes a revision number, parse it out.
410 if '-' in elements[-1]:410 if re.search('-\d+$', elements[-1]):
411 name, revision = elements[-1].rsplit('-', 1)411 name, revision = elements[-1].rsplit('-', 1)
412 else:412 else:
413 name = elements[-1]413 name = elements[-1]
414414
=== modified file 'charmworld/views/tests/test_api.py'
--- charmworld/views/tests/test_api.py 2013-10-18 18:53:19 +0000
+++ charmworld/views/tests/test_api.py 2013-10-22 00:55:31 +0000
@@ -1729,6 +1729,9 @@
1729 return names1729 return names
17301730
17311731
1732# XXX: Rick Harding 2013-10-21:
1733# Odd bug requires these tests to be run last, hence the Z in the name to
1734# force it to be last.
1732class TestZAPI3(TestAPI, API3Mixin):1735class TestZAPI3(TestAPI, API3Mixin):
1733 """Test API 3."""1736 """Test API 3."""
17341737
@@ -1782,7 +1785,7 @@
1782 )1785 )
17831786
1784 def test_charm_wrong_revision(self):1787 def test_charm_wrong_revision(self):
1785 """Retrieving a charm does not work if the revision is wrong."""1788 # Retrieving a charm does not work if the revision is wrong.
1786 self.use_index_client()1789 self.use_index_client()
1787 charm = self.make_charm()[1]1790 charm = self.make_charm()[1]
1788 stale_charm_id = self.get_id(charm) + '37'1791 stale_charm_id = self.get_id(charm) + '37'
@@ -1796,7 +1799,7 @@
1796 })1799 })
17971800
1798 def test_charm_no_revision(self):1801 def test_charm_no_revision(self):
1799 """Retrieving a charm with no revision results in the latest one."""1802 # Retrieving a charm with no revision results in the latest one.
1800 self.use_index_client()1803 self.use_index_client()
1801 # Make a charm.1804 # Make a charm.
1802 old_charm = self.make_charm(1805 old_charm = self.make_charm(
@@ -1809,6 +1812,31 @@
1809 self.assertEqual(200, response.status_code)1812 self.assertEqual(200, response.status_code)
1810 self.assertEqual(response.json_body, new_charm)1813 self.assertEqual(response.json_body, new_charm)
18111814
1815 def test_charm_no_revision_with_hyphen(self):
1816 # Retrieving a charm with a hyphen works.
1817 self.use_index_client()
1818 # Make a charm.
1819 old_charm = self.make_charm(
1820 owner='owner', series='series', name='a-name', store_revision=1)[1]
1821 # Make a newer revision of the same charm.
1822 new_charm = self.make_charm(
1823 owner='owner', series='series', name='a-name', store_revision=2)[1]
1824 revisionless_charm_id = self.get_id(old_charm).rsplit('-', 1)[0]
1825 response = self.get_response('charm', remainder=revisionless_charm_id)
1826 self.assertEqual(200, response.status_code)
1827 self.assertEqual(response.json_body, new_charm)
1828
1829 def test_charm_with_hyphen_and_revision(self):
1830 # Retrieving a charm with a hyphen works.
1831 self.use_index_client()
1832 # Make a charm.
1833 charm = self.make_charm(
1834 owner='owner', series='series', name='a-name', store_revision=1)[1]
1835 charm_id = self.get_id(charm)
1836 response = self.get_response('charm', remainder=charm_id)
1837 self.assertEqual(200, response.status_code)
1838 self.assertEqual(response.json_body, charm)
1839
1812 def test_search_interesting_contains_charms_and_bundles(self):1840 def test_search_interesting_contains_charms_and_bundles(self):
1813 self.use_index_client()1841 self.use_index_client()
1814 bundle = self.make_indexed_bundle(name='bat')1842 bundle = self.make_indexed_bundle(name='bat')
@@ -1825,6 +1853,9 @@
1825 self.assertItemsEqual(expected, list_names(result['featured']))1853 self.assertItemsEqual(expected, list_names(result['featured']))
18261854
18271855
1856# XXX: Rick Harding 2013-10-21:
1857# Odd bug requires these tests to be run last, hence the Z in the name to
1858# force it to be last.
1828class TestZAPI2(TestAPI, API2Mixin):1859class TestZAPI2(TestAPI, API2Mixin):
1829 """Test API 2."""1860 """Test API 2."""
18301861

Subscribers

People subscribed via source and target branches