]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-70835: Clarify error message for CSV file opened with wrong newline (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 10 Jan 2024 13:26:04 +0000 (14:26 +0100)
committerGitHub <noreply@github.com>
Wed, 10 Jan 2024 13:26:04 +0000 (13:26 +0000)
Based on patch by SilentGhost.
(cherry picked from commit 568d220993fa9b4b812ff1b425edd80dbe17dda9)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Lib/test/test_csv.py
Modules/_csv.c

index bc9961e0831f0e4f50faed9b97be17e1a4839f5f..30383698d04184ea9bcd6ae2c1e0ad5c4048184e 100644 (file)
@@ -309,13 +309,18 @@ class Test_Csv(unittest.TestCase):
                           [b'abc'], None)
 
     def test_read_eol(self):
-        self._read_test(['a,b'], [['a','b']])
-        self._read_test(['a,b\n'], [['a','b']])
-        self._read_test(['a,b\r\n'], [['a','b']])
-        self._read_test(['a,b\r'], [['a','b']])
-        self.assertRaises(csv.Error, self._read_test, ['a,b\rc,d'], [])
-        self.assertRaises(csv.Error, self._read_test, ['a,b\nc,d'], [])
-        self.assertRaises(csv.Error, self._read_test, ['a,b\r\nc,d'], [])
+        self._read_test(['a,b', 'c,d'], [['a','b'], ['c','d']])
+        self._read_test(['a,b\n', 'c,d\n'], [['a','b'], ['c','d']])
+        self._read_test(['a,b\r\n', 'c,d\r\n'], [['a','b'], ['c','d']])
+        self._read_test(['a,b\r', 'c,d\r'], [['a','b'], ['c','d']])
+
+        errmsg = "with newline=''"
+        with self.assertRaisesRegex(csv.Error, errmsg):
+            next(csv.reader(['a,b\rc,d']))
+        with self.assertRaisesRegex(csv.Error, errmsg):
+            next(csv.reader(['a,b\nc,d']))
+        with self.assertRaisesRegex(csv.Error, errmsg):
+            next(csv.reader(['a,b\r\nc,d']))
 
     def test_read_eof(self):
         self._read_test(['a,"'], [['a', '']])
index 9ab2ad266c2739b2186c0f960fed3e982d4c9c05..91cb63628a1f7b49beef2aa0c26ae14893800167 100644 (file)
@@ -841,7 +841,8 @@ parse_process_char(ReaderObj *self, _csvstate *module_state, Py_UCS4 c)
             self->state = START_RECORD;
         else {
             PyErr_Format(module_state->error_obj,
-                         "new-line character seen in unquoted field - do you need to open the file in universal-newline mode?");
+                         "new-line character seen in unquoted field - "
+                         "do you need to open the file with newline=''?");
             return -1;
         }
         break;