348
349
from_url('file:///d|/path/to/r%C3%A4ksm%C3%B6rg%C3%A5s'))
349
350
self.assertEqual(u'D:/path/to/r\xe4ksm\xf6rg\xe5s',
350
351
from_url('file:///d:/path/to/r%c3%a4ksm%c3%b6rg%c3%a5s'))
352
self.assertEqual('/', from_url('file:///'))
352
354
self.assertRaises(InvalidURL, from_url, '/path/to/foo')
353
355
# Not a valid _win32 url, no drive letter
614
616
self.assertEqual("bar", derive("http://foo/bar"))
615
617
self.assertEqual("bar", derive("bzr+ssh://foo/bar"))
616
618
self.assertEqual("foo-bar", derive("lp:foo-bar"))
621
class TestRebaseURL(TestCase):
622
"""Test the behavior of rebase_url."""
624
def test_non_relative(self):
625
result = urlutils.rebase_url('file://foo', 'file://foo',
627
self.assertEqual('file://foo', result)
628
result = urlutils.rebase_url('/foo', 'file://foo',
630
self.assertEqual('/foo', result)
632
def test_different_ports(self):
633
e = self.assertRaises(InvalidRebaseURLs, urlutils.rebase_url,
634
'foo', 'http://bar:80', 'http://bar:81')
635
self.assertEqual(str(e), "URLs differ by more than path:"
636
" 'http://bar:80' and 'http://bar:81'")
638
def test_different_hosts(self):
639
e = self.assertRaises(InvalidRebaseURLs, urlutils.rebase_url,
640
'foo', 'http://bar', 'http://baz')
641
self.assertEqual(str(e), "URLs differ by more than path: 'http://bar'"
644
def test_different_protocol(self):
645
e = self.assertRaises(InvalidRebaseURLs, urlutils.rebase_url,
646
'foo', 'http://bar', 'ftp://bar')
647
self.assertEqual(str(e), "URLs differ by more than path: 'http://bar'"
650
def test_rebase_success(self):
651
self.assertEqual('../bar', urlutils.rebase_url('bar', 'http://baz/',
653
self.assertEqual('qux/bar', urlutils.rebase_url('bar',
654
'http://baz/qux', 'http://baz/'))
655
self.assertEqual('.', urlutils.rebase_url('foo',
656
'http://bar/', 'http://bar/foo/'))
657
self.assertEqual('qux/bar', urlutils.rebase_url('../bar',
658
'http://baz/qux/foo', 'http://baz/'))
660
def test_determine_relative_path(self):
661
self.assertEqual('../../baz/bar',
662
urlutils.determine_relative_path(
663
'/qux/quxx', '/baz/bar'))
664
self.assertEqual('..',
665
urlutils.determine_relative_path(
667
self.assertEqual('baz',
668
urlutils.determine_relative_path(
670
self.assertEqual('.', urlutils.determine_relative_path(