summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorPablo Galindo Salgado <Pablogsal@gmail.com>2022-04-23 02:16:48 (GMT)
committerGitHub <noreply@github.com>2022-04-23 02:16:48 (GMT)
commit0daa99f68b7b9f02b37a2f34508f33ae66d95fc4 (patch)
tree7d0ed2795e92ba42aa80f6b8e70f1bac2216c681 /Lib/test
parenta3f2cf3ced378db2569df4e7389ec1f79c85d55c (diff)
downloadcpython-0daa99f68b7b9f02b37a2f34508f33ae66d95fc4.zip
cpython-0daa99f68b7b9f02b37a2f34508f33ae66d95fc4.tar.gz
cpython-0daa99f68b7b9f02b37a2f34508f33ae66d95fc4.tar.bz2
gh-88116: Enhance the inspect frame APIs to use the extended position information (GH-91531)
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_inspect.py28
1 files changed, 21 insertions, 7 deletions
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 9e3c770..115e97b 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -7,6 +7,7 @@ import inspect
import io
import linecache
import os
+import dis
from os.path import normcase
import _pickle
import pickle
@@ -361,14 +362,23 @@ class TestInterpreterStack(IsTestBase):
def test_stack(self):
self.assertTrue(len(mod.st) >= 5)
- self.assertEqual(revise(*mod.st[0][1:]),
+ frame1, frame2, frame3, frame4, *_ = mod.st
+ frameinfo = revise(*frame1[1:])
+ self.assertEqual(frameinfo,
(modfile, 16, 'eggs', [' st = inspect.stack()\n'], 0))
- self.assertEqual(revise(*mod.st[1][1:]),
+ self.assertEqual(frame1.positions, dis.Positions(16, 16, 9, 24))
+ frameinfo = revise(*frame2[1:])
+ self.assertEqual(frameinfo,
(modfile, 9, 'spam', [' eggs(b + d, c + f)\n'], 0))
- self.assertEqual(revise(*mod.st[2][1:]),
+ self.assertEqual(frame2.positions, dis.Positions(9, 9, 4, 22))
+ frameinfo = revise(*frame3[1:])
+ self.assertEqual(frameinfo,
(modfile, 43, 'argue', [' spam(a, b, c)\n'], 0))
- self.assertEqual(revise(*mod.st[3][1:]),
+ self.assertEqual(frame3.positions, dis.Positions(43, 43, 12, 25))
+ frameinfo = revise(*frame4[1:])
+ self.assertEqual(frameinfo,
(modfile, 39, 'abuse', [' self.argue(a, b, c)\n'], 0))
+ self.assertEqual(frame4.positions, dis.Positions(39, 39, 8, 27))
# Test named tuple fields
record = mod.st[0]
self.assertIs(record.frame, mod.fr)
@@ -380,12 +390,16 @@ class TestInterpreterStack(IsTestBase):
def test_trace(self):
self.assertEqual(len(git.tr), 3)
- self.assertEqual(revise(*git.tr[0][1:]),
+ frame1, frame2, frame3, = git.tr
+ self.assertEqual(revise(*frame1[1:]),
(modfile, 43, 'argue', [' spam(a, b, c)\n'], 0))
- self.assertEqual(revise(*git.tr[1][1:]),
+ self.assertEqual(frame1.positions, dis.Positions(43, 43, 12, 25))
+ self.assertEqual(revise(*frame2[1:]),
(modfile, 9, 'spam', [' eggs(b + d, c + f)\n'], 0))
- self.assertEqual(revise(*git.tr[2][1:]),
+ self.assertEqual(frame2.positions, dis.Positions(9, 9, 4, 22))
+ self.assertEqual(revise(*frame3[1:]),
(modfile, 18, 'eggs', [' q = y / 0\n'], 0))
+ self.assertEqual(frame3.positions, dis.Positions(18, 18, 8, 13))
def test_frame(self):
args, varargs, varkw, locals = inspect.getargvalues(mod.fr)