diff options
author | Dong-hee Na <donghee.na@python.org> | 2021-10-09 23:50:12 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-09 23:50:12 +0900 |
commit | 34bbc87b2ddbaf245fbed6443c3e620f80c6a843 (patch) | |
tree | bbde8e4f2c60df913b5cdf47f50300fe40fd3feb /Lib/test/test_csv.py | |
parent | 5e173f5db17cbb2e3f2139a3c5ccb6b81ac59785 (diff) | |
download | cpython-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.py | 31 |
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 = ";" |