mirror of
https://github.com/python/cpython.git
synced 2025-08-02 08:02:56 +00:00
Make test_urllib.py pass. Mostly str/bytes issues.
Also fix mac toolbox glue to accept str, str8, bytes for 255-byte strings.
This commit is contained in:
parent
6718062538
commit
a098294446
3 changed files with 24 additions and 9 deletions
|
@ -30,7 +30,7 @@ class urlopen_FileTests(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
"""Setup of a temp file to use for testing"""
|
"""Setup of a temp file to use for testing"""
|
||||||
self.text = "test_urllib: %s\n" % self.__class__.__name__
|
self.text = bytes("test_urllib: %s\n" % self.__class__.__name__)
|
||||||
FILE = open(test_support.TESTFN, 'wb')
|
FILE = open(test_support.TESTFN, 'wb')
|
||||||
try:
|
try:
|
||||||
FILE.write(self.text)
|
FILE.write(self.text)
|
||||||
|
@ -57,7 +57,7 @@ class urlopen_FileTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_readline(self):
|
def test_readline(self):
|
||||||
self.assertEqual(self.text, self.returned_obj.readline())
|
self.assertEqual(self.text, self.returned_obj.readline())
|
||||||
self.assertEqual('', self.returned_obj.readline(),
|
self.assertEqual(b'', self.returned_obj.readline(),
|
||||||
"calling readline() after exhausting the file did not"
|
"calling readline() after exhausting the file did not"
|
||||||
" return an empty string")
|
" return an empty string")
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ class urlretrieve_FileTests(unittest.TestCase):
|
||||||
|
|
||||||
# Create a temporary file.
|
# Create a temporary file.
|
||||||
self.registerFileForCleanUp(test_support.TESTFN)
|
self.registerFileForCleanUp(test_support.TESTFN)
|
||||||
self.text = 'testing urllib.urlretrieve'
|
self.text = b'testing urllib.urlretrieve'
|
||||||
try:
|
try:
|
||||||
FILE = open(test_support.TESTFN, 'wb')
|
FILE = open(test_support.TESTFN, 'wb')
|
||||||
FILE.write(self.text)
|
FILE.write(self.text)
|
||||||
|
|
|
@ -245,7 +245,7 @@ class URLopener:
|
||||||
reporthook(blocknum, bs, size)
|
reporthook(blocknum, bs, size)
|
||||||
while 1:
|
while 1:
|
||||||
block = fp.read(bs)
|
block = fp.read(bs)
|
||||||
if block == "":
|
if not block:
|
||||||
break
|
break
|
||||||
read += len(block)
|
read += len(block)
|
||||||
tfp.write(block)
|
tfp.write(block)
|
||||||
|
@ -976,7 +976,7 @@ def toBytes(url):
|
||||||
|
|
||||||
def unwrap(url):
|
def unwrap(url):
|
||||||
"""unwrap('<URL:type://host/path>') --> 'type://host/path'."""
|
"""unwrap('<URL:type://host/path>') --> 'type://host/path'."""
|
||||||
url = url.strip()
|
url = str(url).strip()
|
||||||
if url[:1] == '<' and url[-1:] == '>':
|
if url[:1] == '<' and url[-1:] == '>':
|
||||||
url = url[1:-1].strip()
|
url = url[1:-1].strip()
|
||||||
if url[:4] == 'URL:': url = url[4:].strip()
|
if url[:4] == 'URL:': url = url[4:].strip()
|
||||||
|
|
|
@ -209,14 +209,29 @@ PyMac_BuildNumVersion(NumVersion t)
|
||||||
int
|
int
|
||||||
PyMac_GetStr255(PyObject *v, Str255 pbuf)
|
PyMac_GetStr255(PyObject *v, Str255 pbuf)
|
||||||
{
|
{
|
||||||
int len;
|
char *ptr;
|
||||||
if (!PyString_Check(v) || (len = PyString_Size(v)) > 255) {
|
Py_ssize_t len = 1000;
|
||||||
|
|
||||||
|
if (PyUnicode_Check(v)) {
|
||||||
|
v = _PyUnicode_AsDefaultEncodedString(v, NULL);
|
||||||
|
if (v == NULL)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (PyString_Check(v)) {
|
||||||
|
ptr = PyString_AS_STRING(v);
|
||||||
|
len = PyString_GET_SIZE(v);
|
||||||
|
}
|
||||||
|
else if (PyBytes_Check(v)) {
|
||||||
|
ptr = PyBytes_AS_STRING(v);
|
||||||
|
len = PyBytes_GET_SIZE(v);
|
||||||
|
}
|
||||||
|
if (len > 255) {
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
"Str255 arg must be string of at most 255 chars");
|
"Str255 arg must be string/bytes of at most 255 chars");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pbuf[0] = len;
|
pbuf[0] = len;
|
||||||
memcpy((char *)(pbuf+1), PyString_AsString(v), len);
|
memcpy((char *)(pbuf+1), ptr, len);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue