Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fcf80b0

Browse filesBrowse files
bpo-29598 Add couple of unit tests for pdb module
1 parent 2c700af commit fcf80b0
Copy full SHA for fcf80b0

File tree

1 file changed

+40
-0
lines changed
Filter options

1 file changed

+40
-0
lines changed

‎Lib/test/test_pdb.py

Copy file name to clipboardExpand all lines: Lib/test/test_pdb.py
+40Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# A test suite for pdb; not very comprehensive at the moment.
22

3+
import dis
34
import doctest
5+
import inspect
46
import os
57
import pdb
68
import sys
@@ -1110,6 +1112,44 @@ def test_readrc_kwarg(self):
11101112
if save_home is not None:
11111113
os.environ['HOME'] = save_home
11121114

1115+
def test_find_function_with_invalid_filename(self):
1116+
self.assertIsNone(pdb.find_function('foo', 'invalid filename'))
1117+
1118+
def test_getsourcelines(self):
1119+
def foo():
1120+
pass # pragma: no cover
1121+
lines, lineno = inspect.findsource(foo)
1122+
expected_lines = inspect.getblock(lines[lineno:])
1123+
expected_lineno = lineno + 1
1124+
actual_lines, actual_lineno = pdb.getsourcelines(foo)
1125+
self.assertEqual(actual_lines, expected_lines)
1126+
self.assertEqual(actual_lineno, expected_lineno)
1127+
1128+
def test_getsourcelines_with_module_frame_obj(self):
1129+
for frame, *unused in inspect.getouterframes(inspect.currentframe()):
1130+
if frame.f_globals is frame.f_locals:
1131+
module_frame = frame
1132+
break
1133+
expected_lines = inspect.findsource(module_frame)[0]
1134+
lines, lineno = pdb.getsourcelines(module_frame)
1135+
self.assertEqual(lines, expected_lines)
1136+
self.assertEqual(lineno, 1)
1137+
1138+
def test_getsourcelines_with_module_obj(self):
1139+
module = inspect.getmodule(inspect.currentframe())
1140+
expected_lines = inspect.findsource(module)[0]
1141+
lines, lineno = pdb.getsourcelines(module)
1142+
self.assertEqual(lines, expected_lines)
1143+
self.assertEqual(lineno, 1)
1144+
1145+
def test_lasti2lineno(self):
1146+
code_obj = inspect.currentframe().f_code
1147+
max_offset, max_lineno = max(dis.findlinestarts(code_obj))
1148+
min_offset, min_lineno = min(dis.findlinestarts(code_obj))
1149+
self.assertEqual(pdb.lasti2lineno(code_obj, max_offset), max_lineno)
1150+
self.assertEqual(pdb.lasti2lineno(code_obj, max_offset+1), max_lineno)
1151+
self.assertEqual(pdb.lasti2lineno(code_obj, min_offset-1), 0)
1152+
11131153
def tearDown(self):
11141154
support.unlink(support.TESTFN)
11151155

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.