@@ -28,14 +28,20 @@ class Test_Csv(unittest.TestCase):
28
28
in TestDialectRegistry.
29
29
"""
30
30
def _test_arg_valid (self , ctor , arg ):
31
+ ctor (arg )
31
32
self .assertRaises (TypeError , ctor )
32
33
self .assertRaises (TypeError , ctor , None )
33
- self .assertRaises (TypeError , ctor , arg , bad_attr = 0 )
34
- self .assertRaises (TypeError , ctor , arg , delimiter = 0 )
35
- self .assertRaises (TypeError , ctor , arg , delimiter = 'XX' )
34
+ self .assertRaises (TypeError , ctor , arg , bad_attr = 0 )
35
+ self .assertRaises (TypeError , ctor , arg , delimiter = '' )
36
+ self .assertRaises (TypeError , ctor , arg , escapechar = '' )
37
+ self .assertRaises (TypeError , ctor , arg , quotechar = '' )
38
+ self .assertRaises (TypeError , ctor , arg , delimiter = '^^' )
39
+ self .assertRaises (TypeError , ctor , arg , escapechar = '^^' )
40
+ self .assertRaises (TypeError , ctor , arg , quotechar = '^^' )
36
41
self .assertRaises (csv .Error , ctor , arg , 'foo' )
37
42
self .assertRaises (TypeError , ctor , arg , delimiter = None )
38
43
self .assertRaises (TypeError , ctor , arg , delimiter = 1 )
44
+ self .assertRaises (TypeError , ctor , arg , escapechar = 1 )
39
45
self .assertRaises (TypeError , ctor , arg , quotechar = 1 )
40
46
self .assertRaises (TypeError , ctor , arg , lineterminator = None )
41
47
self .assertRaises (TypeError , ctor , arg , lineterminator = 1 )
@@ -46,6 +52,40 @@ def _test_arg_valid(self, ctor, arg):
46
52
quoting = csv .QUOTE_ALL , quotechar = None )
47
53
self .assertRaises (TypeError , ctor , arg ,
48
54
quoting = csv .QUOTE_NONE , quotechar = '' )
55
+ self .assertRaises (ValueError , ctor , arg , delimiter = '\n ' )
56
+ self .assertRaises (ValueError , ctor , arg , escapechar = '\n ' )
57
+ self .assertRaises (ValueError , ctor , arg , quotechar = '\n ' )
58
+ self .assertRaises (ValueError , ctor , arg , delimiter = '\r ' )
59
+ self .assertRaises (ValueError , ctor , arg , escapechar = '\r ' )
60
+ self .assertRaises (ValueError , ctor , arg , quotechar = '\r ' )
61
+ ctor (arg , delimiter = ' ' )
62
+ ctor (arg , escapechar = ' ' )
63
+ ctor (arg , quotechar = ' ' )
64
+ ctor (arg , delimiter = '\t ' , skipinitialspace = True )
65
+ ctor (arg , escapechar = '\t ' , skipinitialspace = True )
66
+ ctor (arg , quotechar = '\t ' , skipinitialspace = True )
67
+ self .assertRaises (ValueError , ctor , arg ,
68
+ delimiter = ' ' , skipinitialspace = True )
69
+ self .assertRaises (ValueError , ctor , arg ,
70
+ escapechar = ' ' , skipinitialspace = True )
71
+ self .assertRaises (ValueError , ctor , arg ,
72
+ quotechar = ' ' , skipinitialspace = True )
73
+ ctor (arg , delimiter = '^' )
74
+ ctor (arg , escapechar = '^' )
75
+ ctor (arg , quotechar = '^' )
76
+ self .assertRaises (ValueError , ctor , arg , delimiter = '^' , escapechar = '^' )
77
+ self .assertRaises (ValueError , ctor , arg , delimiter = '^' , quotechar = '^' )
78
+ self .assertRaises (ValueError , ctor , arg , escapechar = '^' , quotechar = '^' )
79
+ ctor (arg , delimiter = '\x85 ' )
80
+ ctor (arg , escapechar = '\x85 ' )
81
+ ctor (arg , quotechar = '\x85 ' )
82
+ ctor (arg , lineterminator = '\x85 ' )
83
+ self .assertRaises (ValueError , ctor , arg ,
84
+ delimiter = '\x85 ' , lineterminator = '\x85 ' )
85
+ self .assertRaises (ValueError , ctor , arg ,
86
+ escapechar = '\x85 ' , lineterminator = '\x85 ' )
87
+ self .assertRaises (ValueError , ctor , arg ,
88
+ quotechar = '\x85 ' , lineterminator = '\x85 ' )
49
89
50
90
def test_reader_arg_valid (self ):
51
91
self ._test_arg_valid (csv .reader , [])
@@ -535,14 +575,6 @@ class unspecified():
535
575
finally :
536
576
csv .unregister_dialect ('testC' )
537
577
538
- def test_bad_dialect (self ):
539
- # Unknown parameter
540
- self .assertRaises (TypeError , csv .reader , [], bad_attr = 0 )
541
- # Bad values
542
- self .assertRaises (TypeError , csv .reader , [], delimiter = None )
543
- self .assertRaises (TypeError , csv .reader , [], quoting = - 1 )
544
- self .assertRaises (TypeError , csv .reader , [], quoting = 100 )
545
-
546
578
def test_copy (self ):
547
579
for name in csv .list_dialects ():
548
580
dialect = csv .get_dialect (name )
@@ -1088,10 +1120,15 @@ class mydialect(csv.Dialect):
1088
1120
'"lineterminator" must be a string' )
1089
1121
1090
1122
def test_invalid_chars (self ):
1091
- def create_invalid (field_name , value ):
1123
+ def create_invalid (field_name , value , ** kwargs ):
1092
1124
class mydialect (csv .Dialect ):
1093
- pass
1125
+ delimiter = ','
1126
+ quoting = csv .QUOTE_ALL
1127
+ quotechar = '"'
1128
+ lineterminator = '\r \n '
1094
1129
setattr (mydialect , field_name , value )
1130
+ for field_name , value in kwargs .items ():
1131
+ setattr (mydialect , field_name , value )
1095
1132
d = mydialect ()
1096
1133
1097
1134
for field_name in ("delimiter" , "escapechar" , "quotechar" ):
@@ -1100,6 +1137,10 @@ class mydialect(csv.Dialect):
1100
1137
self .assertRaises (csv .Error , create_invalid , field_name , "abc" )
1101
1138
self .assertRaises (csv .Error , create_invalid , field_name , b'x' )
1102
1139
self .assertRaises (csv .Error , create_invalid , field_name , 5 )
1140
+ self .assertRaises (ValueError , create_invalid , field_name , "\n " )
1141
+ self .assertRaises (ValueError , create_invalid , field_name , "\r " )
1142
+ self .assertRaises (ValueError , create_invalid , field_name , " " ,
1143
+ skipinitialspace = True )
1103
1144
1104
1145
1105
1146
class TestSniffer (unittest .TestCase ):
0 commit comments