614
614
self.assertEqual("bar", derive("http://foo/bar"))
615
615
self.assertEqual("bar", derive("bzr+ssh://foo/bar"))
616
616
self.assertEqual("foo-bar", derive("lp:foo-bar"))
619
class TestRebaseURL(TestCase):
620
"""Test the behavior of rebase_url."""
622
def test_non_relative(self):
623
result = urlutils.rebase_url('file://foo', 'file://foo',
625
self.assertEqual('file://foo', result)
626
result = urlutils.rebase_url('/foo', 'file://foo',
628
self.assertEqual('/foo', result)
630
def test_unrelated_urls(self):
631
e = self.assertRaises(ValueError, urlutils.rebase_url, 'foo',
632
'http://bar', 'http://baz')
633
self.assertEqual(str(e), 'URLs cannot have relative paths: http://bar'
636
def test_rebase_success(self):
637
self.assertEqual('../bar', urlutils.rebase_url('bar', 'http://baz/',
639
self.assertEqual('qux/bar', urlutils.rebase_url('bar',
640
'http://baz/qux', 'http://baz/'))
641
self.assertEqual('../foo', urlutils.rebase_url('foo',
642
'http://bar/', 'http://bar/baz/'))
643
self.assertEqual('.', urlutils.rebase_url('foo',
644
'http://bar/', 'http://bar/foo/'))
646
def test_determine_relative_path(self):
647
self.assertEqual('../../baz/bar',
648
urlutils.determine_relative_path(
649
'/qux/quxx', '/baz/bar'))
650
self.assertEqual('..',
651
urlutils.determine_relative_path(
653
self.assertEqual('baz',
654
urlutils.determine_relative_path(
656
self.assertEqual('.', urlutils.determine_relative_path(