]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Tests/TestTools.py
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / BaseTools / Tests / TestTools.py
index ac009db1fa66414e67f6dec18b84698e3c4cff9f..1099fd4eeaea074fc8a6f620874cfdcf60afcd27 100644 (file)
@@ -1,15 +1,10 @@
+from __future__ import print_function\r
 ## @file\r
 # Utility functions and classes for BaseTools unit tests\r
 #\r
-#  Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>\r
 #\r
-#  This program and the accompanying materials\r
-#  are licensed and made available under the terms and conditions of the BSD License\r
-#  which accompanies this distribution.  The full text of the license may be found at\r
-#  http://opensource.org/licenses/bsd-license.php\r
-#\r
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 \r
 ##\r
@@ -22,8 +17,8 @@ import random
 import shutil\r
 import subprocess\r
 import sys\r
-import types\r
 import unittest\r
+import codecs\r
 \r
 TestsDir = os.path.realpath(os.path.split(sys.argv[0])[0])\r
 BaseToolsDir = os.path.realpath(os.path.join(TestsDir, '..'))\r
@@ -31,10 +26,17 @@ CSourceDir = os.path.join(BaseToolsDir, 'Source', 'C')
 PythonSourceDir = os.path.join(BaseToolsDir, 'Source', 'Python')\r
 TestTempDir = os.path.join(TestsDir, 'TestTempDir')\r
 \r
+if PythonSourceDir not in sys.path:\r
+    #\r
+    # Allow unit tests to import BaseTools python modules. This is very useful\r
+    # for writing unit tests.\r
+    #\r
+    sys.path.append(PythonSourceDir)\r
+\r
 def MakeTheTestSuite(localItems):\r
     tests = []\r
-    for name, item in localItems.iteritems():\r
-        if isinstance(item, types.TypeType):\r
+    for name, item in localItems.items():\r
+        if isinstance(item, type):\r
             if issubclass(item, unittest.TestCase):\r
                 tests.append(unittest.TestLoader().loadTestsFromTestCase(item))\r
             elif issubclass(item, unittest.TestSuite):\r
@@ -71,7 +73,7 @@ class BaseToolsTest(unittest.TestCase):
     def HandleTreeDeleteError(self, function, path, excinfo):\r
         os.chmod(path, stat.S_IWRITE)\r
         function(path)\r
-    \r
+\r
     def RemoveDir(self, dir):\r
         shutil.rmtree(dir, False, self.HandleTreeDeleteError)\r
 \r
@@ -84,9 +86,9 @@ class BaseToolsTest(unittest.TestCase):
             os.remove(path)\r
 \r
     def DisplayBinaryData(self, description, data):\r
-        print description, '(base64 encoded):'\r
+        print(description, '(base64 encoded):')\r
         b64data = base64.b64encode(data)\r
-        print b64data\r
+        print(b64data)\r
 \r
     def DisplayFile(self, fileName):\r
         sys.stdout.write(self.ReadTmpFile(fileName))\r
@@ -139,9 +141,12 @@ class BaseToolsTest(unittest.TestCase):
         return data\r
 \r
     def WriteTmpFile(self, fileName, data):\r
-        f = open(self.GetTmpFilePath(fileName), 'w')\r
-        f.write(data)\r
-        f.close()\r
+        if isinstance(data, bytes):\r
+            with open(self.GetTmpFilePath(fileName), 'wb') as f:\r
+                f.write(data)\r
+        else:\r
+            with codecs.open(self.GetTmpFilePath(fileName), 'w', encoding='utf-8') as f:\r
+                f.write(data)\r
 \r
     def GenRandomFileData(self, fileName, minlen = None, maxlen = None):\r
         if maxlen is None: maxlen = minlen\r
@@ -153,8 +158,8 @@ class BaseToolsTest(unittest.TestCase):
         if minlen is None: minlen = 1024\r
         if maxlen is None: maxlen = minlen\r
         return ''.join(\r
-            [chr(random.randint(0,255))\r
-             for x in xrange(random.randint(minlen, maxlen))\r
+            [chr(random.randint(0, 255))\r
+             for x in range(random.randint(minlen, maxlen))\r
             ])\r
 \r
     def setUp(self):\r