| ## @file | |
| # Unit tests for checking syntax of Python source code | |
| # | |
| # Copyright (c) 2009, Intel Corporation. All rights reserved.<BR> | |
| # | |
| # This program and the accompanying materials | |
| # are licensed and made available under the terms and conditions of the BSD License | |
| # which accompanies this distribution. The full text of the license may be found at | |
| # http://opensource.org/licenses/bsd-license.php | |
| # | |
| # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| # | |
| ## | |
| # Import Modules | |
| # | |
| import os | |
| import unittest | |
| import py_compile | |
| import TestTools | |
| class Tests(TestTools.BaseToolsTest): | |
| def setUp(self): | |
| TestTools.BaseToolsTest.setUp(self) | |
| def SingleFileTest(self, filename): | |
| try: | |
| py_compile.compile(filename, doraise=True) | |
| except Exception, e: | |
| self.fail('syntax error: %s, Error is %s' % (filename, str(e))) | |
| def MakePythonSyntaxCheckTests(): | |
| def GetAllPythonSourceFiles(): | |
| pythonSourceFiles = [] | |
| for (root, dirs, files) in os.walk(TestTools.PythonSourceDir): | |
| for filename in files: | |
| if filename.lower().endswith('.py'): | |
| pythonSourceFiles.append( | |
| os.path.join(root, filename) | |
| ) | |
| return pythonSourceFiles | |
| def MakeTestName(filename): | |
| assert filename.lower().endswith('.py') | |
| name = filename[:-3] | |
| name = name.replace(TestTools.PythonSourceDir, '') | |
| name = name.replace(os.path.sep, '_') | |
| return 'test' + name | |
| def MakeNewTest(filename): | |
| test = MakeTestName(filename) | |
| newmethod = lambda self: self.SingleFileTest(filename) | |
| setattr( | |
| Tests, | |
| test, | |
| newmethod | |
| ) | |
| for filename in GetAllPythonSourceFiles(): | |
| MakeNewTest(filename) | |
| MakePythonSyntaxCheckTests() | |
| del MakePythonSyntaxCheckTests | |
| TheTestSuite = TestTools.MakeTheTestSuite(locals()) | |
| if __name__ == '__main__': | |
| allTests = TheTestSuite() | |
| unittest.TextTestRunner().run(allTests) | |