~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_urlutils.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-07-27 03:03:49 UTC
  • mfrom: (6015.3.7 trivial)
  • Revision ID: pqm@pqm.ubuntu.com-20110727030349-wcq2ay0knn995ae4
(mbp) log a message when we get a EINVAL on a transport operation (Martin
 Pool)

Show diffs side-by-side

added added

removed removed

Lines of Context:
336
336
 
337
337
    def test_function_type(self):
338
338
        if sys.platform == 'win32':
339
 
            self.assertEqual(urlutils._win32_local_path_to_url,
340
 
                urlutils.local_path_to_url)
341
 
            self.assertEqual(urlutils._win32_local_path_from_url,
342
 
                urlutils.local_path_from_url)
 
339
            self.assertEqual(urlutils._win32_local_path_to_url, urlutils.local_path_to_url)
 
340
            self.assertEqual(urlutils._win32_local_path_from_url, urlutils.local_path_from_url)
343
341
        else:
344
 
            self.assertEqual(urlutils._posix_local_path_to_url,
345
 
                urlutils.local_path_to_url)
346
 
            self.assertEqual(urlutils._posix_local_path_from_url,
347
 
                urlutils.local_path_from_url)
 
342
            self.assertEqual(urlutils._posix_local_path_to_url, urlutils.local_path_to_url)
 
343
            self.assertEqual(urlutils._posix_local_path_from_url, urlutils.local_path_from_url)
348
344
 
349
345
    def test_posix_local_path_to_url(self):
350
346
        to_url = urlutils._posix_local_path_to_url
351
347
        self.assertEqual('file:///path/to/foo',
352
348
            to_url('/path/to/foo'))
353
349
 
354
 
        self.assertEqual('file:///path/to/foo%2Cbar',
355
 
            to_url('/path/to/foo,bar'))
356
 
 
357
350
        try:
358
351
            result = to_url(u'/path/to/r\xe4ksm\xf6rg\xe5s')
359
352
        except UnicodeError:
366
359
        from_url = urlutils._posix_local_path_from_url
367
360
        self.assertEqual('/path/to/foo',
368
361
            from_url('file:///path/to/foo'))
369
 
        self.assertEqual('/path/to/foo',
370
 
            from_url('file:///path/to/foo,branch=foo'))
371
362
        self.assertEqual(u'/path/to/r\xe4ksm\xf6rg\xe5s',
372
363
            from_url('file:///path/to/r%C3%A4ksm%C3%B6rg%C3%A5s'))
373
364
        self.assertEqual(u'/path/to/r\xe4ksm\xf6rg\xe5s',
395
386
 
396
387
        self.assertEqual('file:///', to_url('/'))
397
388
 
398
 
        self.assertEqual('file:///C:/path/to/foo%2Cbar',
399
 
            to_url('C:/path/to/foo,bar'))
400
389
        try:
401
390
            result = to_url(u'd:/path/to/r\xe4ksm\xf6rg\xe5s')
402
391
        except UnicodeError:
429
418
        self.assertEqual(u'D:/path/to/r\xe4ksm\xf6rg\xe5s',
430
419
            from_url('file:///d:/path/to/r%c3%a4ksm%c3%b6rg%c3%a5s'))
431
420
        self.assertEqual('/', from_url('file:///'))
432
 
        self.assertEqual('C:/path/to/foo',
433
 
            from_url('file:///C|/path/to/foo,branch=foo'))
434
421
 
435
422
        self.assertRaises(InvalidURL, from_url, 'file:///C:')
436
423
        self.assertRaises(InvalidURL, from_url, 'file:///c')
441
428
    def test_win32_unc_path_from_url(self):
442
429
        from_url = urlutils._win32_local_path_from_url
443
430
        self.assertEqual('//HOST/path', from_url('file://HOST/path'))
444
 
        self.assertEqual('//HOST/path',
445
 
            from_url('file://HOST/path,branch=foo'))
446
431
        # despite IE allows 2, 4, 5 and 6 slashes in URL to another machine
447
432
        # we want to use only 2 slashes
448
433
        # Firefox understand only 5 slashes in URL, but it's ugly
509
494
            split_segment_parameters_raw(",key1=val1"))
510
495
        self.assertEquals(("foo/", ["key1=val1"]),
511
496
            split_segment_parameters_raw("foo/,key1=val1"))
512
 
        self.assertEquals(("/foo", ["key1=val1"]),
513
 
            split_segment_parameters_raw("foo,key1=val1"))
514
497
        self.assertEquals(("foo/base,la=bla/other/elements", []),
515
498
            split_segment_parameters_raw("foo/base,la=bla/other/elements"))
