statistic report improved
authorAndrey Pavlenko <no@email>
Tue, 26 Jul 2011 07:50:44 +0000 (07:50 +0000)
committerAndrey Pavlenko <no@email>
Tue, 26 Jul 2011 07:50:44 +0000 (07:50 +0000)
modules/java/check-tests.py

index b3138b7..1404d41 100644 (file)
@@ -7,8 +7,11 @@ class JavaParser:
     def clear(self):\r
         self.mdict = {}\r
         self.tdict = {}\r
+        self.empty_stubs_cnt = 0\r
         self.r1 = re.compile("\s*public\s+(?:static\s+)?(\w+)\(([^)]*)\)") # c-tor\r
         self.r2 = re.compile("\s*public\s+(?:static\s+)?\w+\s+(\w+)\(([^)]*)\)")\r
+        self.r3 = re.compile('\s*fail\("Not yet implemented"\);') # empty test stub\r
+\r
 \r
     def dict2set(self, d):\r
         s = set()\r
@@ -20,6 +23,15 @@ class JavaParser:
         return s\r
 \r
 \r
+    def get_tests_count(self):\r
+        return len(self.tdict)\r
+\r
+    def get_empty_stubs_count(self):\r
+        return self.empty_stubs_cnt\r
+\r
+    def get_funcs_count(self):\r
+        return len(self.dict2set(self.mdict)), len(self.mdict)\r
+\r
     def get_not_tested(self):\r
         mset = self.dict2set(self.mdict)\r
         tset = self.dict2set(self.tdict)\r
@@ -44,6 +56,7 @@ class JavaParser:
         for line in f:\r
             m1 = self.r1.match(line)\r
             m2 = self.r2.match(line)\r
+            m3 = self.r3.match(line)\r
             func = ''\r
             args_str = ''\r
             if m1:\r
@@ -52,6 +65,9 @@ class JavaParser:
             elif m2:\r
                 func = m2.group(1)\r
                 args_str = m2.group(2)\r
+            elif m3:\r
+                self.empty_stubs_cnt += 1\r
+                continue\r
             else:\r
                 continue\r
             d = (self.mdict, self.tdict)["test" in func]\r
@@ -73,13 +89,16 @@ if __name__ == '__main__':
     if len(sys.argv) < 2:\r
         print "Usage:\n", \\r
             os.path.basename(sys.argv[0]), \\r
-            "<Classes/Tests dir1/file1> [<Classes/Tests dir2/file2> ...]\n", "Not tested methods are logged to stdout."\r
+            "<Classes/Tests dir1/file1> [<Classes/Tests dir2/file2> ...]\n", "Not tested methods are loggedto stdout."\r
         exit(0)\r
     parser = JavaParser()\r
     for x in sys.argv[1:]:\r
         parser.parse(x)\r
     funcs = parser.get_not_tested()\r
     if funcs:\r
-        print "UNTESTED methods (%i):\n\t" % len(funcs), "\n\t".join(sorted(funcs))\r
-    print "Done."\r
+        print "NOT TESTED methods:\n\t", "\n\t".join(sorted(funcs))\r
+    print "Total methods found: %i (%i)" % parser.get_funcs_count()\r
+    print "Not tested methods found:", len(funcs)\r
+    print "Total tests found:", parser.get_tests_count()\r
+    print "Empty test stubs found:", parser.get_empty_stubs_count()\r
 \r