Rev 2249: lp:/// indirection works in file:///home/mbp/bzr/Work/lpurl/

Martin Pool mbp at sourcefrog.net
Fri Jan 26 03:05:09 GMT 2007


------------------------------------------------------------
revno: 2249
revision-id: mbp at sourcefrog.net-20070126030508-s5im2cxv57xqk7pu
parent: mbp at sourcefrog.net-20070126012338-4de0rkq7p5diyv47
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: lpurl
timestamp: Fri 2007-01-26 14:05:08 +1100
message:
  lp:/// indirection works
modified:
  bzrlib/plugins/launchpad/__init__.py __init__.py-20060315182712-2d5feebd2a1032dc
  bzrlib/plugins/launchpad/lp_indirect.py lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
  bzrlib/plugins/launchpad/test_lp_indirect.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
=== modified file 'bzrlib/plugins/launchpad/__init__.py'
--- a/bzrlib/plugins/launchpad/__init__.py	2007-01-26 01:23:38 +0000
+++ b/bzrlib/plugins/launchpad/__init__.py	2007-01-26 03:05:08 +0000
@@ -120,10 +120,11 @@
         print 'Branch registered.'
 
 register_command(cmd_register_branch)
+
 register_lazy_transport(
     'lp://',
     'bzrlib.plugins.launchpad.lp_indirect',
-    'LaunchpadIndirectTransport')
+    'launchpad_transport_indirect')
 
 def test_suite():
     """Called by bzrlib to fetch tests for this plugin"""

=== modified file 'bzrlib/plugins/launchpad/lp_indirect.py'
--- a/bzrlib/plugins/launchpad/lp_indirect.py	2007-01-26 01:23:38 +0000
+++ b/bzrlib/plugins/launchpad/lp_indirect.py	2007-01-26 03:05:08 +0000
@@ -22,11 +22,22 @@
 again.
 """
 
-from bzrlib.transport import Transport
-
-class LaunchpadIndirectTransport(Transport):
-
-    pass
+from bzrlib import (
+    errors,
+    )
+from bzrlib.transport import (
+    get_transport,
+    Transport,
+    )
+
+
+def launchpad_transport_indirect(base_url):
+    """Factory that returns the real transport for a lp: url"""
+    if base_url.startswith('lp:///'):
+        real_url = 'http://code.launchpad.net/' + base_url[6:]
+    else:
+        raise errors.InvalidURL(path=base_url)
+    return get_transport(real_url)
 
 
 def get_test_permutations():

=== modified file 'bzrlib/plugins/launchpad/test_lp_indirect.py'
--- a/bzrlib/plugins/launchpad/test_lp_indirect.py	2007-01-26 01:23:38 +0000
+++ b/bzrlib/plugins/launchpad/test_lp_indirect.py	2007-01-26 03:05:08 +0000
@@ -17,6 +17,7 @@
 """Tests for indirect branch urls through Launchpad.net"""
 
 from bzrlib import (
+    errors,
     transport,
     )
 from bzrlib.transport import get_transport
@@ -28,8 +29,14 @@
         """A launchpad url should map to a http url"""
         # These can change to use the smartserver protocol or something 
         # else in the future.
-        url = 'lp:///plone'
+        url = 'lp:///apt'
         t = get_transport(url)
         real_url = t.base
-        self.assertStartsWith(real_url, 'http')
+        self.assertEquals(real_url, 'http://code.launchpad.net/apt/')
+
+    # TODO: check we get an error if the url is unreasonable
+    def test_error_for_bad_indirection(self):
+        self.assertRaises(errors.InvalidURL,
+            get_transport,
+            'lp://ratotehunoahu')
 




More information about the bazaar-commits mailing list