| ## @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) |
| |
| |