23
23
from bzrlib import osutils, urlutils, win32utils
25
from bzrlib.errors import InvalidURL, InvalidURLJoin
25
from bzrlib.errors import InvalidURL, InvalidURLJoin, InvalidRebaseURLs
26
26
from bzrlib.tests import TestCaseInTempDir, TestCase, TestSkipped
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_different_ports(self):
631
e = self.assertRaises(InvalidRebaseURLs, urlutils.rebase_url,
632
'foo', 'http://bar:80', 'http://bar:81')
633
self.assertEqual(str(e), "URLs differ by more than path:"
634
" 'http://bar:80' and 'http://bar:81'")
636
def test_different_hosts(self):
637
e = self.assertRaises(InvalidRebaseURLs, urlutils.rebase_url,
638
'foo', 'http://bar', 'http://baz')
639
self.assertEqual(str(e), "URLs differ by more than path: 'http://bar'"
642
def test_different_protocol(self):
643
e = self.assertRaises(InvalidRebaseURLs, urlutils.rebase_url,
644
'foo', 'http://bar', 'ftp://bar')
645
self.assertEqual(str(e), "URLs differ by more than path: 'http://bar'"
648
def test_rebase_success(self):
649
self.assertEqual('../bar', urlutils.rebase_url('bar', 'http://baz/',
651
self.assertEqual('qux/bar', urlutils.rebase_url('bar',
652
'http://baz/qux', 'http://baz/'))
653
self.assertEqual('.', urlutils.rebase_url('foo',
654
'http://bar/', 'http://bar/foo/'))
656
def test_determine_relative_path(self):
657
self.assertEqual('../../baz/bar',
658
urlutils.determine_relative_path(
659
'/qux/quxx', '/baz/bar'))
660
self.assertEqual('..',
661
urlutils.determine_relative_path(
663
self.assertEqual('baz',
664
urlutils.determine_relative_path(
666
self.assertEqual('.', urlutils.determine_relative_path(