Commit 8b081b7b authored by Senthil Kumaran's avatar Senthil Kumaran

merge from 3.3

#5609 - test_urllib coverage for url2pathname and pathname2url. Patch
contribution by Thomas Fenzl & Maksim Kozyarchuk
parents 34ad84d8 277e9090
...@@ -11,10 +11,12 @@ from test import support ...@@ -11,10 +11,12 @@ from test import support
import os import os
import sys import sys
import tempfile import tempfile
from nturl2path import url2pathname, pathname2url
from base64 import b64encode from base64 import b64encode
import collections import collections
def hexescape(char): def hexescape(char):
"""Escape char as RFC 2396 specifies""" """Escape char as RFC 2396 specifies"""
hex_repr = hex(ord(char))[2:].upper() hex_repr = hex(ord(char))[2:].upper()
...@@ -24,6 +26,8 @@ def hexescape(char): ...@@ -24,6 +26,8 @@ def hexescape(char):
# Shortcut for testing FancyURLopener # Shortcut for testing FancyURLopener
_urlopener = None _urlopener = None
def urlopen(url, data=None, proxies=None): def urlopen(url, data=None, proxies=None):
"""urlopen(url [, data]) -> open file-like object""" """urlopen(url [, data]) -> open file-like object"""
global _urlopener global _urlopener
...@@ -1363,6 +1367,7 @@ class URLopener_Tests(unittest.TestCase): ...@@ -1363,6 +1367,7 @@ class URLopener_Tests(unittest.TestCase):
# self.assertEqual(ftp.ftp.sock.gettimeout(), 30) # self.assertEqual(ftp.ftp.sock.gettimeout(), 30)
# ftp.close() # ftp.close()
class RequestTests(unittest.TestCase): class RequestTests(unittest.TestCase):
"""Unit tests for urllib.request.Request.""" """Unit tests for urllib.request.Request."""
...@@ -1387,25 +1392,60 @@ class RequestTests(unittest.TestCase): ...@@ -1387,25 +1392,60 @@ class RequestTests(unittest.TestCase):
self.assertEqual(request.get_method(), 'HEAD') self.assertEqual(request.get_method(), 'HEAD')
def test_main(): class URL2PathNameTests(unittest.TestCase):
support.run_unittest(
urlopen_FileTests, def test_converting_drive_letter(self):
urlopen_HttpTests, self.assertEqual(url2pathname("///C|"), 'C:')
urlopen_DataTests, self.assertEqual(url2pathname("///C:"), 'C:')
urlretrieve_FileTests, self.assertEqual(url2pathname("///C|/"), 'C:\\')
urlretrieve_HttpTests,
ProxyTests, def test_converting_when_no_drive_letter(self):
QuotingTests, # cannot end a raw string in \
UnquotingTests, self.assertEqual(url2pathname("///C/test/"), r'\\\C\test' '\\')
urlencode_Tests, self.assertEqual(url2pathname("////C/test/"), r'\\C\test' '\\')
Pathname_Tests,
Utility_Tests, def test_simple_compare(self):
URLopener_Tests, self.assertEqual(url2pathname("///C|/foo/bar/spam.foo"),
#FTPWrapperTests, r'C:\foo\bar\spam.foo')
RequestTests,
) def test_non_ascii_drive_letter(self):
self.assertRaises(IOError, url2pathname, "///\u00e8|/")
def test_roundtrip_url2pathname(self):
list_of_paths = ['C:',
r'\\\C\test\\',
r'C:\foo\bar\spam.foo'
]
for path in list_of_paths:
self.assertEqual(url2pathname(pathname2url(path)), path)
class PathName2URLTests(unittest.TestCase):
def test_converting_drive_letter(self):
self.assertEqual(pathname2url("C:"), '///C:')
self.assertEqual(pathname2url("C:\\"), '///C:')
def test_converting_when_no_drive_letter(self):
self.assertEqual(pathname2url(r"\\\folder\test" "\\"),
'/////folder/test/')
self.assertEqual(pathname2url(r"\\folder\test" "\\"),
'////folder/test/')
self.assertEqual(pathname2url(r"\folder\test" "\\"),
'/folder/test/')
def test_simple_compare(self):
self.assertEqual(pathname2url(r'C:\foo\bar\spam.foo'),
"///C:/foo/bar/spam.foo" )
def test_long_drive_letter(self):
self.assertRaises(IOError, pathname2url, "XX:\\")
def test_roundtrip_pathname2url(self):
list_of_paths = ['///C:',
'/////folder/test/',
'///C:/foo/bar/spam.foo']
for path in list_of_paths:
self.assertEqual(pathname2url(url2pathname(path)), path)
if __name__ == '__main__': if __name__ == '__main__':
test_main() unittest.main()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment