]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Tests/CheckPythonSyntax.py
Check In tool source code based on Build tool project revision r1655.
[mirror_edk2.git] / BaseTools / Tests / CheckPythonSyntax.py
diff --git a/BaseTools/Tests/CheckPythonSyntax.py b/BaseTools/Tests/CheckPythonSyntax.py
new file mode 100644 (file)
index 0000000..67d2ca4
--- /dev/null
@@ -0,0 +1,74 @@
+## @file
+#  Unit tests for checking syntax of Python source code
+#
+#  Copyright (c) 2009, Intel Corporation
+#
+#  All rights reserved. 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:
+            self.fail('syntax error: ' + filename)
+
+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)
+
+