From fcf80b0e22c4a89c0e50ab1476e40832cf5cf0ad Mon Sep 17 00:00:00 2001 From: Artem Muterko Date: Tue, 21 Feb 2017 16:59:39 +0200 Subject: [PATCH] bpo-29598 Add couple of unit tests for pdb module --- Lib/test/test_pdb.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 0ea2af5541750c..1d6bee99e9758c 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1,6 +1,8 @@ # A test suite for pdb; not very comprehensive at the moment. +import dis import doctest +import inspect import os import pdb import sys @@ -1110,6 +1112,44 @@ def test_readrc_kwarg(self): if save_home is not None: os.environ['HOME'] = save_home + def test_find_function_with_invalid_filename(self): + self.assertIsNone(pdb.find_function('foo', 'invalid filename')) + + def test_getsourcelines(self): + def foo(): + pass # pragma: no cover + lines, lineno = inspect.findsource(foo) + expected_lines = inspect.getblock(lines[lineno:]) + expected_lineno = lineno + 1 + actual_lines, actual_lineno = pdb.getsourcelines(foo) + self.assertEqual(actual_lines, expected_lines) + self.assertEqual(actual_lineno, expected_lineno) + + def test_getsourcelines_with_module_frame_obj(self): + for frame, *unused in inspect.getouterframes(inspect.currentframe()): + if frame.f_globals is frame.f_locals: + module_frame = frame + break + expected_lines = inspect.findsource(module_frame)[0] + lines, lineno = pdb.getsourcelines(module_frame) + self.assertEqual(lines, expected_lines) + self.assertEqual(lineno, 1) + + def test_getsourcelines_with_module_obj(self): + module = inspect.getmodule(inspect.currentframe()) + expected_lines = inspect.findsource(module)[0] + lines, lineno = pdb.getsourcelines(module) + self.assertEqual(lines, expected_lines) + self.assertEqual(lineno, 1) + + def test_lasti2lineno(self): + code_obj = inspect.currentframe().f_code + max_offset, max_lineno = max(dis.findlinestarts(code_obj)) + min_offset, min_lineno = min(dis.findlinestarts(code_obj)) + self.assertEqual(pdb.lasti2lineno(code_obj, max_offset), max_lineno) + self.assertEqual(pdb.lasti2lineno(code_obj, max_offset+1), max_lineno) + self.assertEqual(pdb.lasti2lineno(code_obj, min_offset-1), 0) + def tearDown(self): support.unlink(support.TESTFN) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy