diff options
Diffstat (limited to 'BaseTools/Tests/TestTools.py')
-rw-r--r-- | BaseTools/Tests/TestTools.py | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/BaseTools/Tests/TestTools.py b/BaseTools/Tests/TestTools.py deleted file mode 100644 index 4a70e92bcd..0000000000 --- a/BaseTools/Tests/TestTools.py +++ /dev/null @@ -1,172 +0,0 @@ -## @file -# Utility functions and classes for BaseTools unit tests -# -# Copyright (c) 2008, 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 base64 -import os -import os.path -import random -import shutil -import subprocess -import sys -import types -import unittest - -TestsDir = os.path.realpath(os.path.split(sys.argv[0])[0]) -BaseToolsDir = os.path.realpath(os.path.join(TestsDir, '..')) -CSourceDir = os.path.join(BaseToolsDir, 'Source', 'C') -PythonSourceDir = os.path.join(BaseToolsDir, 'Source', 'Python') -TestTempDir = os.path.join(TestsDir, 'TestTempDir') - -def MakeTheTestSuite(localItems): - tests = [] - for name, item in localItems.iteritems(): - if isinstance(item, types.TypeType): - if issubclass(item, unittest.TestCase): - tests.append(unittest.TestLoader().loadTestsFromTestCase(item)) - elif issubclass(item, unittest.TestSuite): - tests.append(item()) - return lambda: unittest.TestSuite(tests) - -def GetBaseToolsPath(): - if sys.platform in ('win32', 'win64'): - return os.path.join(BaseToolsDir, 'Bin', sys.platform.title()) - elif sys.platform in ('cygwin'): - uname = os.popen('uname -sm').read().strip() - for char in (' ', '/'): - uname = uname.replace(char, '-') - return os.path.join(BaseToolsDir, 'Bin', uname) - else: - uname = os.popen('uname -sm').read().strip() - for char in (' ', '/'): - uname = uname.replace(char, '-') - return os.path.join(BaseToolsDir, 'BinWrappers', uname) - -BaseToolsBinPath = GetBaseToolsPath() - -class BaseToolsTest(unittest.TestCase): - - def cleanOutDir(self, dir): - for dirItem in os.listdir(dir): - if dirItem in ('.', '..'): continue - dirItem = os.path.join(dir, dirItem) - self.RemoveFileOrDir(dirItem) - - def CleanUpTmpDir(self): - if os.path.exists(self.testDir): - self.cleanOutDir(self.testDir) - - def HandleTreeDeleteError(self, function, path, excinfo): - os.chmod(path, stat.S_IWRITE) - function(path) - - def RemoveDir(self, dir): - shutil.rmtree(dir, False, self.HandleTreeDeleteError) - - def RemoveFileOrDir(self, path): - if not os.path.exists(path): - return - elif os.path.isdir(path): - self.RemoveDir(path) - else: - os.remove(path) - - def DisplayBinaryData(self, description, data): - print description, '(base64 encoded):' - b64data = base64.b64encode(data) - print b64data - - def DisplayFile(self, fileName): - sys.stdout.write(self.ReadTmpFile(fileName)) - sys.stdout.flush() - - def RunTool(self, *args, **kwd): - if 'toolName' in kwd: toolName = kwd['toolName'] - else: toolName = None - if 'logFile' in kwd: logFile = kwd['logFile'] - else: logFile = None - - if toolName is None: toolName = self.toolName - bin = os.path.join(self.baseToolsBins, toolName) - if logFile is not None: - logFile = open(os.path.join(self.testDir, logFile), 'w') - popenOut = logFile - else: - popenOut = subprocess.PIPE - - args = [toolName] + list(args) - - Proc = subprocess.Popen( - args, executable=bin, - stdout=popenOut, stderr=subprocess.STDOUT - ) - - if logFile is None: - Proc.stdout.read() - - return Proc.wait() - - def GetTmpFilePath(self, fileName): - return os.path.join(self.testDir, fileName) - - def OpenTmpFile(self, fileName, mode = 'r'): - return open(os.path.join(self.testDir, fileName), mode) - - def ReadTmpFile(self, fileName): - f = open(self.GetTmpFilePath(fileName), 'r') - data = f.read() - f.close() - return data - - def WriteTmpFile(self, fileName, data): - f = open(self.GetTmpFilePath(fileName), 'w') - f.write(data) - f.close() - - def GenRandomFileData(self, fileName, minlen = None, maxlen = None): - if maxlen is None: maxlen = minlen - f = self.OpenTmpFile(fileName, 'w') - f.write(self.GetRandomString(minlen, maxlen)) - f.close() - - def GetRandomString(self, minlen = None, maxlen = None): - if minlen is None: minlen = 1024 - if maxlen is None: maxlen = minlen - return ''.join( - [chr(random.randint(0,255)) - for x in xrange(random.randint(minlen, maxlen)) - ]) - - def setUp(self): - self.savedEnvPath = os.environ['PATH'] - self.savedSysPath = sys.path[:] - - self.baseToolsBins = BaseToolsBinPath - os.environ['PATH'] = \ - os.path.pathsep.join((os.environ['PATH'], self.baseToolsBins)) - - self.testDir = TestTempDir - if not os.path.exists(self.testDir): - os.mkdir(self.testDir) - else: - self.cleanOutDir(self.testDir) - - def tearDown(self): - self.RemoveFileOrDir(self.testDir) - - os.environ['PATH'] = self.savedEnvPath - sys.path = self.savedSysPath - |