diff options
| author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-10-09 08:35:33 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-09 08:35:33 -0700 |
| commit | 8772935765e7a4f04f7f561e37d0c0aee71d8030 (patch) | |
| tree | fdc261587efb0d1ac91d97827ee5a030aa9c7be2 /Lib/test | |
| parent | 6846d6712a0894f8e1a91716c11dd79f42864216 (diff) | |
| download | cpython-git-8772935765e7a4f04f7f561e37d0c0aee71d8030.tar.gz | |
bpo-20028: Improve error message of csv.Dialect when initializing (GH-28705)
(cherry picked from commit 34bbc87b2ddbaf245fbed6443c3e620f80c6a843)
Co-authored-by: Dong-hee Na <donghee.na@python.org>
Diffstat (limited to 'Lib/test')
| -rw-r--r-- | Lib/test/test_csv.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 09e72a71f1..6e5dfc63d4 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -897,7 +897,7 @@ class TestDialectValidity(unittest.TestCase): with self.assertRaises(csv.Error) as cm: mydialect() self.assertEqual(str(cm.exception), - '"quotechar" must be string, not int') + '"quotechar" must be string or None, not int') def test_delimiter(self): class mydialect(csv.Dialect): @@ -934,6 +934,35 @@ class TestDialectValidity(unittest.TestCase): self.assertEqual(str(cm.exception), '"delimiter" must be string, not int') + mydialect.delimiter = None + with self.assertRaises(csv.Error) as cm: + mydialect() + self.assertEqual(str(cm.exception), + '"delimiter" must be string, not NoneType') + + def test_escapechar(self): + class mydialect(csv.Dialect): + delimiter = ";" + escapechar = '\\' + doublequote = False + skipinitialspace = True + lineterminator = '\r\n' + quoting = csv.QUOTE_NONE + d = mydialect() + self.assertEqual(d.escapechar, "\\") + + mydialect.escapechar = "**" + with self.assertRaisesRegex(csv.Error, '"escapechar" must be a 1-character string'): + mydialect() + + mydialect.escapechar = b"*" + with self.assertRaisesRegex(csv.Error, '"escapechar" must be string or None, not bytes'): + mydialect() + + mydialect.escapechar = 4 + with self.assertRaisesRegex(csv.Error, '"escapechar" must be string or None, not int'): + mydialect() + def test_lineterminator(self): class mydialect(csv.Dialect): delimiter = ";" |
