1 | ## @file
|
---|
2 | # Unit tests for checking syntax of Python source code
|
---|
3 | #
|
---|
4 | # Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
|
---|
5 | #
|
---|
6 | # 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 Exception, e:
|
---|
33 | self.fail('syntax error: %s, Error is %s' % (filename, str(e)))
|
---|
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 |
|
---|