297
297
def test_join_segment_parameters_raw(self):
298
298
join_segment_parameters_raw = urlutils.join_segment_parameters_raw
299
self.assertEquals("/somedir/path",
299
self.assertEqual("/somedir/path",
300
300
join_segment_parameters_raw("/somedir/path"))
301
self.assertEquals("/somedir/path,rawdata",
301
self.assertEqual("/somedir/path,rawdata",
302
302
join_segment_parameters_raw("/somedir/path", "rawdata"))
303
303
self.assertRaises(InvalidURLJoin,
304
304
join_segment_parameters_raw, "/somedir/path",
305
305
"rawdata1,rawdata2,rawdata3")
306
self.assertEquals("/somedir/path,bla,bar",
306
self.assertEqual("/somedir/path,bla,bar",
307
307
join_segment_parameters_raw("/somedir/path", "bla", "bar"))
308
self.assertEquals("/somedir,exist=some/path,bla,bar",
308
self.assertEqual("/somedir,exist=some/path,bla,bar",
309
309
join_segment_parameters_raw("/somedir,exist=some/path",
311
311
self.assertRaises(TypeError, join_segment_parameters_raw,
314
314
def test_join_segment_parameters(self):
315
315
join_segment_parameters = urlutils.join_segment_parameters
316
self.assertEquals("/somedir/path",
316
self.assertEqual("/somedir/path",
317
317
join_segment_parameters("/somedir/path", {}))
318
self.assertEquals("/somedir/path,key1=val1",
318
self.assertEqual("/somedir/path,key1=val1",
319
319
join_segment_parameters("/somedir/path", {"key1": "val1"}))
320
320
self.assertRaises(InvalidURLJoin,
321
321
join_segment_parameters, "/somedir/path",
322
322
{"branch": "brr,brr,brr"})
323
323
self.assertRaises(InvalidURLJoin,
324
324
join_segment_parameters, "/somedir/path", {"key1=val1": "val2"})
325
self.assertEquals("/somedir/path,key1=val1,key2=val2",
325
self.assertEqual("/somedir/path,key1=val1,key2=val2",
326
326
join_segment_parameters("/somedir/path", {
327
327
"key1": "val1", "key2": "val2"}))
328
self.assertEquals("/somedir/path,key1=val1,key2=val2",
328
self.assertEqual("/somedir/path,key1=val1,key2=val2",
329
329
join_segment_parameters("/somedir/path,key1=val1", {
330
330
"key2": "val2"}))
331
self.assertEquals("/somedir/path,key1=val2",
331
self.assertEqual("/somedir/path,key1=val2",
332
332
join_segment_parameters("/somedir/path,key1=val1", {
333
333
"key1": "val2"}))
334
self.assertEquals("/somedir,exist=some/path,key1=val1",
334
self.assertEqual("/somedir,exist=some/path,key1=val1",
335
335
join_segment_parameters("/somedir,exist=some/path",
336
336
{"key1": "val1"}))
337
self.assertEquals("/,key1=val1,key2=val2",
337
self.assertEqual("/,key1=val1,key2=val2",
338
338
join_segment_parameters("/,key1=val1", {"key2": "val2"}))
339
339
self.assertRaises(TypeError,
340
340
join_segment_parameters, "/,key1=val1", {"foo": 42})
507
508
def test_split_segment_parameters_raw(self):
508
509
split_segment_parameters_raw = urlutils.split_segment_parameters_raw
509
510
# Check relative references with absolute paths
510
self.assertEquals(("/some/path", []),
511
self.assertEqual(("/some/path", []),
511
512
split_segment_parameters_raw("/some/path"))
512
self.assertEquals(("/some/path", ["tip"]),
513
self.assertEqual(("/some/path", ["tip"]),
513
514
split_segment_parameters_raw("/some/path,tip"))
514
self.assertEquals(("/some,dir/path", ["tip"]),
515
self.assertEqual(("/some,dir/path", ["tip"]),
515
516
split_segment_parameters_raw("/some,dir/path,tip"))
516
self.assertEquals(("/somedir/path", ["heads%2Ftip"]),
517
self.assertEqual(("/somedir/path", ["heads%2Ftip"]),
517
518
split_segment_parameters_raw("/somedir/path,heads%2Ftip"))
518
self.assertEquals(("/somedir/path", ["heads%2Ftip", "bar"]),
519
self.assertEqual(("/somedir/path", ["heads%2Ftip", "bar"]),
519
520
split_segment_parameters_raw("/somedir/path,heads%2Ftip,bar"))
520
521
# Check relative references with relative paths
521
self.assertEquals(("", ["key1=val1"]),
522
self.assertEqual(("", ["key1=val1"]),
522
523
split_segment_parameters_raw(",key1=val1"))
523
self.assertEquals(("foo/", ["key1=val1"]),
524
self.assertEqual(("foo/", ["key1=val1"]),
524
525
split_segment_parameters_raw("foo/,key1=val1"))
525
self.assertEquals(("foo", ["key1=val1"]),
526
self.assertEqual(("foo", ["key1=val1"]),
526
527
split_segment_parameters_raw("foo,key1=val1"))
527
self.assertEquals(("foo/base,la=bla/other/elements", []),
528
self.assertEqual(("foo/base,la=bla/other/elements", []),
528
529
split_segment_parameters_raw("foo/base,la=bla/other/elements"))
529
self.assertEquals(("foo/base,la=bla/other/elements", ["a=b"]),
530
self.assertEqual(("foo/base,la=bla/other/elements", ["a=b"]),
530
531
split_segment_parameters_raw("foo/base,la=bla/other/elements,a=b"))
531
532
# TODO: Check full URLs as well as relative references
533
534
def test_split_segment_parameters(self):
534
535
split_segment_parameters = urlutils.split_segment_parameters
535
536
# Check relative references with absolute paths
536
self.assertEquals(("/some/path", {}),
537
self.assertEqual(("/some/path", {}),
537
538
split_segment_parameters("/some/path"))
538
self.assertEquals(("/some/path", {"branch": "tip"}),
539
self.assertEqual(("/some/path", {"branch": "tip"}),
539
540
split_segment_parameters("/some/path,branch=tip"))
540
self.assertEquals(("/some,dir/path", {"branch": "tip"}),
541
self.assertEqual(("/some,dir/path", {"branch": "tip"}),
541
542
split_segment_parameters("/some,dir/path,branch=tip"))
542
self.assertEquals(("/somedir/path", {"ref": "heads%2Ftip"}),
543
self.assertEqual(("/somedir/path", {"ref": "heads%2Ftip"}),
543
544
split_segment_parameters("/somedir/path,ref=heads%2Ftip"))
544
self.assertEquals(("/somedir/path",
545
self.assertEqual(("/somedir/path",
545
546
{"ref": "heads%2Ftip", "key1": "val1"}),
546
547
split_segment_parameters(
547
548
"/somedir/path,ref=heads%2Ftip,key1=val1"))
548
self.assertEquals(("/somedir/path", {"ref": "heads%2F=tip"}),
549
self.assertEqual(("/somedir/path", {"ref": "heads%2F=tip"}),
549
550
split_segment_parameters("/somedir/path,ref=heads%2F=tip"))
550
551
# Check relative references with relative paths
551
self.assertEquals(("", {"key1": "val1"}),
552
self.assertEqual(("", {"key1": "val1"}),
552
553
split_segment_parameters(",key1=val1"))
553
self.assertEquals(("foo/", {"key1": "val1"}),
554
self.assertEqual(("foo/", {"key1": "val1"}),
554
555
split_segment_parameters("foo/,key1=val1"))
555
self.assertEquals(("foo/base,key1=val1/other/elements", {}),
556
self.assertEqual(("foo/base,key1=val1/other/elements", {}),
556
557
split_segment_parameters("foo/base,key1=val1/other/elements"))
557
self.assertEquals(("foo/base,key1=val1/other/elements",
558
self.assertEqual(("foo/base,key1=val1/other/elements",
558
559
{"key2": "val2"}), split_segment_parameters(
559
560
"foo/base,key1=val1/other/elements,key2=val2"))
560
561
# TODO: Check full URLs as well as relative references
830
831
def test_parse_simple(self):
831
832
parsed = urlutils.parse_url('http://example.com:80/one')
832
self.assertEquals(('http', None, None, 'example.com', 80, '/one'),
833
self.assertEqual(('http', None, None, 'example.com', 80, '/one'),
835
836
def test_ipv6(self):
836
837
parsed = urlutils.parse_url('http://[1:2:3::40]/one')
837
self.assertEquals(('http', None, None, '1:2:3::40', None, '/one'),
838
self.assertEqual(('http', None, None, '1:2:3::40', None, '/one'),
840
841
def test_ipv6_port(self):
841
842
parsed = urlutils.parse_url('http://[1:2:3::40]:80/one')
842
self.assertEquals(('http', None, None, '1:2:3::40', 80, '/one'),
843
self.assertEqual(('http', None, None, '1:2:3::40', 80, '/one'),
848
849
def test_parse_simple(self):
849
850
parsed = urlutils.URL.from_string('http://example.com:80/one')
850
self.assertEquals('http', parsed.scheme)
851
self.assertEqual('http', parsed.scheme)
851
852
self.assertIs(None, parsed.user)
852
853
self.assertIs(None, parsed.password)
853
self.assertEquals('example.com', parsed.host)
854
self.assertEquals(80, parsed.port)
855
self.assertEquals('/one', parsed.path)
854
self.assertEqual('example.com', parsed.host)
855
self.assertEqual(80, parsed.port)
856
self.assertEqual('/one', parsed.path)
857
858
def test_ipv6(self):
858
859
parsed = urlutils.URL.from_string('http://[1:2:3::40]/one')
859
self.assertEquals('http', parsed.scheme)
860
self.assertEqual('http', parsed.scheme)
860
861
self.assertIs(None, parsed.port)
861
862
self.assertIs(None, parsed.user)
862
863
self.assertIs(None, parsed.password)
863
self.assertEquals('1:2:3::40', parsed.host)
864
self.assertEquals('/one', parsed.path)
864
self.assertEqual('1:2:3::40', parsed.host)
865
self.assertEqual('/one', parsed.path)
866
867
def test_ipv6_port(self):
867
868
parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
868
self.assertEquals('http', parsed.scheme)
869
self.assertEquals('1:2:3::40', parsed.host)
869
self.assertEqual('http', parsed.scheme)
870
self.assertEqual('1:2:3::40', parsed.host)
870
871
self.assertIs(None, parsed.user)
871
872
self.assertIs(None, parsed.password)
872
self.assertEquals(80, parsed.port)
873
self.assertEquals('/one', parsed.path)
873
self.assertEqual(80, parsed.port)
874
self.assertEqual('/one', parsed.path)
875
876
def test_quoted(self):
876
877
parsed = urlutils.URL.from_string(
877
878
'http://ro%62ey:h%40t@ex%41mple.com:2222/path')
878
self.assertEquals(parsed.quoted_host, 'ex%41mple.com')
879
self.assertEquals(parsed.host, 'exAmple.com')
880
self.assertEquals(parsed.port, 2222)
881
self.assertEquals(parsed.quoted_user, 'ro%62ey')
882
self.assertEquals(parsed.user, 'robey')
883
self.assertEquals(parsed.quoted_password, 'h%40t')
884
self.assertEquals(parsed.password, 'h@t')
885
self.assertEquals(parsed.path, '/path')
879
self.assertEqual(parsed.quoted_host, 'ex%41mple.com')
880
self.assertEqual(parsed.host, 'exAmple.com')
881
self.assertEqual(parsed.port, 2222)
882
self.assertEqual(parsed.quoted_user, 'ro%62ey')
883
self.assertEqual(parsed.user, 'robey')
884
self.assertEqual(parsed.quoted_password, 'h%40t')
885
self.assertEqual(parsed.password, 'h@t')
886
self.assertEqual(parsed.path, '/path')
887
888
def test_eq(self):
888
889
parsed1 = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
889
890
parsed2 = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
890
self.assertEquals(parsed1, parsed2)
891
self.assertEquals(parsed1, parsed1)
891
self.assertEqual(parsed1, parsed2)
892
self.assertEqual(parsed1, parsed1)
892
893
parsed2.path = '/two'
893
self.assertNotEquals(parsed1, parsed2)
894
self.assertNotEqual(parsed1, parsed2)
895
896
def test_repr(self):
896
897
parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
898
899
"<URL('http', None, None, '1:2:3::40', 80, '/one')>",
901
902
def test_str(self):
902
903
parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
903
self.assertEquals('http://[1:2:3::40]:80/one', str(parsed))
904
self.assertEqual('http://[1:2:3::40]:80/one', str(parsed))
905
906
def test__combine_paths(self):
906
907
combine = urlutils.URL._combine_paths
954
955
def test_same_url_posix(self):
955
956
self._with_posix_paths()
956
self.assertEquals("",
957
958
urlutils.file_relpath("file:///a", "file:///a"))
958
self.assertEquals("",
959
960
urlutils.file_relpath("file:///a", "file:///a/"))
960
self.assertEquals("",
961
962
urlutils.file_relpath("file:///a/", "file:///a"))
963
964
def test_same_url_win32(self):
964
965
self._with_win32_paths()
965
self.assertEquals("",
966
967
urlutils.file_relpath("file:///A:/", "file:///A:/"))
967
self.assertEquals("",
968
969
urlutils.file_relpath("file:///A|/", "file:///A:/"))
969
self.assertEquals("",
970
971
urlutils.file_relpath("file:///A:/b/", "file:///A:/b/"))
971
self.assertEquals("",
972
973
urlutils.file_relpath("file:///A:/b", "file:///A:/b/"))
973
self.assertEquals("",
974
975
urlutils.file_relpath("file:///A:/b/", "file:///A:/b"))
976
977
def test_child_posix(self):
977
978
self._with_posix_paths()
978
self.assertEquals("b",
979
self.assertEqual("b",
979
980
urlutils.file_relpath("file:///a", "file:///a/b"))
980
self.assertEquals("b",
981
self.assertEqual("b",
981
982
urlutils.file_relpath("file:///a/", "file:///a/b"))
982
self.assertEquals("b/c",
983
self.assertEqual("b/c",
983
984
urlutils.file_relpath("file:///a", "file:///a/b/c"))
985
986
def test_child_win32(self):
986
987
self._with_win32_paths()
987
self.assertEquals("b",
988
self.assertEqual("b",
988
989
urlutils.file_relpath("file:///A:/", "file:///A:/b"))
989
self.assertEquals("b",
990
self.assertEqual("b",
990
991
urlutils.file_relpath("file:///A|/", "file:///A:/b"))
991
self.assertEquals("c",
992
self.assertEqual("c",
992
993
urlutils.file_relpath("file:///A:/b", "file:///A:/b/c"))
993
self.assertEquals("c",
994
self.assertEqual("c",
994
995
urlutils.file_relpath("file:///A:/b/", "file:///A:/b/c"))
995
self.assertEquals("c/d",
996
self.assertEqual("c/d",
996
997
urlutils.file_relpath("file:///A:/b", "file:///A:/b/c/d"))
998
999
def test_sibling_posix(self):