summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-11-15 08:12:10 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2016-11-15 08:12:10 (GMT)
commitf9cca365c72eaa932f1bee6407fbbbc3b4ed96f0 (patch)
tree12858858baf93a9b88cc36aa9c938595df28d025 /Lib/test
parentde40e1218c8dff29ee9de634034e3ed7b3979c86 (diff)
downloadcpython-f9cca365c72eaa932f1bee6407fbbbc3b4ed96f0.zip
cpython-f9cca365c72eaa932f1bee6407fbbbc3b4ed96f0.tar.gz
cpython-f9cca365c72eaa932f1bee6407fbbbc3b4ed96f0.tar.bz2
Fix warn_invalid_escape_sequence()
Issue #28691: Fix warn_invalid_escape_sequence(): handle correctly DeprecationWarning raised as an exception. First clear the current exception to replace the DeprecationWarning exception with a SyntaxError exception. Unit test written by Serhiy Storchaka.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_string_literals.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/test_string_literals.py b/Lib/test/test_string_literals.py
index 54f2be3..aba4fc4 100644
--- a/Lib/test/test_string_literals.py
+++ b/Lib/test/test_string_literals.py
@@ -111,6 +111,7 @@ class TestLiterals(unittest.TestCase):
continue
with self.assertWarns(DeprecationWarning):
self.assertEqual(eval(r"'\%c'" % b), '\\' + chr(b))
+
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter('always', category=DeprecationWarning)
eval("'''\n\\z'''")
@@ -118,6 +119,15 @@ class TestLiterals(unittest.TestCase):
self.assertEqual(w[0].filename, '<string>')
self.assertEqual(w[0].lineno, 2)
+ with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter('error', category=DeprecationWarning)
+ with self.assertRaises(SyntaxError) as cm:
+ eval("'''\n\\z'''")
+ exc = cm.exception
+ self.assertEqual(w, [])
+ self.assertEqual(exc.filename, '<string>')
+ self.assertEqual(exc.lineno, 2)
+
def test_eval_str_raw(self):
self.assertEqual(eval(""" r'x' """), 'x')
self.assertEqual(eval(r""" r'\x01' """), '\\' + 'x01')
@@ -150,6 +160,7 @@ class TestLiterals(unittest.TestCase):
continue
with self.assertWarns(DeprecationWarning):
self.assertEqual(eval(r"b'\%c'" % b), b'\\' + bytes([b]))
+
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter('always', category=DeprecationWarning)
eval("b'''\n\\z'''")
@@ -157,6 +168,15 @@ class TestLiterals(unittest.TestCase):
self.assertEqual(w[0].filename, '<string>')
self.assertEqual(w[0].lineno, 2)
+ with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter('error', category=DeprecationWarning)
+ with self.assertRaises(SyntaxError) as cm:
+ eval("b'''\n\\z'''")
+ exc = cm.exception
+ self.assertEqual(w, [])
+ self.assertEqual(exc.filename, '<string>')
+ self.assertEqual(exc.lineno, 2)
+
def test_eval_bytes_raw(self):
self.assertEqual(eval(""" br'x' """), b'x')
self.assertEqual(eval(""" rb'x' """), b'x')