|
|
|
@ -756,6 +756,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) |
|
|
|
@ -764,12 +765,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): |
|
|
|
@ -780,12 +790,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): |
|
|
|
@ -796,12 +825,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): |
|
|
|
|