516
499
        self.assertEquals(("foo/base,la=bla/other/elements", ["a=b"]),
810
793
 
811
794
class TestParseURL(TestCase):
812
795
 
813
 
    def test_parse_simple(self):
814
 
        parsed = urlutils.parse_url('http://example.com:80/one')
815
 
        self.assertEquals(('http', None, None, 'example.com', 80, '/one'),
816
 
            parsed)
817
 
 
818
 
    def test_ipv6(self):
819
 
        parsed = urlutils.parse_url('http://[1:2:3::40]/one')
820
 
        self.assertEquals(('http', None, None, '1:2:3::40', None, '/one'),
821
 
            parsed)
822
 
 
823
 
    def test_ipv6_port(self):
824
 
        parsed = urlutils.parse_url('http://[1:2:3::40]:80/one')
825
 
        self.assertEquals(('http', None, None, '1:2:3::40', 80, '/one'),
826
 
            parsed)
827
 
 
828
 
 
829
 
class TestURL(TestCase):
830
 
 
831
 
    def test_parse_simple(self):
832
 
        parsed = urlutils.URL.from_string('http://example.com:80/one')
833
 
        self.assertEquals('http', parsed.scheme)
834
 
        self.assertIs(None, parsed.user)
835
 
        self.assertIs(None, parsed.password)
836
 
        self.assertEquals('example.com', parsed.host)
837
 
        self.assertEquals(80, parsed.port)
838
 
        self.assertEquals('/one', parsed.path)
839
 
 
840
 
    def test_ipv6(self):
841
 
        parsed = urlutils.URL.from_string('http://[1:2:3::40]/one')
842
 
        self.assertEquals('http', parsed.scheme)
843
 
        self.assertIs(None, parsed.port)
844
 
        self.assertIs(None, parsed.user)
845
 
        self.assertIs(None, parsed.password)
846
 
        self.assertEquals('1:2:3::40', parsed.host)
847
 
        self.assertEquals('/one', parsed.path)
848
 
 
849
 
    def test_ipv6_port(self):
850
 
        parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
851
 
        self.assertEquals('http', parsed.scheme)
852
 
        self.assertEquals('1:2:3::40', parsed.host)
853
 
        self.assertIs(None, parsed.user)
854
 
        self.assertIs(None, parsed.password)
855
 
        self.assertEquals(80, parsed.port)
856
 
        self.assertEquals('/one', parsed.path)
857
 
 
858
 
    def test_quoted(self):
859
 
        parsed = urlutils.URL.from_string(
860
 
            'http://ro%62ey:h%40t@ex%41mple.com:2222/path')
861
 
        self.assertEquals(parsed.quoted_host, 'ex%41mple.com')
862
 
        self.assertEquals(parsed.host, 'exAmple.com')
863
 
        self.assertEquals(parsed.port, 2222)
864
 
        self.assertEquals(parsed.quoted_user, 'ro%62ey')
865
 
        self.assertEquals(parsed.user, 'robey')
866
 
        self.assertEquals(parsed.quoted_password, 'h%40t')
867
 
        self.assertEquals(parsed.password, 'h@t')
868
 
        self.assertEquals(parsed.path, '/path')
869
 
 
870
 
    def test_eq(self):
871
 
        parsed1 = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
872
 
        parsed2 = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
873
 
        self.assertEquals(parsed1, parsed2)
874
 
        self.assertEquals(parsed1, parsed1)
875
 
        parsed2.path = '/two'
876
 
        self.assertNotEquals(parsed1, parsed2)
877
 
 
878
 
    def test_repr(self):
879
 
        parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
880
 
        self.assertEquals(
881
 
            "<URL('http', None, None, '1:2:3::40', 80, '/one')>",
882
 
            repr(parsed))
883
 
 
884
 
    def test_str(self):
885
 
        parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
886
 
        self.assertEquals('http://[1:2:3::40]:80/one', str(parsed))
887
 
 
888
 
    def test__combine_paths(self):
889
 
        combine = urlutils.URL._combine_paths
890
 
        self.assertEqual('/home/sarah/project/foo',
891
 
                         combine('/home/sarah', 'project/foo'))
892
 
        self.assertEqual('/etc',
893
 
                         combine('/home/sarah', '../../etc'))
894
 
        self.assertEqual('/etc',
895
 
                         combine('/home/sarah', '../../../etc'))
896
 
        self.assertEqual('/etc',
897
 
                         combine('/home/sarah', '/etc'))
898
 
 
899
 
    def test_clone(self):
900
 
        url = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
901
 
        url1 = url.clone("two")
902
 
        self.assertEquals("/one/two", url1.path)
903
 
        url2 = url.clone("/two")
904
 
        self.assertEquals("/two", url2.path)
905
 
        url3 = url.clone()
906
 
        self.assertIsNot(url, url3)
907
 
        self.assertEquals(url, url3)
 
796
    def test_parse_url(self):
 
797
        self.assertEqual(urlutils.parse_url('http://example.com:80/one'),
 
798
            ('http', None, None, 'example.com', 80, '/one'))
 
799
        self.assertEqual(urlutils.parse_url('http://[1:2:3::40]/one'),
 
800
                ('http', None, None, '1:2:3::40', None, '/one'))
 
801
        self.assertEqual(urlutils.parse_url('http://[1:2:3::40]:80/one'),
 
802
                ('http', None, None, '1:2:3::40', 80, '/one'))