[Python-checkins] cpython: pdb: modernize find_function() and add tests for it.
georg.brandl
python-checkins at python.org
Sun Oct 13 20:51:59 CEST 2013
http://hg.python.org/cpython/rev/9c65877b3e34
changeset: 86329:9c65877b3e34
user: Georg Brandl <georg at python.org>
date: Sun Oct 13 20:51:47 2013 +0200
summary:
pdb: modernize find_function() and add tests for it.
Closes #18714.
files:
Lib/pdb.py | 17 +++++------------
Lib/test/test_pdb.py | 30 ++++++++++++++++++++++++++++++
Misc/NEWS | 2 ++
3 files changed, 37 insertions(+), 12 deletions(-)
diff --git a/Lib/pdb.py b/Lib/pdb.py
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -95,18 +95,11 @@
except OSError:
return None
# consumer of this info expects the first line to be 1
- lineno = 1
- answer = None
- while True:
- line = fp.readline()
- if line == '':
- break
- if cre.match(line):
- answer = funcname, filename, lineno
- break
- lineno += 1
- fp.close()
- return answer
+ with fp:
+ for lineno, line in enumerate(fp, start=1):
+ if cre.match(line):
+ return funcname, filename, lineno
+ return None
def getsourcelines(obj):
lines, lineno = inspect.findsource(obj)
diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -620,6 +620,36 @@
stderr = stderr and bytes.decode(stderr)
return stdout, stderr
+ def _assert_find_function(self, file_content, func_name, expected):
+ file_content = textwrap.dedent(file_content)
+
+ with open(support.TESTFN, 'w') as f:
+ f.write(file_content)
+
+ expected = None if not expected else (
+ expected[0], support.TESTFN, expected[1])
+ self.assertEqual(
+ expected, pdb.find_function(func_name, support.TESTFN))
+
+ def test_find_function_empty_file(self):
+ self._assert_find_function('', 'foo', None)
+
+ def test_find_function_found(self):
+ self._assert_find_function(
+ """\
+ def foo():
+ pass
+
+ def bar():
+ pass
+
+ def quux():
+ pass
+ """,
+ 'bar',
+ ('bar', 4),
+ )
+
def test_issue7964(self):
# open the file as binary so we can force \r\n newline
with open(support.TESTFN, 'wb') as f:
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -114,6 +114,8 @@
- Issue #18919: Unified and extended tests for audio modules: aifc, sunau and
wave.
+- Issue #18714: Added tests for ``pdb.find_function()``.
+
Documentation
-------------
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list