@@ -116,6 +116,7 @@ def test_eval_str_invalid_escape(self):
116116 warnings .simplefilter ('always' , category = DeprecationWarning )
117117 eval ("'''\n \\ z'''" )
118118 self .assertEqual (len (w ), 1 )
119+ self .assertEqual (str (w [0 ].message ), r"invalid escape sequence '\z'" )
119120 self .assertEqual (w [0 ].filename , '<string>' )
120121 self .assertEqual (w [0 ].lineno , 1 )
121122
@@ -125,6 +126,32 @@ def test_eval_str_invalid_escape(self):
125126 eval ("'''\n \\ z'''" )
126127 exc = cm .exception
127128 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'" )
128155 self .assertEqual (exc .filename , '<string>' )
129156 self .assertEqual (exc .lineno , 1 )
130157 self .assertEqual (exc .offset , 1 )
@@ -166,6 +193,7 @@ def test_eval_bytes_invalid_escape(self):
166193 warnings .simplefilter ('always' , category = DeprecationWarning )
167194 eval ("b'''\n \\ z'''" )
168195 self .assertEqual (len (w ), 1 )
196+ self .assertEqual (str (w [0 ].message ), r"invalid escape sequence '\z'" )
169197 self .assertEqual (w [0 ].filename , '<string>' )
170198 self .assertEqual (w [0 ].lineno , 1 )
171199
@@ -175,6 +203,31 @@ def test_eval_bytes_invalid_escape(self):
175203 eval ("b'''\n \\ z'''" )
176204 exc = cm .exception
177205 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'" )
178231 self .assertEqual (exc .filename , '<string>' )
179232 self .assertEqual (exc .lineno , 1 )
180233
0 commit comments