~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_urlutils.py

  • Committer: John Arbash Meinel
  • Date: 2008-10-30 00:55:00 UTC
  • mto: (3815.2.5 prepare-1.9)
  • mto: This revision was merged to the branch mainline in revision 3811.
  • Revision ID: john@arbash-meinel.com-20081030005500-r5cej1cxflqhs3io
Switch so that we are using a simple timestamp as the first action.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
import sys
22
22
 
23
23
from bzrlib import osutils, urlutils, win32utils
24
 
import bzrlib
25
 
from bzrlib.errors import InvalidURL, InvalidURLJoin
 
24
from bzrlib.errors import InvalidURL, InvalidURLJoin, InvalidRebaseURLs
26
25
from bzrlib.tests import TestCaseInTempDir, TestCase, TestSkipped
27
26
 
28
27
 
82
81
 
83
82
        # Local paths are assumed to *not* be escaped at all
84
83
        try:
85
 
            u'uni/\xb5'.encode(bzrlib.user_encoding)
 
84
            u'uni/\xb5'.encode(osutils.get_user_encoding())
86
85
        except UnicodeError:
87
86
            # locale cannot handle unicode 
88
87
            pass
316
315
        #     to_url('C:/path/to/foo '))
317
316
        self.assertEqual('file:///C:/path/to/f%20oo',
318
317
            to_url('C:/path/to/f oo'))
 
318
        
 
319
        self.assertEqual('file:///', to_url('/'))
319
320
 
320
321
        try:
321
322
            result = to_url(u'd:/path/to/r\xe4ksm\xf6rg\xe5s')
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:///'))
351
353
 
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"))
 
619
 
 
620
 
 
621
class TestRebaseURL(TestCase):
 
622
    """Test the behavior of rebase_url."""
 
623
 
 
624
    def test_non_relative(self):
 
625
        result = urlutils.rebase_url('file://foo', 'file://foo',
 
626
                                     'file://foo/bar')
 
627
        self.assertEqual('file://foo', result)
 
628
        result = urlutils.rebase_url('/foo', 'file://foo',
 
629
                                     'file://foo/bar')
 
630
        self.assertEqual('/foo', result)
 
631
 
 
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'")
 
637
 
 
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'"
 
642
                         " and 'http://baz'")
 
643
 
 
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'"
 
648
                         " and 'ftp://bar'")
 
649
 
 
650
    def test_rebase_success(self):
 
651
        self.assertEqual('../bar', urlutils.rebase_url('bar', 'http://baz/',
 
652
                         'http://baz/qux'))
 
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/'))
 
659
 
 
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(
 
666
                         '/bar/baz', '/bar'))
 
667
        self.assertEqual('baz',
 
668
                         urlutils.determine_relative_path(
 
669
                         '/bar', '/bar/baz'))
 
670
        self.assertEqual('.', urlutils.determine_relative_path(
 
671
                         '/bar', '/bar'))