Mercurial > cpython-lru_cache-weakref
diff Lib/test/test_csv.py @ 52688:1e1dadbbdd01
Merged revisions 70997 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70997 | r.david.murray | 2009-04-01 17:26:18 -0400 (Wed, 01 Apr 2009) | 3 lines
Add tests checking the CSV module's ability to handle
embedded newlines in quoted field values.
........
| author | R. David Murray <rdmurray@bitdance.com> |
|---|---|
| date | Wed, 01 Apr 2009 22:37:58 +0000 |
| parents | 1a11717a154b |
| children | fb7b7727a731 |
line wrap: on
line diff
--- a/Lib/test/test_csv.py Wed Apr 01 21:22:20 2009 +0000 +++ b/Lib/test/test_csv.py Wed Apr 01 22:37:58 2009 +0000 @@ -162,6 +162,8 @@ quoting = csv.QUOTE_NONNUMERIC) self._write_test(['a',1,'p,q'], '"a","1","p,q"', quoting = csv.QUOTE_ALL) + self._write_test(['a\nb',1], '"a\nb","1"', + quoting = csv.QUOTE_ALL) def test_write_escape(self): self._write_test(['a',1,'p,q'], 'a,1,"p,q"', @@ -241,6 +243,7 @@ # will this fail where locale uses comma for decimals? self._read_test([',3,"5",7.3, 9'], [['', 3, '5', 7.3, 9]], quoting=csv.QUOTE_NONNUMERIC) + self._read_test(['"a\nb", 7'], [['a\nb', ' 7']]) self.assertRaises(ValueError, self._read_test, ['abc,3'], [[]], quoting=csv.QUOTE_NONNUMERIC) @@ -276,6 +279,16 @@ self.assertRaises(StopIteration, next, r) self.assertEqual(r.line_num, 3) + def test_roundtrip_quoteed_newlines(self): + with TemporaryFile("w+", newline='') as fileobj: + writer = csv.writer(fileobj) + self.assertRaises(TypeError, writer.writerows, None) + rows = [['a\nb','b'],['c','x\r\nd']] + writer.writerows(rows) + fileobj.seek(0) + for i, row in enumerate(csv.reader(fileobj)): + self.assertEqual(row, rows[i]) + class TestDialectRegistry(unittest.TestCase): def test_registry_badargs(self): self.assertRaises(TypeError, csv.list_dialects, None)
