]>
Commit | Line | Data |
---|---|---|
30fdf114 LG |
1 | ## @file |
2 | # Unit tests for checking syntax of Python source code | |
3 | # | |
4 | # Copyright (c) 2009, Intel Corporation | |
5 | # | |
6 | # All rights reserved. This program and the accompanying materials | |
7 | # are licensed and made available under the terms and conditions of the BSD License | |
8 | # which accompanies this distribution. The full text of the license may be found at | |
9 | # http://opensource.org/licenses/bsd-license.php | |
10 | # | |
11 | # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
12 | # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
13 | # | |
14 | ||
15 | ## | |
16 | # Import Modules | |
17 | # | |
18 | import os | |
19 | import unittest | |
20 | import py_compile | |
21 | ||
22 | import TestTools | |
23 | ||
24 | class Tests(TestTools.BaseToolsTest): | |
25 | ||
26 | def setUp(self): | |
27 | TestTools.BaseToolsTest.setUp(self) | |
28 | ||
29 | def SingleFileTest(self, filename): | |
30 | try: | |
31 | py_compile.compile(filename, doraise=True) | |
32 | except: | |
33 | self.fail('syntax error: ' + filename) | |
34 | ||
35 | def MakePythonSyntaxCheckTests(): | |
36 | def GetAllPythonSourceFiles(): | |
37 | pythonSourceFiles = [] | |
38 | for (root, dirs, files) in os.walk(TestTools.PythonSourceDir): | |
39 | for filename in files: | |
40 | if filename.lower().endswith('.py'): | |
41 | pythonSourceFiles.append( | |
42 | os.path.join(root, filename) | |
43 | ) | |
44 | return pythonSourceFiles | |
45 | ||
46 | def MakeTestName(filename): | |
47 | assert filename.lower().endswith('.py') | |
48 | name = filename[:-3] | |
49 | name = name.replace(TestTools.PythonSourceDir, '') | |
50 | name = name.replace(os.path.sep, '_') | |
51 | return 'test' + name | |
52 | ||
53 | def MakeNewTest(filename): | |
54 | test = MakeTestName(filename) | |
55 | newmethod = lambda self: self.SingleFileTest(filename) | |
56 | setattr( | |
57 | Tests, | |
58 | test, | |
59 | newmethod | |
60 | ) | |
61 | ||
62 | for filename in GetAllPythonSourceFiles(): | |
63 | MakeNewTest(filename) | |
64 | ||
65 | MakePythonSyntaxCheckTests() | |
66 | del MakePythonSyntaxCheckTests | |
67 | ||
68 | TheTestSuite = TestTools.MakeTheTestSuite(locals()) | |
69 | ||
70 | if __name__ == '__main__': | |
71 | allTests = TheTestSuite() | |
72 | unittest.TextTestRunner().run(allTests) | |
73 | ||
74 |