class TestAcceptance(unittest.TestCase): def setUp(self): self.depend = Depend() def feed(self, precomp): lines = precomp.splitlines() self.depend.feed(lines) def getStats(self, precomp): self.feed(precomp) return self.depend.getStats() def getTree(self, precomp): self.feed(precomp) return self.depend.getTree() def testNoNothing(self): tree = self.getTree("") assert (tree is None) def testNoNothingStats(self): stats = self.getStats("") self.assertEqual(len(stats.files()), 0) def testNoLineInfo(self): tree = self.getTree("/*nothing to see here*/") assert (tree is None) def testFirstNode(self): precomp = '''#line 1 "test.cpp"''' tree = self.getTree(precomp) self.assertEqual(tree.name(), "test.cpp") def testWonkyLine(self): precomp = ''' #line 1 "test.cpp"''' tree = self.getTree(precomp) self.assertEqual(tree.name(), "test.cpp") def testFirstNodeWithAnnoyingName(self): precomp = '''#line 1 "C:\\blahblah\\overhere\\overthere\\test.cpp"''' tree = self.getTree(precomp) self.assertEqual(tree.name(), "test.cpp") def testFirstNodeWithLines(self): tree = self.getTree(precompWithLines) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 6) def testTwoRootLevelFiles(self): self.feed(precompWithLinesTemplate % "a.cpp") self.feed(precompWithLinesTemplate % "b.cpp") trees = self.depend.getTrees() self.assertEqual(len(trees), 2) self.assertEqual(trees[0].name(), "a.cpp") self.assertEqual(trees[0].lines(), 6) self.assertEqual(trees[0].totalLines(), 6) self.assertEqual(trees[1].name(), "b.cpp") self.assertEqual(trees[1].lines(), 6) self.assertEqual(trees[1].totalLines(), 6) def testOneInclude(self): tree = self.getTree(precompOneInclude) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 5) self.assertEqual(len(tree.children()), 1) self.assertEqual(tree.children()[0].name(), "test.h") self.assertEqual(tree.children()[0].lines(), 1) self.assertEqual(len(tree.children()[0].children()), 0) def testNestedInclude(self): tree = self.getTree(precompNestedInclude) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 5) self.assertEqual(len(tree.children()), 1) self.assertEqual(tree.children()[0].name(), "test2.h") self.assertEqual(tree.children()[0].lines(), 1) self.assertEqual(len(tree.children()[0].children()), 1) self.assertEqual(tree.children()[0].children()[0].name(), "test.h") def testNestedIncludeSameNames(self): tree = self.getTree(precompNestedIncludeSameName) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 5) self.assertEqual(len(tree.children()), 1) self.assertEqual(tree.children()[0].name(), "test.h") self.assertEqual(tree.children()[0].lines(), 1) self.assertEqual(len(tree.children()[0].children()), 1) self.assertEqual(tree.children()[0].children()[0].name(), "test.h") def testTwoIncludes(self): tree = self.getTree(precompTwoIncludes) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 5) self.assertEqual(len(tree.children()), 2) self.assertEqual(tree.children()[0].name(), "testa.h") self.assertEqual(tree.children()[1].name(), "testb.h") def testTotalLines(self): tree = self.getTree(precompWithLines) self.assertEqual(tree.totalLines(), 6) def testTotalLinesWithNestedChildren(self): tree = self.getTree(precompNestedInclude) self.assertEqual(tree.totalLines(), 7) def testTotalLinesWithChildren(self): tree = self.getTree(precompTwoIncludes) self.assertEqual(tree.totalLines(), 7) def testTwoGnuCppIncludes(self): tree = self.getTree(precompGnuCpp) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 4) self.assertEqual(len(tree.children()), 2) self.assertEqual(tree.children()[0].name(), "testa.h") self.assertEqual(tree.children()[1].name(), "testb.h")
class TestAcceptance(unittest.TestCase): def setUp(self): self.depend = Depend() def feed(self, precomp): lines = precomp.splitlines() self.depend.feed(lines) def getStats(self, precomp): self.feed(precomp) return self.depend.getStats() def getTree(self, precomp): self.feed(precomp) return self.depend.getTree() def testNoNothing(self): tree = self.getTree("") assert tree is None def testNoNothingStats(self): stats = self.getStats("") self.assertEqual(len(stats.files()), 0) def testNoLineInfo(self): tree = self.getTree("/*nothing to see here*/") assert tree is None def testFirstNode(self): precomp = '''#line 1 "test.cpp"''' tree = self.getTree(precomp) self.assertEqual(tree.name(), "test.cpp") def testWonkyLine(self): precomp = ''' #line 1 "test.cpp"''' tree = self.getTree(precomp) self.assertEqual(tree.name(), "test.cpp") def testFirstNodeWithAnnoyingName(self): precomp = '''#line 1 "C:\\blahblah\\overhere\\overthere\\test.cpp"''' tree = self.getTree(precomp) self.assertEqual(tree.name(), "test.cpp") def testFirstNodeWithLines(self): tree = self.getTree(precompWithLines) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 6) def testTwoRootLevelFiles(self): self.feed(precompWithLinesTemplate % "a.cpp") self.feed(precompWithLinesTemplate % "b.cpp") trees = self.depend.getTrees() self.assertEqual(len(trees), 2) self.assertEqual(trees[0].name(), "a.cpp") self.assertEqual(trees[0].lines(), 6) self.assertEqual(trees[0].totalLines(), 6) self.assertEqual(trees[1].name(), "b.cpp") self.assertEqual(trees[1].lines(), 6) self.assertEqual(trees[1].totalLines(), 6) def testOneInclude(self): tree = self.getTree(precompOneInclude) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 5) self.assertEqual(len(tree.children()), 1) self.assertEqual(tree.children()[0].name(), "test.h") self.assertEqual(tree.children()[0].lines(), 1) self.assertEqual(len(tree.children()[0].children()), 0) def testNestedInclude(self): tree = self.getTree(precompNestedInclude) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 5) self.assertEqual(len(tree.children()), 1) self.assertEqual(tree.children()[0].name(), "test2.h") self.assertEqual(tree.children()[0].lines(), 1) self.assertEqual(len(tree.children()[0].children()), 1) self.assertEqual(tree.children()[0].children()[0].name(), "test.h") def testNestedIncludeSameNames(self): tree = self.getTree(precompNestedIncludeSameName) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 5) self.assertEqual(len(tree.children()), 1) self.assertEqual(tree.children()[0].name(), "test.h") self.assertEqual(tree.children()[0].lines(), 1) self.assertEqual(len(tree.children()[0].children()), 1) self.assertEqual(tree.children()[0].children()[0].name(), "test.h") def testTwoIncludes(self): tree = self.getTree(precompTwoIncludes) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 5) self.assertEqual(len(tree.children()), 2) self.assertEqual(tree.children()[0].name(), "testa.h") self.assertEqual(tree.children()[1].name(), "testb.h") def testTotalLines(self): tree = self.getTree(precompWithLines) self.assertEqual(tree.totalLines(), 6) def testTotalLinesWithNestedChildren(self): tree = self.getTree(precompNestedInclude) self.assertEqual(tree.totalLines(), 7) def testTotalLinesWithChildren(self): tree = self.getTree(precompTwoIncludes) self.assertEqual(tree.totalLines(), 7) def testTwoGnuCppIncludes(self): tree = self.getTree(precompGnuCpp) self.assertEqual(tree.name(), "test.cpp") self.assertEqual(tree.lines(), 4) self.assertEqual(len(tree.children()), 2) self.assertEqual(tree.children()[0].name(), "testa.h") self.assertEqual(tree.children()[1].name(), "testb.h")
from depend import Depend from depend import DependReport if __name__ == "__main__": import sys files = sys.argv[1:] depend = Depend() for file in files: lines = open(file).readlines() depend.feed(lines) reporter = DependReport() print reporter.reportStats(depend.getStats())