## @file # Unit tests for checking syntax of Python source code # # Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # ## # 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 as 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)