mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Correct test_cvs on Windows, as suggested by Raghuram Devarakonda
in issue1395. All other places in this file already use newline=''... Also check that csv.reader is given an iterable returning strings.
This commit is contained in:
parent
a2d1d7e3b2
commit
10c476db2c
2 changed files with 17 additions and 3 deletions
|
@ -6,7 +6,7 @@ import io
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
from io import StringIO
|
from io import StringIO, BytesIO
|
||||||
from tempfile import TemporaryFile
|
from tempfile import TemporaryFile
|
||||||
import csv
|
import csv
|
||||||
import gc
|
import gc
|
||||||
|
@ -211,6 +211,10 @@ class Test_Csv(unittest.TestCase):
|
||||||
['ab\0c'], None, strict = 1)
|
['ab\0c'], None, strict = 1)
|
||||||
self._read_test(['"ab"c'], [['abc']], doublequote = 0)
|
self._read_test(['"ab"c'], [['abc']], doublequote = 0)
|
||||||
|
|
||||||
|
self.assertRaises(csv.Error, self._read_test,
|
||||||
|
[b'ab\0c'], None)
|
||||||
|
|
||||||
|
|
||||||
def test_read_eol(self):
|
def test_read_eol(self):
|
||||||
self._read_test(['a,b'], [['a','b']])
|
self._read_test(['a,b'], [['a','b']])
|
||||||
self._read_test(['a,b\n'], [['a','b']])
|
self._read_test(['a,b\n'], [['a','b']])
|
||||||
|
@ -375,7 +379,7 @@ class TestDialectRegistry(unittest.TestCase):
|
||||||
|
|
||||||
class TestCsvBase(unittest.TestCase):
|
class TestCsvBase(unittest.TestCase):
|
||||||
def readerAssertEqual(self, input, expected_result):
|
def readerAssertEqual(self, input, expected_result):
|
||||||
with TemporaryFile("w+") as fileobj:
|
with TemporaryFile("w+", newline='') as fileobj:
|
||||||
fileobj.write(input)
|
fileobj.write(input)
|
||||||
fileobj.seek(0)
|
fileobj.seek(0)
|
||||||
reader = csv.reader(fileobj, dialect = self.dialect)
|
reader = csv.reader(fileobj, dialect = self.dialect)
|
||||||
|
|
|
@ -270,7 +270,7 @@ _set_str(const char *name, PyObject **target, PyObject *src, const char *dflt)
|
||||||
*target = NULL;
|
*target = NULL;
|
||||||
else if (!IS_BASESTRING(src)) {
|
else if (!IS_BASESTRING(src)) {
|
||||||
PyErr_Format(PyExc_TypeError,
|
PyErr_Format(PyExc_TypeError,
|
||||||
"\"%s\" must be an string", name);
|
"\"%s\" must be a string", name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -793,6 +793,16 @@ Reader_iternext(ReaderObj *self)
|
||||||
"newline inside string");
|
"newline inside string");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (!PyUnicode_Check(lineobj))
|
||||||
|
{
|
||||||
|
PyErr_Format(error_obj,
|
||||||
|
"Iterator should return strings, "
|
||||||
|
"not %.200s "
|
||||||
|
"(did you open the file in text mode?)",
|
||||||
|
lineobj->ob_type->tp_name
|
||||||
|
);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
++self->line_num;
|
++self->line_num;
|
||||||
line = PyUnicode_AsUnicode(lineobj);
|
line = PyUnicode_AsUnicode(lineobj);
|
||||||
linelen = PyUnicode_GetSize(lineobj);
|
linelen = PyUnicode_GetSize(lineobj);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue