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
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
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
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
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