annotate Lib/test/test_urlparse.py @ 79691:05c8928362ee

Merge __next__ method link fixes with 3.3.
author Ezio Melotti <ezio.melotti@gmail.com>
date Fri, 12 Oct 2012 13:46:37 +0300
parents d769e64aed79
children d002a2e46383
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59522
fcfe324663a6 convert shebang lines: python -> python3
Benjamin Peterson <benjamin@python.org>
parents: 58955
diff changeset
1 #! /usr/bin/env python3
15742
abb94609318e Add test cases based on RFC 1808. So now we actually have a test suite
Fred Drake <fdrake@acm.org>
parents: 13832
diff changeset
2
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 44535
diff changeset
3 from test import support
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
4 import unittest
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
5 import urllib.parse
15742
abb94609318e Add test cases based on RFC 1808. So now we actually have a test suite
Fred Drake <fdrake@acm.org>
parents: 13832
diff changeset
6
abb94609318e Add test cases based on RFC 1808. So now we actually have a test suite
Fred Drake <fdrake@acm.org>
parents: 13832
diff changeset
7 RFC1808_BASE = "http://a/b/c/d;p?q#f"
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
8 RFC2396_BASE = "http://a/b/c/d;p?q"
61357
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
9 RFC3986_BASE = 'http://a/b/c/d;p?q'
63020
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
10 SIMPLE_BASE = 'http://a/b/c/d'
15742
abb94609318e Add test cases based on RFC 1808. So now we actually have a test suite
Fred Drake <fdrake@acm.org>
parents: 13832
diff changeset
11
72985
e19ccbbe70dd Remove duplication.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 71738
diff changeset
12 # A list of test cases. Each test case is a two-tuple that contains
48998
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
13 # a string with the query and a dictionary with the expected result.
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
14
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
15 parse_qsl_test_cases = [
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
16 ("", []),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
17 ("&", []),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
18 ("&&", []),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
19 ("=", [('', '')]),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
20 ("=a", [('', 'a')]),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
21 ("a", [('a', '')]),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
22 ("a=", [('a', '')]),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
23 ("a=", [('a', '')]),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
24 ("&a=b", [('a', 'b')]),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
25 ("a=a+b&b=b+c", [('a', 'a b'), ('b', 'b c')]),
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
26 ("a=1&a=2", [('a', '1'), ('a', '2')]),
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
27 (b"", []),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
28 (b"&", []),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
29 (b"&&", []),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
30 (b"=", [(b'', b'')]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
31 (b"=a", [(b'', b'a')]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
32 (b"a", [(b'a', b'')]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
33 (b"a=", [(b'a', b'')]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
34 (b"a=", [(b'a', b'')]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
35 (b"&a=b", [(b'a', b'b')]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
36 (b"a=a+b&b=b+c", [(b'a', b'a b'), (b'b', b'b c')]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
37 (b"a=1&a=2", [(b'a', b'1'), (b'a', b'2')]),
48998
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
38 ]
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
39
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
40 class UrlParseTestCase(unittest.TestCase):
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
41
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
42 def checkRoundtrips(self, url, parsed, split):
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
43 result = urllib.parse.urlparse(url)
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
44 self.assertEqual(result, parsed)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
45 t = (result.scheme, result.netloc, result.path,
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
46 result.params, result.query, result.fragment)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
47 self.assertEqual(t, parsed)
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
48 # put it back together and it should be the same
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
49 result2 = urllib.parse.urlunparse(result)
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
50 self.assertEqual(result2, url)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
51 self.assertEqual(result2, result.geturl())
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
52
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
53 # the result of geturl() is a fixpoint; we can always parse it
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
54 # again to get the same result:
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
55 result3 = urllib.parse.urlparse(result.geturl())
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
56 self.assertEqual(result3.geturl(), result.geturl())
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
57 self.assertEqual(result3, result)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
58 self.assertEqual(result3.scheme, result.scheme)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
59 self.assertEqual(result3.netloc, result.netloc)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
60 self.assertEqual(result3.path, result.path)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
61 self.assertEqual(result3.params, result.params)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
62 self.assertEqual(result3.query, result.query)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
63 self.assertEqual(result3.fragment, result.fragment)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
64 self.assertEqual(result3.username, result.username)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
65 self.assertEqual(result3.password, result.password)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
66 self.assertEqual(result3.hostname, result.hostname)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
67 self.assertEqual(result3.port, result.port)
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
68
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
69 # check the roundtrip using urlsplit() as well
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
70 result = urllib.parse.urlsplit(url)
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
71 self.assertEqual(result, split)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
72 t = (result.scheme, result.netloc, result.path,
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
73 result.query, result.fragment)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
74 self.assertEqual(t, split)
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
75 result2 = urllib.parse.urlunsplit(result)
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
76 self.assertEqual(result2, url)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
77 self.assertEqual(result2, result.geturl())
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
78
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
79 # check the fixpoint property of re-parsing the result of geturl()
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
80 result3 = urllib.parse.urlsplit(result.geturl())
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
81 self.assertEqual(result3.geturl(), result.geturl())
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
82 self.assertEqual(result3, result)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
83 self.assertEqual(result3.scheme, result.scheme)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
84 self.assertEqual(result3.netloc, result.netloc)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
85 self.assertEqual(result3.path, result.path)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
86 self.assertEqual(result3.query, result.query)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
87 self.assertEqual(result3.fragment, result.fragment)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
88 self.assertEqual(result3.username, result.username)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
89 self.assertEqual(result3.password, result.password)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
90 self.assertEqual(result3.hostname, result.hostname)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
91 self.assertEqual(result3.port, result.port)
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
92
48998
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
93 def test_qsl(self):
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
94 for orig, expect in parse_qsl_test_cases:
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
95 result = urllib.parse.parse_qsl(orig, keep_blank_values=True)
71470
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
96 self.assertEqual(result, expect, "Error parsing %r" % orig)
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
97 expect_without_blanks = [v for v in expect if len(v[1])]
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
98 result = urllib.parse.parse_qsl(orig, keep_blank_values=False)
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
99 self.assertEqual(result, expect_without_blanks,
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
100 "Error parsing %r" % orig)
48998
65e23683c010 Issue 600362: Relocated parse_qs() and parse_qsl(), from the cgi module
Facundo Batista <facundobatista@gmail.com>
parents: 48692
diff changeset
101
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
102 def test_roundtrips(self):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
103 str_cases = [
25812
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
104 ('file:///tmp/junk.txt',
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
105 ('file', '', '/tmp/junk.txt', '', '', ''),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
106 ('file', '', '/tmp/junk.txt', '', '')),
27100
8226658a63bb SF feature #618024, urlparse fails on imap://
Neal Norwitz <nnorwitz@gmail.com>
parents: 25812
diff changeset
107 ('imap://mail.python.org/mbox1',
8226658a63bb SF feature #618024, urlparse fails on imap://
Neal Norwitz <nnorwitz@gmail.com>
parents: 25812
diff changeset
108 ('imap', 'mail.python.org', '/mbox1', '', '', ''),
8226658a63bb SF feature #618024, urlparse fails on imap://
Neal Norwitz <nnorwitz@gmail.com>
parents: 25812
diff changeset
109 ('imap', 'mail.python.org', '/mbox1', '', '')),
27121
7ec771893410 * add mms (windows media) as another scheme
Skip Montanaro <skip@pobox.com>
parents: 27100
diff changeset
110 ('mms://wms.sys.hinet.net/cts/Drama/09006251100.asf',
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
111 ('mms', 'wms.sys.hinet.net', '/cts/Drama/09006251100.asf',
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
112 '', '', ''),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
113 ('mms', 'wms.sys.hinet.net', '/cts/Drama/09006251100.asf',
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
114 '', '')),
52478
e9ff0efcffa9 Fix for Issue4962, issue4675.
Senthil Kumaran <orsenthil@gmail.com>
parents: 48998
diff changeset
115 ('nfs://server/path/to/file.txt',
e9ff0efcffa9 Fix for Issue4962, issue4675.
Senthil Kumaran <orsenthil@gmail.com>
parents: 48998
diff changeset
116 ('nfs', 'server', '/path/to/file.txt', '', '', ''),
e9ff0efcffa9 Fix for Issue4962, issue4675.
Senthil Kumaran <orsenthil@gmail.com>
parents: 48998
diff changeset
117 ('nfs', 'server', '/path/to/file.txt', '', '')),
35290
349a0fd598e0 add support for svn: and svn+ssh: URL schemes to urlparse
Fred Drake <fdrake@acm.org>
parents: 34379
diff changeset
118 ('svn+ssh://svn.zope.org/repos/main/ZConfig/trunk/',
349a0fd598e0 add support for svn: and svn+ssh: URL schemes to urlparse
Fred Drake <fdrake@acm.org>
parents: 34379
diff changeset
119 ('svn+ssh', 'svn.zope.org', '/repos/main/ZConfig/trunk/',
349a0fd598e0 add support for svn: and svn+ssh: URL schemes to urlparse
Fred Drake <fdrake@acm.org>
parents: 34379
diff changeset
120 '', '', ''),
349a0fd598e0 add support for svn: and svn+ssh: URL schemes to urlparse
Fred Drake <fdrake@acm.org>
parents: 34379
diff changeset
121 ('svn+ssh', 'svn.zope.org', '/repos/main/ZConfig/trunk/',
61546
90a9a34e5eb5 Merged revisions 81132 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61357
diff changeset
122 '', '')),
90a9a34e5eb5 Merged revisions 81132 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61357
diff changeset
123 ('git+ssh://git@github.com/user/project.git',
90a9a34e5eb5 Merged revisions 81132 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61357
diff changeset
124 ('git+ssh', 'git@github.com','/user/project.git',
90a9a34e5eb5 Merged revisions 81132 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61357
diff changeset
125 '','',''),
90a9a34e5eb5 Merged revisions 81132 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61357
diff changeset
126 ('git+ssh', 'git@github.com','/user/project.git',
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
127 '', '')),
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
128 ]
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
129 def _encode(t):
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
130 return (t[0].encode('ascii'),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
131 tuple(x.encode('ascii') for x in t[1]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
132 tuple(x.encode('ascii') for x in t[2]))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
133 bytes_cases = [_encode(x) for x in str_cases]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
134 for url, parsed, split in str_cases + bytes_cases:
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
135 self.checkRoundtrips(url, parsed, split)
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
136
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
137 def test_http_roundtrips(self):
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
138 # urllib.parse.urlsplit treats 'http:' as an optimized special case,
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
139 # so we test both 'http:' and 'https:' in all the following.
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
140 # Three cheers for white box knowledge!
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
141 str_cases = [
34379
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
142 ('://www.python.org',
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
143 ('www.python.org', '', '', '', ''),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
144 ('www.python.org', '', '', '')),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
145 ('://www.python.org#abc',
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
146 ('www.python.org', '', '', '', 'abc'),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
147 ('www.python.org', '', '', 'abc')),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
148 ('://www.python.org?q=abc',
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
149 ('www.python.org', '', '', 'q=abc', ''),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
150 ('www.python.org', '', 'q=abc', '')),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
151 ('://www.python.org/#abc',
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
152 ('www.python.org', '/', '', '', 'abc'),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
153 ('www.python.org', '/', '', 'abc')),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
154 ('://a/b/c/d;p?q#f',
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
155 ('a', '/b/c/d', 'p', 'q', 'f'),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
156 ('a', '/b/c/d;p', 'q', 'f')),
287e71f44d79 Backport patch #712317: In URLs such as http://www.example.com?query=spam,
Johannes Gijsbers <jlg@dds.nl>
parents: 30674
diff changeset
157 ]
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
158 def _encode(t):
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
159 return (t[0].encode('ascii'),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
160 tuple(x.encode('ascii') for x in t[1]),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
161 tuple(x.encode('ascii') for x in t[2]))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
162 bytes_cases = [_encode(x) for x in str_cases]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
163 str_schemes = ('http', 'https')
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
164 bytes_schemes = (b'http', b'https')
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
165 str_tests = str_schemes, str_cases
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
166 bytes_tests = bytes_schemes, bytes_cases
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
167 for schemes, test_cases in (str_tests, bytes_tests):
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
168 for scheme in schemes:
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
169 for url, parsed, split in test_cases:
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
170 url = scheme + url
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
171 parsed = (scheme,) + parsed
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
172 split = (scheme,) + split
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
173 self.checkRoundtrips(url, parsed, split)
25812
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
174
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
175 def checkJoin(self, base, relurl, expected):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
176 str_components = (base, relurl, expected)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
177 self.assertEqual(urllib.parse.urljoin(base, relurl), expected)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
178 bytes_components = baseb, relurlb, expectedb = [
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
179 x.encode('ascii') for x in str_components]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
180 self.assertEqual(urllib.parse.urljoin(baseb, relurlb), expectedb)
25785
cf18ca0eea89 Fix for 1.33: urlsplit() should only add '//' if scheme != ''.
Guido van Rossum <guido@python.org>
parents: 25425
diff changeset
181
cf18ca0eea89 Fix for 1.33: urlsplit() should only add '//' if scheme != ''.
Guido van Rossum <guido@python.org>
parents: 25425
diff changeset
182 def test_unparse_parse(self):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
183 str_cases = ['Python', './Python','x-newscheme://foo.com/stuff','x://y','x:/y','x:/','/',]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
184 bytes_cases = [x.encode('ascii') for x in str_cases]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
185 for u in str_cases + bytes_cases:
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
186 self.assertEqual(urllib.parse.urlunsplit(urllib.parse.urlsplit(u)), u)
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
187 self.assertEqual(urllib.parse.urlunparse(urllib.parse.urlparse(u)), u)
22379
55512fe1d6f1 amk's fix attached to
Michael W. Hudson <mwh@python.net>
parents: 15742
diff changeset
188
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
189 def test_RFC1808(self):
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
190 # "normal" cases from RFC 1808:
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
191 self.checkJoin(RFC1808_BASE, 'g:h', 'g:h')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
192 self.checkJoin(RFC1808_BASE, 'g', 'http://a/b/c/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
193 self.checkJoin(RFC1808_BASE, './g', 'http://a/b/c/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
194 self.checkJoin(RFC1808_BASE, 'g/', 'http://a/b/c/g/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
195 self.checkJoin(RFC1808_BASE, '/g', 'http://a/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
196 self.checkJoin(RFC1808_BASE, '//g', 'http://g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
197 self.checkJoin(RFC1808_BASE, 'g?y', 'http://a/b/c/g?y')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
198 self.checkJoin(RFC1808_BASE, 'g?y/./x', 'http://a/b/c/g?y/./x')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
199 self.checkJoin(RFC1808_BASE, '#s', 'http://a/b/c/d;p?q#s')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
200 self.checkJoin(RFC1808_BASE, 'g#s', 'http://a/b/c/g#s')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
201 self.checkJoin(RFC1808_BASE, 'g#s/./x', 'http://a/b/c/g#s/./x')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
202 self.checkJoin(RFC1808_BASE, 'g?y#s', 'http://a/b/c/g?y#s')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
203 self.checkJoin(RFC1808_BASE, 'g;x', 'http://a/b/c/g;x')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
204 self.checkJoin(RFC1808_BASE, 'g;x?y#s', 'http://a/b/c/g;x?y#s')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
205 self.checkJoin(RFC1808_BASE, '.', 'http://a/b/c/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
206 self.checkJoin(RFC1808_BASE, './', 'http://a/b/c/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
207 self.checkJoin(RFC1808_BASE, '..', 'http://a/b/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
208 self.checkJoin(RFC1808_BASE, '../', 'http://a/b/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
209 self.checkJoin(RFC1808_BASE, '../g', 'http://a/b/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
210 self.checkJoin(RFC1808_BASE, '../..', 'http://a/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
211 self.checkJoin(RFC1808_BASE, '../../', 'http://a/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
212 self.checkJoin(RFC1808_BASE, '../../g', 'http://a/g')
15742
abb94609318e Add test cases based on RFC 1808. So now we actually have a test suite
Fred Drake <fdrake@acm.org>
parents: 13832
diff changeset
213
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
214 # "abnormal" cases from RFC 1808:
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
215 self.checkJoin(RFC1808_BASE, '', 'http://a/b/c/d;p?q#f')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
216 self.checkJoin(RFC1808_BASE, '../../../g', 'http://a/../g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
217 self.checkJoin(RFC1808_BASE, '../../../../g', 'http://a/../../g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
218 self.checkJoin(RFC1808_BASE, '/./g', 'http://a/./g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
219 self.checkJoin(RFC1808_BASE, '/../g', 'http://a/../g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
220 self.checkJoin(RFC1808_BASE, 'g.', 'http://a/b/c/g.')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
221 self.checkJoin(RFC1808_BASE, '.g', 'http://a/b/c/.g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
222 self.checkJoin(RFC1808_BASE, 'g..', 'http://a/b/c/g..')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
223 self.checkJoin(RFC1808_BASE, '..g', 'http://a/b/c/..g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
224 self.checkJoin(RFC1808_BASE, './../g', 'http://a/b/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
225 self.checkJoin(RFC1808_BASE, './g/.', 'http://a/b/c/g/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
226 self.checkJoin(RFC1808_BASE, 'g/./h', 'http://a/b/c/g/h')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
227 self.checkJoin(RFC1808_BASE, 'g/../h', 'http://a/b/c/h')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
228
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
229 # RFC 1808 and RFC 1630 disagree on these (according to RFC 1808),
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
230 # so we'll not actually run these tests (which expect 1808 behavior).
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
231 #self.checkJoin(RFC1808_BASE, 'http:g', 'http:g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
232 #self.checkJoin(RFC1808_BASE, 'http:', 'http:')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
233
69366
495d12196487 Issue #11467: Fix urlparse behavior when handling urls which contains scheme specific part only digits.
Senthil Kumaran <orsenthil@gmail.com>
parents: 66983
diff changeset
234 def test_RFC2368(self):
495d12196487 Issue #11467: Fix urlparse behavior when handling urls which contains scheme specific part only digits.
Senthil Kumaran <orsenthil@gmail.com>
parents: 66983
diff changeset
235 # Issue 11467: path that starts with a number is not parsed correctly
495d12196487 Issue #11467: Fix urlparse behavior when handling urls which contains scheme specific part only digits.
Senthil Kumaran <orsenthil@gmail.com>
parents: 66983
diff changeset
236 self.assertEqual(urllib.parse.urlparse('mailto:1337@example.org'),
495d12196487 Issue #11467: Fix urlparse behavior when handling urls which contains scheme specific part only digits.
Senthil Kumaran <orsenthil@gmail.com>
parents: 66983
diff changeset
237 ('mailto', '', '1337@example.org', '', '', ''))
495d12196487 Issue #11467: Fix urlparse behavior when handling urls which contains scheme specific part only digits.
Senthil Kumaran <orsenthil@gmail.com>
parents: 66983
diff changeset
238
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
239 def test_RFC2396(self):
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
240 # cases from RFC 2396
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
241
15742
abb94609318e Add test cases based on RFC 1808. So now we actually have a test suite
Fred Drake <fdrake@acm.org>
parents: 13832
diff changeset
242
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
243 self.checkJoin(RFC2396_BASE, 'g:h', 'g:h')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
244 self.checkJoin(RFC2396_BASE, 'g', 'http://a/b/c/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
245 self.checkJoin(RFC2396_BASE, './g', 'http://a/b/c/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
246 self.checkJoin(RFC2396_BASE, 'g/', 'http://a/b/c/g/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
247 self.checkJoin(RFC2396_BASE, '/g', 'http://a/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
248 self.checkJoin(RFC2396_BASE, '//g', 'http://g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
249 self.checkJoin(RFC2396_BASE, 'g?y', 'http://a/b/c/g?y')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
250 self.checkJoin(RFC2396_BASE, '#s', 'http://a/b/c/d;p?q#s')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
251 self.checkJoin(RFC2396_BASE, 'g#s', 'http://a/b/c/g#s')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
252 self.checkJoin(RFC2396_BASE, 'g?y#s', 'http://a/b/c/g?y#s')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
253 self.checkJoin(RFC2396_BASE, 'g;x', 'http://a/b/c/g;x')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
254 self.checkJoin(RFC2396_BASE, 'g;x?y#s', 'http://a/b/c/g;x?y#s')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
255 self.checkJoin(RFC2396_BASE, '.', 'http://a/b/c/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
256 self.checkJoin(RFC2396_BASE, './', 'http://a/b/c/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
257 self.checkJoin(RFC2396_BASE, '..', 'http://a/b/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
258 self.checkJoin(RFC2396_BASE, '../', 'http://a/b/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
259 self.checkJoin(RFC2396_BASE, '../g', 'http://a/b/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
260 self.checkJoin(RFC2396_BASE, '../..', 'http://a/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
261 self.checkJoin(RFC2396_BASE, '../../', 'http://a/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
262 self.checkJoin(RFC2396_BASE, '../../g', 'http://a/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
263 self.checkJoin(RFC2396_BASE, '', RFC2396_BASE)
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
264 self.checkJoin(RFC2396_BASE, '../../../g', 'http://a/../g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
265 self.checkJoin(RFC2396_BASE, '../../../../g', 'http://a/../../g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
266 self.checkJoin(RFC2396_BASE, '/./g', 'http://a/./g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
267 self.checkJoin(RFC2396_BASE, '/../g', 'http://a/../g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
268 self.checkJoin(RFC2396_BASE, 'g.', 'http://a/b/c/g.')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
269 self.checkJoin(RFC2396_BASE, '.g', 'http://a/b/c/.g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
270 self.checkJoin(RFC2396_BASE, 'g..', 'http://a/b/c/g..')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
271 self.checkJoin(RFC2396_BASE, '..g', 'http://a/b/c/..g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
272 self.checkJoin(RFC2396_BASE, './../g', 'http://a/b/g')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
273 self.checkJoin(RFC2396_BASE, './g/.', 'http://a/b/c/g/')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
274 self.checkJoin(RFC2396_BASE, 'g/./h', 'http://a/b/c/g/h')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
275 self.checkJoin(RFC2396_BASE, 'g/../h', 'http://a/b/c/h')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
276 self.checkJoin(RFC2396_BASE, 'g;x=1/./y', 'http://a/b/c/g;x=1/y')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
277 self.checkJoin(RFC2396_BASE, 'g;x=1/../y', 'http://a/b/c/y')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
278 self.checkJoin(RFC2396_BASE, 'g?y/./x', 'http://a/b/c/g?y/./x')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
279 self.checkJoin(RFC2396_BASE, 'g?y/../x', 'http://a/b/c/g?y/../x')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
280 self.checkJoin(RFC2396_BASE, 'g#s/./x', 'http://a/b/c/g#s/./x')
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
281 self.checkJoin(RFC2396_BASE, 'g#s/../x', 'http://a/b/c/g#s/../x')
15742
abb94609318e Add test cases based on RFC 1808. So now we actually have a test suite
Fred Drake <fdrake@acm.org>
parents: 13832
diff changeset
282
48692
293df8153f61 Issue 1432. Fixes a bug caused because of the evolution
Facundo Batista <facundobatista@gmail.com>
parents: 48444
diff changeset
283 def test_RFC3986(self):
61357
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
284 # Test cases from RFC3986
48692
293df8153f61 Issue 1432. Fixes a bug caused because of the evolution
Facundo Batista <facundobatista@gmail.com>
parents: 48444
diff changeset
285 self.checkJoin(RFC3986_BASE, '?y','http://a/b/c/d;p?y')
293df8153f61 Issue 1432. Fixes a bug caused because of the evolution
Facundo Batista <facundobatista@gmail.com>
parents: 48444
diff changeset
286 self.checkJoin(RFC2396_BASE, ';x', 'http://a/b/c/;x')
61357
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
287 self.checkJoin(RFC3986_BASE, 'g:h','g:h')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
288 self.checkJoin(RFC3986_BASE, 'g','http://a/b/c/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
289 self.checkJoin(RFC3986_BASE, './g','http://a/b/c/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
290 self.checkJoin(RFC3986_BASE, 'g/','http://a/b/c/g/')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
291 self.checkJoin(RFC3986_BASE, '/g','http://a/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
292 self.checkJoin(RFC3986_BASE, '//g','http://g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
293 self.checkJoin(RFC3986_BASE, '?y','http://a/b/c/d;p?y')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
294 self.checkJoin(RFC3986_BASE, 'g?y','http://a/b/c/g?y')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
295 self.checkJoin(RFC3986_BASE, '#s','http://a/b/c/d;p?q#s')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
296 self.checkJoin(RFC3986_BASE, 'g#s','http://a/b/c/g#s')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
297 self.checkJoin(RFC3986_BASE, 'g?y#s','http://a/b/c/g?y#s')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
298 self.checkJoin(RFC3986_BASE, ';x','http://a/b/c/;x')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
299 self.checkJoin(RFC3986_BASE, 'g;x','http://a/b/c/g;x')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
300 self.checkJoin(RFC3986_BASE, 'g;x?y#s','http://a/b/c/g;x?y#s')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
301 self.checkJoin(RFC3986_BASE, '','http://a/b/c/d;p?q')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
302 self.checkJoin(RFC3986_BASE, '.','http://a/b/c/')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
303 self.checkJoin(RFC3986_BASE, './','http://a/b/c/')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
304 self.checkJoin(RFC3986_BASE, '..','http://a/b/')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
305 self.checkJoin(RFC3986_BASE, '../','http://a/b/')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
306 self.checkJoin(RFC3986_BASE, '../g','http://a/b/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
307 self.checkJoin(RFC3986_BASE, '../..','http://a/')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
308 self.checkJoin(RFC3986_BASE, '../../','http://a/')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
309 self.checkJoin(RFC3986_BASE, '../../g','http://a/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
310
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
311 #Abnormal Examples
61356
fe7e56f986cd Merged revisions 80908 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60859
diff changeset
312
61357
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
313 # The 'abnormal scenarios' are incompatible with RFC2986 parsing
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
314 # Tests are here for reference.
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
315
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
316 #self.checkJoin(RFC3986_BASE, '../../../g','http://a/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
317 #self.checkJoin(RFC3986_BASE, '../../../../g','http://a/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
318 #self.checkJoin(RFC3986_BASE, '/./g','http://a/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
319 #self.checkJoin(RFC3986_BASE, '/../g','http://a/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
320
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
321 self.checkJoin(RFC3986_BASE, 'g.','http://a/b/c/g.')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
322 self.checkJoin(RFC3986_BASE, '.g','http://a/b/c/.g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
323 self.checkJoin(RFC3986_BASE, 'g..','http://a/b/c/g..')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
324 self.checkJoin(RFC3986_BASE, '..g','http://a/b/c/..g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
325 self.checkJoin(RFC3986_BASE, './../g','http://a/b/g')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
326 self.checkJoin(RFC3986_BASE, './g/.','http://a/b/c/g/')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
327 self.checkJoin(RFC3986_BASE, 'g/./h','http://a/b/c/g/h')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
328 self.checkJoin(RFC3986_BASE, 'g/../h','http://a/b/c/h')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
329 self.checkJoin(RFC3986_BASE, 'g;x=1/./y','http://a/b/c/g;x=1/y')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
330 self.checkJoin(RFC3986_BASE, 'g;x=1/../y','http://a/b/c/y')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
331 self.checkJoin(RFC3986_BASE, 'g?y/./x','http://a/b/c/g?y/./x')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
332 self.checkJoin(RFC3986_BASE, 'g?y/../x','http://a/b/c/g?y/../x')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
333 self.checkJoin(RFC3986_BASE, 'g#s/./x','http://a/b/c/g#s/./x')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
334 self.checkJoin(RFC3986_BASE, 'g#s/../x','http://a/b/c/g#s/../x')
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
335 #self.checkJoin(RFC3986_BASE, 'http:g','http:g') # strict parser
e3a3ed614c7e Merged revisions 80910 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60616
diff changeset
336 self.checkJoin(RFC3986_BASE, 'http:g','http://a/b/c/g') #relaxed parser
48692
293df8153f61 Issue 1432. Fixes a bug caused because of the evolution
Facundo Batista <facundobatista@gmail.com>
parents: 48444
diff changeset
337
66983
7a55b808e491 Merged revisions 87329 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63716
diff changeset
338 # Test for issue9721
7a55b808e491 Merged revisions 87329 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63716
diff changeset
339 self.checkJoin('http://a/b/c/de', ';x','http://a/b/c/;x')
7a55b808e491 Merged revisions 87329 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63716
diff changeset
340
63020
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
341 def test_urljoins(self):
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
342 self.checkJoin(SIMPLE_BASE, 'g:h','g:h')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
343 self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
344 self.checkJoin(SIMPLE_BASE, 'http:','http://a/b/c/d')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
345 self.checkJoin(SIMPLE_BASE, 'g','http://a/b/c/g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
346 self.checkJoin(SIMPLE_BASE, './g','http://a/b/c/g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
347 self.checkJoin(SIMPLE_BASE, 'g/','http://a/b/c/g/')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
348 self.checkJoin(SIMPLE_BASE, '/g','http://a/g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
349 self.checkJoin(SIMPLE_BASE, '//g','http://g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
350 self.checkJoin(SIMPLE_BASE, '?y','http://a/b/c/d?y')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
351 self.checkJoin(SIMPLE_BASE, 'g?y','http://a/b/c/g?y')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
352 self.checkJoin(SIMPLE_BASE, 'g?y/./x','http://a/b/c/g?y/./x')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
353 self.checkJoin(SIMPLE_BASE, '.','http://a/b/c/')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
354 self.checkJoin(SIMPLE_BASE, './','http://a/b/c/')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
355 self.checkJoin(SIMPLE_BASE, '..','http://a/b/')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
356 self.checkJoin(SIMPLE_BASE, '../','http://a/b/')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
357 self.checkJoin(SIMPLE_BASE, '../g','http://a/b/g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
358 self.checkJoin(SIMPLE_BASE, '../..','http://a/')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
359 self.checkJoin(SIMPLE_BASE, '../../g','http://a/g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
360 self.checkJoin(SIMPLE_BASE, '../../../g','http://a/../g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
361 self.checkJoin(SIMPLE_BASE, './../g','http://a/b/g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
362 self.checkJoin(SIMPLE_BASE, './g/.','http://a/b/c/g/')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
363 self.checkJoin(SIMPLE_BASE, '/./g','http://a/./g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
364 self.checkJoin(SIMPLE_BASE, 'g/./h','http://a/b/c/g/h')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
365 self.checkJoin(SIMPLE_BASE, 'g/../h','http://a/b/c/h')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
366 self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
367 self.checkJoin(SIMPLE_BASE, 'http:','http://a/b/c/d')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
368 self.checkJoin(SIMPLE_BASE, 'http:?y','http://a/b/c/d?y')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
369 self.checkJoin(SIMPLE_BASE, 'http:g?y','http://a/b/c/g?y')
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
370 self.checkJoin(SIMPLE_BASE, 'http:g?y/./x','http://a/b/c/g?y/./x')
71470
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
371 self.checkJoin('http:///', '..','http:///')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
372 self.checkJoin('', 'http://a/b/c/g?y/./x','http://a/b/c/g?y/./x')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
373 self.checkJoin('', 'http://a/./g', 'http://a/./g')
71730
57a836eb6916 Fix closes issue12683 - urljoin to work with relative join of svn scheme.
Senthil Kumaran <senthil@uthcode.com>
parents: 71470
diff changeset
374 self.checkJoin('svn://pathtorepo/dir1', 'dir2', 'svn://pathtorepo/dir2')
71738
4957131ad9dd change the redundant svn scheme urljoin test case to svn+ssh scheme.
Senthil Kumaran <senthil@uthcode.com>
parents: 71730
diff changeset
375 self.checkJoin('svn+ssh://pathtorepo/dir1', 'dir2', 'svn+ssh://pathtorepo/dir2')
63020
4b456780c8d8 Merged revisions 82881 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61546
diff changeset
376
60614
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
377 def test_RFC2732(self):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
378 str_cases = [
60614
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
379 ('http://Test.python.org:5432/foo/', 'test.python.org', 5432),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
380 ('http://12.34.56.78:5432/foo/', '12.34.56.78', 5432),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
381 ('http://[::1]:5432/foo/', '::1', 5432),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
382 ('http://[dead:beef::1]:5432/foo/', 'dead:beef::1', 5432),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
383 ('http://[dead:beef::]:5432/foo/', 'dead:beef::', 5432),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
384 ('http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:5432/foo/',
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
385 'dead:beef:cafe:5417:affe:8fa3:deaf:feed', 5432),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
386 ('http://[::12.34.56.78]:5432/foo/', '::12.34.56.78', 5432),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
387 ('http://[::ffff:12.34.56.78]:5432/foo/',
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
388 '::ffff:12.34.56.78', 5432),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
389 ('http://Test.python.org/foo/', 'test.python.org', None),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
390 ('http://12.34.56.78/foo/', '12.34.56.78', None),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
391 ('http://[::1]/foo/', '::1', None),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
392 ('http://[dead:beef::1]/foo/', 'dead:beef::1', None),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
393 ('http://[dead:beef::]/foo/', 'dead:beef::', None),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
394 ('http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]/foo/',
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
395 'dead:beef:cafe:5417:affe:8fa3:deaf:feed', None),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
396 ('http://[::12.34.56.78]/foo/', '::12.34.56.78', None),
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
397 ('http://[::ffff:12.34.56.78]/foo/',
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
398 '::ffff:12.34.56.78', None),
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
399 ]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
400 def _encode(t):
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
401 return t[0].encode('ascii'), t[1].encode('ascii'), t[2]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
402 bytes_cases = [_encode(x) for x in str_cases]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
403 for url, hostname, port in str_cases + bytes_cases:
60614
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
404 urlparsed = urllib.parse.urlparse(url)
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
405 self.assertEqual((urlparsed.hostname, urlparsed.port) , (hostname, port))
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
406
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
407 str_cases = [
60614
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
408 'http://::12.34.56.78]/',
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
409 'http://[::1/foo/',
60859
87c98fb778b4 Merged revisions 80362 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60784
diff changeset
410 'ftp://[::1/foo/bad]/bad',
60784
d1d209f2c803 Merged revisions 80277 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60614
diff changeset
411 'http://[::1/foo/bad]/bad',
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
412 'http://[::ffff:12.34.56.78']
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
413 bytes_cases = [x.encode('ascii') for x in str_cases]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
414 for invalid_url in str_cases + bytes_cases:
60859
87c98fb778b4 Merged revisions 80362 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60784
diff changeset
415 self.assertRaises(ValueError, urllib.parse.urlparse, invalid_url)
60614
51b85516d7f9 Merged revisions 80101 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 60538
diff changeset
416
25812
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
417 def test_urldefrag(self):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
418 str_cases = [
25812
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
419 ('http://python.org#frag', 'http://python.org', 'frag'),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
420 ('http://python.org', 'http://python.org', ''),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
421 ('http://python.org/#frag', 'http://python.org/', 'frag'),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
422 ('http://python.org/', 'http://python.org/', ''),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
423 ('http://python.org/?q#frag', 'http://python.org/?q', 'frag'),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
424 ('http://python.org/?q', 'http://python.org/?q', ''),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
425 ('http://python.org/p#frag', 'http://python.org/p', 'frag'),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
426 ('http://python.org/p?q', 'http://python.org/p?q', ''),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
427 (RFC1808_BASE, 'http://a/b/c/d;p?q', 'f'),
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
428 (RFC2396_BASE, 'http://a/b/c/d;p?q', ''),
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
429 ]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
430 def _encode(t):
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
431 return type(t)(x.encode('ascii') for x in t)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
432 bytes_cases = [_encode(x) for x in str_cases]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
433 for url, defrag, frag in str_cases + bytes_cases:
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
434 result = urllib.parse.urldefrag(url)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
435 self.assertEqual(result.geturl(), url)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
436 self.assertEqual(result, (defrag, frag))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
437 self.assertEqual(result.url, defrag)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
438 self.assertEqual(result.fragment, frag)
25812
5d352de94415 Make sure we test urlsplit() / urlunsplit() directly, rather than
Fred Drake <fdrake@acm.org>
parents: 25785
diff changeset
439
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
440 def test_urlsplit_attributes(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
441 url = "HTTP://WWW.PYTHON.ORG/doc/#frag"
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
442 p = urllib.parse.urlsplit(url)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
443 self.assertEqual(p.scheme, "http")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
444 self.assertEqual(p.netloc, "WWW.PYTHON.ORG")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
445 self.assertEqual(p.path, "/doc/")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
446 self.assertEqual(p.query, "")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
447 self.assertEqual(p.fragment, "frag")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
448 self.assertEqual(p.username, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
449 self.assertEqual(p.password, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
450 self.assertEqual(p.hostname, "www.python.org")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
451 self.assertEqual(p.port, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
452 # geturl() won't return exactly the original URL in this case
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
453 # since the scheme is always case-normalized
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
454 # We handle this by ignoring the first 4 characters of the URL
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
455 self.assertEqual(p.geturl()[4:], url[4:])
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
456
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
457 url = "http://User:Pass@www.python.org:080/doc/?query=yes#frag"
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
458 p = urllib.parse.urlsplit(url)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
459 self.assertEqual(p.scheme, "http")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
460 self.assertEqual(p.netloc, "User:Pass@www.python.org:080")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
461 self.assertEqual(p.path, "/doc/")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
462 self.assertEqual(p.query, "query=yes")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
463 self.assertEqual(p.fragment, "frag")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
464 self.assertEqual(p.username, "User")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
465 self.assertEqual(p.password, "Pass")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
466 self.assertEqual(p.hostname, "www.python.org")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
467 self.assertEqual(p.port, 80)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
468 self.assertEqual(p.geturl(), url)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
469
44535
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
470 # Addressing issue1698, which suggests Username can contain
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
471 # "@" characters. Though not RFC compliant, many ftp sites allow
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
472 # and request email addresses as usernames.
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
473
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
474 url = "http://User@example.com:Pass@www.python.org:080/doc/?query=yes#frag"
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
475 p = urllib.parse.urlsplit(url)
44535
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
476 self.assertEqual(p.scheme, "http")
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
477 self.assertEqual(p.netloc, "User@example.com:Pass@www.python.org:080")
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
478 self.assertEqual(p.path, "/doc/")
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
479 self.assertEqual(p.query, "query=yes")
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
480 self.assertEqual(p.fragment, "frag")
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
481 self.assertEqual(p.username, "User@example.com")
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
482 self.assertEqual(p.password, "Pass")
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
483 self.assertEqual(p.hostname, "www.python.org")
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
484 self.assertEqual(p.port, 80)
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
485 self.assertEqual(p.geturl(), url)
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
486
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
487 # And check them all again, only with bytes this time
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
488 url = b"HTTP://WWW.PYTHON.ORG/doc/#frag"
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
489 p = urllib.parse.urlsplit(url)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
490 self.assertEqual(p.scheme, b"http")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
491 self.assertEqual(p.netloc, b"WWW.PYTHON.ORG")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
492 self.assertEqual(p.path, b"/doc/")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
493 self.assertEqual(p.query, b"")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
494 self.assertEqual(p.fragment, b"frag")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
495 self.assertEqual(p.username, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
496 self.assertEqual(p.password, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
497 self.assertEqual(p.hostname, b"www.python.org")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
498 self.assertEqual(p.port, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
499 self.assertEqual(p.geturl()[4:], url[4:])
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
500
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
501 url = b"http://User:Pass@www.python.org:080/doc/?query=yes#frag"
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
502 p = urllib.parse.urlsplit(url)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
503 self.assertEqual(p.scheme, b"http")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
504 self.assertEqual(p.netloc, b"User:Pass@www.python.org:080")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
505 self.assertEqual(p.path, b"/doc/")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
506 self.assertEqual(p.query, b"query=yes")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
507 self.assertEqual(p.fragment, b"frag")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
508 self.assertEqual(p.username, b"User")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
509 self.assertEqual(p.password, b"Pass")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
510 self.assertEqual(p.hostname, b"www.python.org")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
511 self.assertEqual(p.port, 80)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
512 self.assertEqual(p.geturl(), url)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
513
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
514 url = b"http://User@example.com:Pass@www.python.org:080/doc/?query=yes#frag"
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
515 p = urllib.parse.urlsplit(url)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
516 self.assertEqual(p.scheme, b"http")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
517 self.assertEqual(p.netloc, b"User@example.com:Pass@www.python.org:080")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
518 self.assertEqual(p.path, b"/doc/")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
519 self.assertEqual(p.query, b"query=yes")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
520 self.assertEqual(p.fragment, b"frag")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
521 self.assertEqual(p.username, b"User@example.com")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
522 self.assertEqual(p.password, b"Pass")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
523 self.assertEqual(p.hostname, b"www.python.org")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
524 self.assertEqual(p.port, 80)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
525 self.assertEqual(p.geturl(), url)
44535
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
526
77120
d769e64aed79 Issue #14036: return None when port in urlparse cross 65535
Senthil Kumaran <senthil@uthcode.com>
parents: 77052
diff changeset
527 # Verify an illegal port is returned as None
d769e64aed79 Issue #14036: return None when port in urlparse cross 65535
Senthil Kumaran <senthil@uthcode.com>
parents: 77052
diff changeset
528 url = b"HTTP://WWW.PYTHON.ORG:65536/doc/#frag"
d769e64aed79 Issue #14036: return None when port in urlparse cross 65535
Senthil Kumaran <senthil@uthcode.com>
parents: 77052
diff changeset
529 p = urllib.parse.urlsplit(url)
d769e64aed79 Issue #14036: return None when port in urlparse cross 65535
Senthil Kumaran <senthil@uthcode.com>
parents: 77052
diff changeset
530 self.assertEqual(p.port, None)
d769e64aed79 Issue #14036: return None when port in urlparse cross 65535
Senthil Kumaran <senthil@uthcode.com>
parents: 77052
diff changeset
531
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
532 def test_attributes_bad_port(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
533 """Check handling of non-integer ports."""
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
534 p = urllib.parse.urlsplit("http://www.example.net:foo")
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
535 self.assertEqual(p.netloc, "www.example.net:foo")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
536 self.assertRaises(ValueError, lambda: p.port)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
537
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
538 p = urllib.parse.urlparse("http://www.example.net:foo")
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
539 self.assertEqual(p.netloc, "www.example.net:foo")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
540 self.assertRaises(ValueError, lambda: p.port)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
541
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
542 # Once again, repeat ourselves to test bytes
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
543 p = urllib.parse.urlsplit(b"http://www.example.net:foo")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
544 self.assertEqual(p.netloc, b"www.example.net:foo")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
545 self.assertRaises(ValueError, lambda: p.port)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
546
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
547 p = urllib.parse.urlparse(b"http://www.example.net:foo")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
548 self.assertEqual(p.netloc, b"www.example.net:foo")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
549 self.assertRaises(ValueError, lambda: p.port)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
550
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
551 def test_attributes_without_netloc(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
552 # This example is straight from RFC 3261. It looks like it
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
553 # should allow the username, hostname, and port to be filled
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
554 # in, but doesn't. Since it's a URI and doesn't use the
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
555 # scheme://netloc syntax, the netloc and related attributes
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
556 # should be left empty.
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
557 uri = "sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15"
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
558 p = urllib.parse.urlsplit(uri)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
559 self.assertEqual(p.netloc, "")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
560 self.assertEqual(p.username, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
561 self.assertEqual(p.password, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
562 self.assertEqual(p.hostname, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
563 self.assertEqual(p.port, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
564 self.assertEqual(p.geturl(), uri)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
565
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
566 p = urllib.parse.urlparse(uri)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
567 self.assertEqual(p.netloc, "")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
568 self.assertEqual(p.username, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
569 self.assertEqual(p.password, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
570 self.assertEqual(p.hostname, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
571 self.assertEqual(p.port, None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
572 self.assertEqual(p.geturl(), uri)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35290
diff changeset
573
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
574 # You guessed it, repeating the test with bytes input
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
575 uri = b"sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15"
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
576 p = urllib.parse.urlsplit(uri)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
577 self.assertEqual(p.netloc, b"")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
578 self.assertEqual(p.username, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
579 self.assertEqual(p.password, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
580 self.assertEqual(p.hostname, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
581 self.assertEqual(p.port, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
582 self.assertEqual(p.geturl(), uri)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
583
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
584 p = urllib.parse.urlparse(uri)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
585 self.assertEqual(p.netloc, b"")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
586 self.assertEqual(p.username, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
587 self.assertEqual(p.password, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
588 self.assertEqual(p.hostname, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
589 self.assertEqual(p.port, None)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
590 self.assertEqual(p.geturl(), uri)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
591
44535
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
592 def test_noslash(self):
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
593 # Issue 1637: http://foo.com?query is legal
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47201
diff changeset
594 self.assertEqual(urllib.parse.urlparse("http://example.com?blahblah=/foo"),
44535
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
595 ('http', 'example.com', '', '', 'blahblah=/foo', ''))
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
596 self.assertEqual(urllib.parse.urlparse(b"http://example.com?blahblah=/foo"),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
597 (b'http', b'example.com', b'', b'', b'blahblah=/foo', b''))
44535
420fe6d7d5f4 Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44291
diff changeset
598
63716
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
599 def test_withoutscheme(self):
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
600 # Test urlparse without scheme
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
601 # Issue 754016: urlparse goes wrong with IP:port without scheme
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
602 # RFC 1808 specifies that netloc should start with //, urlparse expects
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
603 # the same, otherwise it classifies the portion of url as path.
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
604 self.assertEqual(urllib.parse.urlparse("path"),
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
605 ('','','path','','',''))
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
606 self.assertEqual(urllib.parse.urlparse("//www.python.org:80"),
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
607 ('','www.python.org:80','','','',''))
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
608 self.assertEqual(urllib.parse.urlparse("http://www.python.org:80"),
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
609 ('http','www.python.org:80','','','',''))
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
610 # Repeat for bytes input
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
611 self.assertEqual(urllib.parse.urlparse(b"path"),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
612 (b'',b'',b'path',b'',b'',b''))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
613 self.assertEqual(urllib.parse.urlparse(b"//www.python.org:80"),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
614 (b'',b'www.python.org:80',b'',b'',b'',b''))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
615 self.assertEqual(urllib.parse.urlparse(b"http://www.python.org:80"),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
616 (b'http',b'www.python.org:80',b'',b'',b'',b''))
63716
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
617
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
618 def test_portseparator(self):
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
619 # Issue 754016 makes changes for port separator ':' from scheme separator
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
620 self.assertEqual(urllib.parse.urlparse("path:80"),
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
621 ('','','path:80','','',''))
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
622 self.assertEqual(urllib.parse.urlparse("http:"),('http','','','','',''))
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
623 self.assertEqual(urllib.parse.urlparse("https:"),('https','','','','',''))
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
624 self.assertEqual(urllib.parse.urlparse("http://www.python.org:80"),
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
625 ('http','www.python.org:80','','','',''))
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
626 # As usual, need to check bytes input as well
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
627 self.assertEqual(urllib.parse.urlparse(b"path:80"),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
628 (b'',b'',b'path:80',b'',b'',b''))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
629 self.assertEqual(urllib.parse.urlparse(b"http:"),(b'http',b'',b'',b'',b'',b''))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
630 self.assertEqual(urllib.parse.urlparse(b"https:"),(b'https',b'',b'',b'',b'',b''))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
631 self.assertEqual(urllib.parse.urlparse(b"http://www.python.org:80"),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
632 (b'http',b'www.python.org:80',b'',b'',b'',b''))
63716
915b028b954d Merged revisions 83701 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 63020
diff changeset
633
48444
83f4b777d94c Issue 3314. The sys module is used in an error case.
Facundo Batista <facundobatista@gmail.com>
parents: 48334
diff changeset
634 def test_usingsys(self):
83f4b777d94c Issue 3314. The sys module is used in an error case.
Facundo Batista <facundobatista@gmail.com>
parents: 48334
diff changeset
635 # Issue 3314: sys module is used in the error
83f4b777d94c Issue 3314. The sys module is used in an error case.
Facundo Batista <facundobatista@gmail.com>
parents: 48334
diff changeset
636 self.assertRaises(TypeError, urllib.parse.urlencode, "foo")
83f4b777d94c Issue 3314. The sys module is used in an error case.
Facundo Batista <facundobatista@gmail.com>
parents: 48334
diff changeset
637
58952
8b16f1408249 Merged revisions 78234 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 52478
diff changeset
638 def test_anyscheme(self):
8b16f1408249 Merged revisions 78234 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 52478
diff changeset
639 # Issue 7904: s3://foo.com/stuff has netloc "foo.com".
58955
474ec5685a2d urllib.urlparse -> urllib.parse.urlparse
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58952
diff changeset
640 self.assertEqual(urllib.parse.urlparse("s3://foo.com/stuff"),
474ec5685a2d urllib.urlparse -> urllib.parse.urlparse
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58952
diff changeset
641 ('s3', 'foo.com', '/stuff', '', '', ''))
474ec5685a2d urllib.urlparse -> urllib.parse.urlparse
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58952
diff changeset
642 self.assertEqual(urllib.parse.urlparse("x-newscheme://foo.com/stuff"),
474ec5685a2d urllib.urlparse -> urllib.parse.urlparse
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58952
diff changeset
643 ('x-newscheme', 'foo.com', '/stuff', '', '', ''))
77045
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
644 self.assertEqual(urllib.parse.urlparse("x-newscheme://foo.com/stuff?query#fragment"),
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
645 ('x-newscheme', 'foo.com', '/stuff', '', 'query', 'fragment'))
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
646 self.assertEqual(urllib.parse.urlparse("x-newscheme://foo.com/stuff?query"),
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
647 ('x-newscheme', 'foo.com', '/stuff', '', 'query', ''))
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
648
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
649 # And for bytes...
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
650 self.assertEqual(urllib.parse.urlparse(b"s3://foo.com/stuff"),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
651 (b's3', b'foo.com', b'/stuff', b'', b'', b''))
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
652 self.assertEqual(urllib.parse.urlparse(b"x-newscheme://foo.com/stuff"),
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
653 (b'x-newscheme', b'foo.com', b'/stuff', b'', b'', b''))
77045
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
654 self.assertEqual(urllib.parse.urlparse(b"x-newscheme://foo.com/stuff?query#fragment"),
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
655 (b'x-newscheme', b'foo.com', b'/stuff', b'', b'query', b'fragment'))
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
656 self.assertEqual(urllib.parse.urlparse(b"x-newscheme://foo.com/stuff?query"),
a9d43e21f7d8 Issue9374 - Generic parsing of query and fragment portion of urls for any scheme
Senthil Kumaran <senthil@uthcode.com>
parents: 75073
diff changeset
657 (b'x-newscheme', b'foo.com', b'/stuff', b'', b'query', b''))
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
658
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
659 def test_mixed_types_rejected(self):
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
660 # Several functions that process either strings or ASCII encoded bytes
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
661 # accept multiple arguments. Check they reject mixed type input
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
662 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
663 urllib.parse.urlparse("www.python.org", b"http")
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
664 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
665 urllib.parse.urlparse(b"www.python.org", "http")
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
666 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
667 urllib.parse.urlsplit("www.python.org", b"http")
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
668 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
669 urllib.parse.urlsplit(b"www.python.org", "http")
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
670 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
671 urllib.parse.urlunparse(( b"http", "www.python.org","","","",""))
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
672 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
673 urllib.parse.urlunparse(("http", b"www.python.org","","","",""))
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
674 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
675 urllib.parse.urlunsplit((b"http", "www.python.org","","",""))
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
676 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
677 urllib.parse.urlunsplit(("http", b"www.python.org","","",""))
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
678 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
679 urllib.parse.urljoin("http://python.org", b"http://python.org")
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66561
diff changeset
680 with self.assertRaisesRegex(TypeError, "Cannot mix str"):
66561
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
681 urllib.parse.urljoin(b"http://python.org", "http://python.org")
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
682
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
683 def _check_result_type(self, str_type):
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
684 num_args = len(str_type._fields)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
685 bytes_type = str_type._encoded_counterpart
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
686 self.assertIs(bytes_type._decoded_counterpart, str_type)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
687 str_args = ('',) * num_args
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
688 bytes_args = (b'',) * num_args
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
689 str_result = str_type(*str_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
690 bytes_result = bytes_type(*bytes_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
691 encoding = 'ascii'
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
692 errors = 'strict'
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
693 self.assertEqual(str_result, str_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
694 self.assertEqual(bytes_result.decode(), str_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
695 self.assertEqual(bytes_result.decode(), str_result)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
696 self.assertEqual(bytes_result.decode(encoding), str_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
697 self.assertEqual(bytes_result.decode(encoding), str_result)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
698 self.assertEqual(bytes_result.decode(encoding, errors), str_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
699 self.assertEqual(bytes_result.decode(encoding, errors), str_result)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
700 self.assertEqual(bytes_result, bytes_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
701 self.assertEqual(str_result.encode(), bytes_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
702 self.assertEqual(str_result.encode(), bytes_result)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
703 self.assertEqual(str_result.encode(encoding), bytes_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
704 self.assertEqual(str_result.encode(encoding), bytes_result)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
705 self.assertEqual(str_result.encode(encoding, errors), bytes_args)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
706 self.assertEqual(str_result.encode(encoding, errors), bytes_result)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
707
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
708 def test_result_pairs(self):
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
709 # Check encoding and decoding between result pairs
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
710 result_types = [
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
711 urllib.parse.DefragResult,
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
712 urllib.parse.SplitResult,
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
713 urllib.parse.ParseResult,
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
714 ]
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
715 for result_type in result_types:
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
716 self._check_result_type(result_type)
e44410e5928e Issue 9873: the URL parsing functions now accept ASCII encoded byte sequences in addition to character strings
Nick Coghlan <ncoghlan@gmail.com>
parents: 63715
diff changeset
717
67589
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
718 def test_parse_qs_encoding(self):
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
719 result = urllib.parse.parse_qs("key=\u0141%E9", encoding="latin-1")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
720 self.assertEqual(result, {'key': ['\u0141\xE9']})
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
721 result = urllib.parse.parse_qs("key=\u0141%C3%A9", encoding="utf-8")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
722 self.assertEqual(result, {'key': ['\u0141\xE9']})
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
723 result = urllib.parse.parse_qs("key=\u0141%C3%A9", encoding="ascii")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
724 self.assertEqual(result, {'key': ['\u0141\ufffd\ufffd']})
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
725 result = urllib.parse.parse_qs("key=\u0141%E9-", encoding="ascii")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
726 self.assertEqual(result, {'key': ['\u0141\ufffd-']})
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
727 result = urllib.parse.parse_qs("key=\u0141%E9-", encoding="ascii",
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
728 errors="ignore")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
729 self.assertEqual(result, {'key': ['\u0141-']})
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
730
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
731 def test_parse_qsl_encoding(self):
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
732 result = urllib.parse.parse_qsl("key=\u0141%E9", encoding="latin-1")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
733 self.assertEqual(result, [('key', '\u0141\xE9')])
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
734 result = urllib.parse.parse_qsl("key=\u0141%C3%A9", encoding="utf-8")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
735 self.assertEqual(result, [('key', '\u0141\xE9')])
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
736 result = urllib.parse.parse_qsl("key=\u0141%C3%A9", encoding="ascii")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
737 self.assertEqual(result, [('key', '\u0141\ufffd\ufffd')])
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
738 result = urllib.parse.parse_qsl("key=\u0141%E9-", encoding="ascii")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
739 self.assertEqual(result, [('key', '\u0141\ufffd-')])
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
740 result = urllib.parse.parse_qsl("key=\u0141%E9-", encoding="ascii",
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
741 errors="ignore")
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
742 self.assertEqual(result, [('key', '\u0141-')])
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
743
71470
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
744 def test_splitnport(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
745 # Normal cases are exercised by other tests; ensure that we also
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
746 # catch cases with no port specified. (testcase ensuring coverage)
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
747 result = urllib.parse.splitnport('parrot:88')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
748 self.assertEqual(result, ('parrot', 88))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
749 result = urllib.parse.splitnport('parrot')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
750 self.assertEqual(result, ('parrot', -1))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
751 result = urllib.parse.splitnport('parrot', 55)
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
752 self.assertEqual(result, ('parrot', 55))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
753 result = urllib.parse.splitnport('parrot:')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
754 self.assertEqual(result, ('parrot', None))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
755
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
756 def test_splitquery(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
757 # Normal cases are exercised by other tests; ensure that we also
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
758 # catch cases with no port specified (testcase ensuring coverage)
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
759 result = urllib.parse.splitquery('http://python.org/fake?foo=bar')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
760 self.assertEqual(result, ('http://python.org/fake', 'foo=bar'))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
761 result = urllib.parse.splitquery('http://python.org/fake?foo=bar?')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
762 self.assertEqual(result, ('http://python.org/fake?foo=bar', ''))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
763 result = urllib.parse.splitquery('http://python.org/fake')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
764 self.assertEqual(result, ('http://python.org/fake', None))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
765
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
766 def test_splitvalue(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
767 # Normal cases are exercised by other tests; test pathological cases
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
768 # with no key/value pairs. (testcase ensuring coverage)
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
769 result = urllib.parse.splitvalue('foo=bar')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
770 self.assertEqual(result, ('foo', 'bar'))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
771 result = urllib.parse.splitvalue('foo=')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
772 self.assertEqual(result, ('foo', ''))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
773 result = urllib.parse.splitvalue('foobar')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
774 self.assertEqual(result, ('foobar', None))
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
775
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
776 def test_to_bytes(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
777 result = urllib.parse.to_bytes('http://www.python.org')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
778 self.assertEqual(result, 'http://www.python.org')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
779 self.assertRaises(UnicodeError, urllib.parse.to_bytes,
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
780 'http://www.python.org/medi\u00e6val')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
781
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
782 def test_urlencode_sequences(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
783 # Other tests incidentally urlencode things; test non-covered cases:
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
784 # Sequence and object values.
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
785 result = urllib.parse.urlencode({'a': [1, 2], 'b': (3, 4, 5)}, True)
75073
4a31f6b11e7a Merge from 3.1: Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 72985
diff changeset
786 # we cannot rely on ordering here
4a31f6b11e7a Merge from 3.1: Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 72985
diff changeset
787 assert set(result.split('&')) == {'a=1', 'a=2', 'b=3', 'b=4', 'b=5'}
71470
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
788
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
789 class Trivial:
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
790 def __str__(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
791 return 'trivial'
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
792
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
793 result = urllib.parse.urlencode({'a': Trivial()}, True)
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
794 self.assertEqual(result, 'a=trivial')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
795
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
796 def test_quote_from_bytes(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
797 self.assertRaises(TypeError, urllib.parse.quote_from_bytes, 'foo')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
798 result = urllib.parse.quote_from_bytes(b'archaeological arcana')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
799 self.assertEqual(result, 'archaeological%20arcana')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
800 result = urllib.parse.quote_from_bytes(b'')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
801 self.assertEqual(result, '')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
802
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
803 def test_unquote_to_bytes(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
804 result = urllib.parse.unquote_to_bytes('abc%20def')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
805 self.assertEqual(result, b'abc def')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
806 result = urllib.parse.unquote_to_bytes('')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
807 self.assertEqual(result, b'')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
808
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
809 def test_quote_errors(self):
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
810 self.assertRaises(TypeError, urllib.parse.quote, b'foo',
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
811 encoding='utf-8')
e171db785c37 Fix closes issue12581 - Increase the urllib.parse test coverage. Patch by Petter Haggholm.
Senthil Kumaran <senthil@uthcode.com>
parents: 69367
diff changeset
812 self.assertRaises(TypeError, urllib.parse.quote, b'foo', errors='strict')
67589
7f8888b4fdfc test_urlparse: add tests for encoding and errors arguments
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66982
diff changeset
813
77052
9f6b7576c08c #14072: Fix parsing of tel URIs in urlparse by making the check for ports stricter.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 77045
diff changeset
814 def test_issue14072(self):
9f6b7576c08c #14072: Fix parsing of tel URIs in urlparse by making the check for ports stricter.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 77045
diff changeset
815 p1 = urllib.parse.urlsplit('tel:+31-641044153')
9f6b7576c08c #14072: Fix parsing of tel URIs in urlparse by making the check for ports stricter.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 77045
diff changeset
816 self.assertEqual(p1.scheme, 'tel')
9f6b7576c08c #14072: Fix parsing of tel URIs in urlparse by making the check for ports stricter.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 77045
diff changeset
817 self.assertEqual(p1.path, '+31-641044153')
9f6b7576c08c #14072: Fix parsing of tel URIs in urlparse by making the check for ports stricter.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 77045
diff changeset
818 p2 = urllib.parse.urlsplit('tel:+31641044153')
9f6b7576c08c #14072: Fix parsing of tel URIs in urlparse by making the check for ports stricter.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 77045
diff changeset
819 self.assertEqual(p2.scheme, 'tel')
9f6b7576c08c #14072: Fix parsing of tel URIs in urlparse by making the check for ports stricter.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 77045
diff changeset
820 self.assertEqual(p2.path, '+31641044153')
58952
8b16f1408249 Merged revisions 78234 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 52478
diff changeset
821
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
822 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 44535
diff changeset
823 support.run_unittest(UrlParseTestCase)
15742
abb94609318e Add test cases based on RFC 1808. So now we actually have a test suite
Fred Drake <fdrake@acm.org>
parents: 13832
diff changeset
824
22474
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
825 if __name__ == "__main__":
7aded6d0696e added RFC 2396 tests from Aaron Swartz included in bug # 450225.
Skip Montanaro <skip@pobox.com>
parents: 22379
diff changeset
826 test_main()