]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix practracker_tests.py and practracker line counting.
authorNick Mathewson <nickm@torproject.org>
Wed, 17 Jul 2019 12:00:28 +0000 (14:00 +0200)
committerNick Mathewson <nickm@torproject.org>
Wed, 17 Jul 2019 12:33:49 +0000 (14:33 +0200)
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.

scripts/maint/practracker/metrics.py
scripts/maint/practracker/practracker_tests.py

index 5fa305a868e9e5cfe2d1b22909bd520358d59188..b35029b51d0a10415f97eab95259431d048045c7 100644 (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)
index cdbab2908e0b2c8c784aaef5e37a9358d4c18d5d..f11c55a3bd8d8a8fcf77456ac9c2f25ae0fb1486 100755 (executable)
@@ -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()