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