summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-10-09 08:35:33 -0700
committerGitHub <noreply@github.com>2021-10-09 08:35:33 -0700
commit8772935765e7a4f04f7f561e37d0c0aee71d8030 (patch)
treefdc261587efb0d1ac91d97827ee5a030aa9c7be2 /Lib/test
parent6846d6712a0894f8e1a91716c11dd79f42864216 (diff)
downloadcpython-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.py31
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 = ";"