]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-70835: Clarify error message for CSV file opened with wrong newline (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 17 Jan 2024 14:06:39 +0000 (15:06 +0100)
committerGitHub <noreply@github.com>
Wed, 17 Jan 2024 14:06:39 +0000 (15:06 +0100)
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 05653a268417990f70f92149847b4a4d55623741..1bf487bcf9bd701f2950cf0207e5f33267a0534a 100644 (file)
@@ -305,13 +305,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 7314d9c705377857c5d78ee4013ab0efd11e554f..407d6f03540d9c811c863bb0db5917776e0ca9ed 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;