diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2013-12-19 14:27:18 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-12-19 14:27:18 (GMT) |
commit | cac23a50ee2979b8c2e3472e6b13efb1a8bd4f78 (patch) | |
tree | 4844c5601937d1b2b23bde82ceecb030564e9425 /Lib/test/test_csv.py | |
parent | 800e11b4065185e8b6ccbd4ad15134c0a885b7e7 (diff) | |
download | cpython-cac23a50ee2979b8c2e3472e6b13efb1a8bd4f78.zip cpython-cac23a50ee2979b8c2e3472e6b13efb1a8bd4f78.tar.gz cpython-cac23a50ee2979b8c2e3472e6b13efb1a8bd4f78.tar.bz2 |
Issue #18829: csv.Dialect() now checks type for delimiter, escapechar and
quotechar fields. Original patch by Vajrasky Kok.
Diffstat (limited to 'Lib/test/test_csv.py')
-rw-r--r-- | Lib/test/test_csv.py | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 479ebd9..f1d14b9 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -747,6 +747,7 @@ class TestDialectValidity(unittest.TestCase): lineterminator = '\r\n' quoting = csv.QUOTE_NONE d = mydialect() + self.assertEqual(d.quoting, csv.QUOTE_NONE) mydialect.quoting = None self.assertRaises(csv.Error, mydialect) @@ -755,12 +756,21 @@ class TestDialectValidity(unittest.TestCase): mydialect.quoting = csv.QUOTE_ALL mydialect.quotechar = '"' d = mydialect() + self.assertEqual(d.quoting, csv.QUOTE_ALL) + self.assertEqual(d.quotechar, '"') + self.assertTrue(d.doublequote) mydialect.quotechar = "''" - self.assertRaises(csv.Error, mydialect) + with self.assertRaises(csv.Error) as cm: + mydialect() + self.assertEqual(str(cm.exception), + '"quotechar" must be an 1-character string') mydialect.quotechar = 4 - self.assertRaises(csv.Error, mydialect) + with self.assertRaises(csv.Error) as cm: + mydialect() + self.assertEqual(str(cm.exception), + '"quotechar" must be string, not int') def test_delimiter(self): class mydialect(csv.Dialect): @@ -771,12 +781,31 @@ class TestDialectValidity(unittest.TestCase): lineterminator = '\r\n' quoting = csv.QUOTE_NONE d = mydialect() + self.assertEqual(d.delimiter, ";") mydialect.delimiter = ":::" - self.assertRaises(csv.Error, mydialect) + with self.assertRaises(csv.Error) as cm: + mydialect() + self.assertEqual(str(cm.exception), + '"delimiter" must be an 1-character string') + + mydialect.delimiter = "" + with self.assertRaises(csv.Error) as cm: + mydialect() + self.assertEqual(str(cm.exception), + '"delimiter" must be an 1-character string') + + mydialect.delimiter = b"," + with self.assertRaises(csv.Error) as cm: + mydialect() + self.assertEqual(str(cm.exception), + '"delimiter" must be string, not bytes') mydialect.delimiter = 4 - self.assertRaises(csv.Error, mydialect) + with self.assertRaises(csv.Error) as cm: + mydialect() + self.assertEqual(str(cm.exception), + '"delimiter" must be string, not int') def test_lineterminator(self): class mydialect(csv.Dialect): @@ -787,12 +816,17 @@ class TestDialectValidity(unittest.TestCase): lineterminator = '\r\n' quoting = csv.QUOTE_NONE d = mydialect() + self.assertEqual(d.lineterminator, '\r\n') mydialect.lineterminator = ":::" d = mydialect() + self.assertEqual(d.lineterminator, ":::") mydialect.lineterminator = 4 - self.assertRaises(csv.Error, mydialect) + with self.assertRaises(csv.Error) as cm: + mydialect() + self.assertEqual(str(cm.exception), + '"lineterminator" must be a string') class TestSniffer(unittest.TestCase): |