@@ -116,6 +116,7 @@ def test_eval_str_invalid_escape(self):
116
116
warnings .simplefilter ('always' , category = DeprecationWarning )
117
117
eval ("'''\n \\ z'''" )
118
118
self .assertEqual (len (w ), 1 )
119
+ self .assertEqual (str (w [0 ].message ), r"invalid escape sequence '\z'" )
119
120
self .assertEqual (w [0 ].filename , '<string>' )
120
121
self .assertEqual (w [0 ].lineno , 1 )
121
122
@@ -125,6 +126,32 @@ def test_eval_str_invalid_escape(self):
125
126
eval ("'''\n \\ z'''" )
126
127
exc = cm .exception
127
128
self .assertEqual (w , [])
129
+ self .assertEqual (exc .msg , r"invalid escape sequence '\z'" )
130
+ self .assertEqual (exc .filename , '<string>' )
131
+ self .assertEqual (exc .lineno , 1 )
132
+ self .assertEqual (exc .offset , 1 )
133
+
134
+ def test_eval_str_invalid_octal_escape (self ):
135
+ for i in range (0o400 , 0o1000 ):
136
+ with self .assertWarns (DeprecationWarning ):
137
+ self .assertEqual (eval (r"'\%o'" % i ), chr (i ))
138
+
139
+ with warnings .catch_warnings (record = True ) as w :
140
+ warnings .simplefilter ('always' , category = DeprecationWarning )
141
+ eval ("'''\n \\ 407'''" )
142
+ self .assertEqual (len (w ), 1 )
143
+ self .assertEqual (str (w [0 ].message ),
144
+ r"invalid octal escape sequence '\407'" )
145
+ self .assertEqual (w [0 ].filename , '<string>' )
146
+ self .assertEqual (w [0 ].lineno , 1 )
147
+
148
+ with warnings .catch_warnings (record = True ) as w :
149
+ warnings .simplefilter ('error' , category = DeprecationWarning )
150
+ with self .assertRaises (SyntaxError ) as cm :
151
+ eval ("'''\n \\ 407'''" )
152
+ exc = cm .exception
153
+ self .assertEqual (w , [])
154
+ self .assertEqual (exc .msg , r"invalid octal escape sequence '\407'" )
128
155
self .assertEqual (exc .filename , '<string>' )
129
156
self .assertEqual (exc .lineno , 1 )
130
157
self .assertEqual (exc .offset , 1 )
@@ -166,6 +193,7 @@ def test_eval_bytes_invalid_escape(self):
166
193
warnings .simplefilter ('always' , category = DeprecationWarning )
167
194
eval ("b'''\n \\ z'''" )
168
195
self .assertEqual (len (w ), 1 )
196
+ self .assertEqual (str (w [0 ].message ), r"invalid escape sequence '\z'" )
169
197
self .assertEqual (w [0 ].filename , '<string>' )
170
198
self .assertEqual (w [0 ].lineno , 1 )
171
199
@@ -175,6 +203,31 @@ def test_eval_bytes_invalid_escape(self):
175
203
eval ("b'''\n \\ z'''" )
176
204
exc = cm .exception
177
205
self .assertEqual (w , [])
206
+ self .assertEqual (exc .msg , r"invalid escape sequence '\z'" )
207
+ self .assertEqual (exc .filename , '<string>' )
208
+ self .assertEqual (exc .lineno , 1 )
209
+
210
+ def test_eval_bytes_invalid_octal_escape (self ):
211
+ for i in range (0o400 , 0o1000 ):
212
+ with self .assertWarns (DeprecationWarning ):
213
+ self .assertEqual (eval (r"b'\%o'" % i ), bytes ([i & 0o377 ]))
214
+
215
+ with warnings .catch_warnings (record = True ) as w :
216
+ warnings .simplefilter ('always' , category = DeprecationWarning )
217
+ eval ("b'''\n \\ 407'''" )
218
+ self .assertEqual (len (w ), 1 )
219
+ self .assertEqual (str (w [0 ].message ),
220
+ r"invalid octal escape sequence '\407'" )
221
+ self .assertEqual (w [0 ].filename , '<string>' )
222
+ self .assertEqual (w [0 ].lineno , 1 )
223
+
224
+ with warnings .catch_warnings (record = True ) as w :
225
+ warnings .simplefilter ('error' , category = DeprecationWarning )
226
+ with self .assertRaises (SyntaxError ) as cm :
227
+ eval ("b'''\n \\ 407'''" )
228
+ exc = cm .exception
229
+ self .assertEqual (w , [])
230
+ self .assertEqual (exc .msg , r"invalid octal escape sequence '\407'" )
178
231
self .assertEqual (exc .filename , '<string>' )
179
232
self .assertEqual (exc .lineno , 1 )
180
233
0 commit comments