aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_csv.py
diff options
context:
space:
mode:
authorDong-hee Na <donghee.na@python.org>2021-10-09 23:50:12 +0900
committerGitHub <noreply@github.com>2021-10-09 23:50:12 +0900
commit34bbc87b2ddbaf245fbed6443c3e620f80c6a843 (patch)
treebbde8e4f2c60df913b5cdf47f50300fe40fd3feb /Lib/test/test_csv.py
parent5e173f5db17cbb2e3f2139a3c5ccb6b81ac59785 (diff)
downloadcpython-34bbc87b2ddbaf245fbed6443c3e620f80c6a843.tar.gz
cpython-34bbc87b2ddbaf245fbed6443c3e620f80c6a843.zip
bpo-20028: Improve error message of csv.Dialect when initializing (GH-28705)
Diffstat (limited to 'Lib/test/test_csv.py')
-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 09e72a71f1d..6e5dfc63d43 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 = ";"