Fix practracker_tests.py and practracker line counting.

The practracker_tests.py unit test file called a function by its old
name.

Also, practracker counted functions as starting one line after the
function name, and ending with the closing brace.  Now they start
with the open brace and end with the closing brace.
This commit is contained in:
Nick Mathewson 2019-07-17 14:00:28 +02:00
parent 5303dbe624
commit 4c09532996
2 changed files with 11 additions and 5 deletions

View File

@ -31,6 +31,7 @@ def get_function_lines(f):
"DISABLE_GCC_WARNING", "DISABLE_GCC_WARNINGS"}
in_function = False
found_openbrace = False
for lineno, line in enumerate(f):
if not in_function:
# find the start of a function
@ -41,10 +42,13 @@ def get_function_lines(f):
continue
func_start = lineno
in_function = True
elif not found_openbrace and line.startswith("{"):
found_openbrace = True
func_start = lineno
else:
# Find the end of a function
if line.startswith("}"):
n_lines = lineno - func_start
n_lines = lineno - func_start + 1
in_function = False
found_openbrace = False
yield (func_name, n_lines)

View File

@ -1,3 +1,5 @@
#!/usr/bin/python
"""Some simple tests for practracker metrics"""
import unittest
@ -38,13 +40,13 @@ class TestFunctionLength(unittest.TestCase):
def test_function_length(self):
funcs = StringIO.StringIO(function_file)
# All functions should have length 2
for name, lines in metrics.function_lines(funcs):
for name, lines in metrics.get_function_lines(funcs):
self.assertEqual(name, "fun")
funcs.seek(0)
for name, lines in metrics.function_lines(funcs):
self.assertEqual(lines, 2)
for name, lines in metrics.get_function_lines(funcs):
self.assertEqual(lines, 4)
if __name__ == '__main__':
unittest.main()