+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
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
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
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
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
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
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