1 __revision__ = "Scanner/CTests.py __REVISION__ __DATE__ __DEVELOPER__"
8 test = TestCmd.TestCmd(workdir = '')
10 # create some source files and headers:
12 test.write('f1.cpp',"""
22 test.write('f2.cpp',"""
34 test.write('f3.cpp',"""
41 # \t include <d1/f3.h>
45 const char* x = "#include <never.h>"
56 test.subdir('d1', ['d1', 'd2'])
58 headers = ['f1.h','f2.h', 'f3.h', 'never.h',
59 'd1/f1.h', 'd1/f2.h', 'd1/f3.h',
60 'd1/d2/f1.h', 'd1/d2/f2.h', 'd1/d2/f3.h', 'd1/d2/f4.h']
65 # define some helpers:
67 class DummyEnvironment:
70 def deps_match(deps, headers):
71 return deps.sort() == map(test.workpath, headers).sort()
75 class CScannerTestCase1(unittest.TestCase):
77 env = DummyEnvironment
78 s = SCons.Scanner.C.CScan()
79 deps = s.scan(test.workpath('f1.cpp'), env)
80 self.failUnless(deps_match(deps, ['f1.h', 'f2.h']))
82 class CScannerTestCase2(unittest.TestCase):
84 env = DummyEnvironment
85 env.CPPPATH = [test.workpath("d1")]
86 s = SCons.Scanner.C.CScan()
87 deps = s.scan(test.workpath('f1.cpp'), env)
88 headers = ['f1.h', 'd1/f2.h']
89 self.failUnless(deps_match(deps, headers))
91 class CScannerTestCase3(unittest.TestCase):
93 env = DummyEnvironment
94 env.CPPPATH = [test.workpath("d1")]
95 s = SCons.Scanner.C.CScan()
96 deps = s.scan(test.workpath('f2.cpp'), env)
97 headers = ['f1.h', 'd1/f2.h', 'd1/d2/f1.h']
98 self.failUnless(deps_match(deps, headers))
101 class CScannerTestCase4(unittest.TestCase):
103 env = DummyEnvironment
104 env.CPPPATH = [test.workpath("d1"), test.workpath("d1/d2")]
105 s = SCons.Scanner.C.CScan()
106 deps = s.scan(test.workpath('f2.cpp'), env)
107 headers = ['f1.h', 'd1/f2.h', 'd1/d2/f1.h', 'd1/d2/f4.h']
108 self.failUnless(deps_match(deps, headers))
110 class CScannerTestCase5(unittest.TestCase):
112 env = DummyEnvironment
113 s = SCons.Scanner.C.CScan()
114 deps = s.scan(test.workpath('f3.cpp'), env)
115 headers = ['f1.h', 'f2.h', 'f3.h', 'd1/f1.h', 'd1/f2.h', 'd1/f3.h']
116 self.failUnless(deps_match(deps, headers))
119 suite = unittest.TestSuite()
120 suite.addTest(CScannerTestCase1())
121 suite.addTest(CScannerTestCase2())
122 suite.addTest(CScannerTestCase3())
123 suite.addTest(CScannerTestCase4())
124 suite.addTest(CScannerTestCase5())
127 if __name__ == "__main__":
128 runner = unittest.TextTestRunner()
129 result = runner.run(suite())
130 if not result.wasSuccessful():