]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Tests/CheckPythonSyntax.py
Sync basetools' source and binary files with r1707 of the basetools project.
[mirror_edk2.git] / BaseTools / Tests / CheckPythonSyntax.py
CommitLineData
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#
18import os
19import unittest
20import py_compile
21
22import TestTools
23
24class 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)
fd171542 32 except Exception, e:
33 self.fail('syntax error: %s, Error is %s' % (filename, str(e)))
30fdf114
LG
34
35def 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
65MakePythonSyntaxCheckTests()
66del MakePythonSyntaxCheckTests
67
68TheTestSuite = TestTools.MakeTheTestSuite(locals())
69
70if __name__ == '__main__':
71 allTests = TheTestSuite()
72 unittest.TextTestRunner().run(allTests)
73
74