summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_frame.py30
1 files changed, 28 insertions, 2 deletions
diff --git a/Lib/test/test_frame.py b/Lib/test/test_frame.py
index 32de8ed..11f1917 100644
--- a/Lib/test/test_frame.py
+++ b/Lib/test/test_frame.py
@@ -397,15 +397,41 @@ class TestFrameLocals(unittest.TestCase):
def test_delete(self):
x = 1
d = sys._getframe().f_locals
- with self.assertRaises(TypeError):
+
+ # This needs to be tested before f_extra_locals is created
+ with self.assertRaisesRegex(KeyError, 'non_exist'):
+ del d['non_exist']
+
+ with self.assertRaises(KeyError):
+ d.pop('non_exist')
+
+ with self.assertRaisesRegex(ValueError, 'local variables'):
del d['x']
with self.assertRaises(AttributeError):
d.clear()
- with self.assertRaises(AttributeError):
+ with self.assertRaises(ValueError):
d.pop('x')
+ with self.assertRaises(ValueError):
+ d.pop('x', None)
+
+ # 'm', 'n' is stored in f_extra_locals
+ d['m'] = 1
+ d['n'] = 1
+
+ with self.assertRaises(KeyError):
+ d.pop('non_exist')
+
+ del d['m']
+ self.assertEqual(d.pop('n'), 1)
+
+ self.assertNotIn('m', d)
+ self.assertNotIn('n', d)
+
+ self.assertEqual(d.pop('n', 2), 2)
+
@support.cpython_only
def test_sizeof(self):
proxy = sys._getframe().f_locals