tests,python: Upgrading testlib to function with Python2

Change-Id: I9926b1507e9069ae8564c31bdd377b2b916462a2
Issue-on: https://gem5.atlassian.net/browse/GEM5-395
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29088
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Bobby R. Bruce
2020-04-16 11:55:17 -07:00
parent 80a2636983
commit 7ffd684334
31 changed files with 190 additions and 164 deletions

View File

@@ -67,16 +67,17 @@ a :class:`TestSuite` named after the module.
import os
import re
import six
import sys
import traceback
import config
import log
import suite as suite_mod
import test as test_mod
import fixture as fixture_mod
import wrappers
import uid
import testlib.configuration as configuration
import testlib.log as log
import testlib.suite as suite_mod
import testlib.test_util as test_mod
import testlib.fixture as fixture_mod
import testlib.wrappers as wrappers
import testlib.uid as uid
class DuplicateTestItemException(Exception):
'''
@@ -112,7 +113,7 @@ def _assert_files_in_same_dir(files):
if files:
directory = os.path.dirname(files[0])
for f in files:
assert os.path.dirname(f) == directory
assert(os.path.dirname(f) == directory)
class Loader(object):
'''
@@ -186,6 +187,7 @@ class Loader(object):
self._loaded_a_file = True
for directory in self._discover_files(root):
directory = list(directory)
if directory:
_assert_files_in_same_dir(directory)
for f in directory:
@@ -193,6 +195,7 @@ class Loader(object):
def load_dir(self, directory):
for dir_ in self._discover_files(directory):
directory = list(directory)
_assert_files_in_same_dir(dir_)
for f in dir_:
self.load_file(f)
@@ -221,29 +224,27 @@ class Loader(object):
sys.path.insert(0, os.path.dirname(path))
cwd = os.getcwd()
os.chdir(os.path.dirname(path))
config.config.file_under_load = path
configuration.config.file_under_load = path
new_tests = test_mod.TestCase.collector.create()
new_suites = suite_mod.TestSuite.collector.create()
new_fixtures = fixture_mod.Fixture.collector.create()
def cleanup():
config.config.file_under_load = None
sys.path[:] = old_path
os.chdir(cwd)
test_mod.TestCase.collector.remove(new_tests)
suite_mod.TestSuite.collector.remove(new_suites)
fixture_mod.Fixture.collector.remove(new_fixtures)
try:
execfile(path, newdict, newdict)
exec(open(path).read(), newdict, newdict)
except Exception as e:
log.test_log.debug(traceback.format_exc())
log.test_log.warn(
'Exception thrown while loading "%s"\n'
'Ignoring all tests in this file.'
% (path))
cleanup()
# Clean up
configuration.config.file_under_load = None
sys.path[:] = old_path
os.chdir(cwd)
test_mod.TestCase.collector.remove(new_tests)
suite_mod.TestSuite.collector.remove(new_suites)
fixture_mod.Fixture.collector.remove(new_fixtures)
return
# Create a module test suite for those not contained in a suite.
@@ -281,7 +282,13 @@ class Loader(object):
self.suites.extend(loaded_suites)
self.suite_uids.update({suite.uid: suite
for suite in loaded_suites})
cleanup()
# Clean up
configuration.config.file_under_load = None
sys.path[:] = old_path
os.chdir(cwd)
test_mod.TestCase.collector.remove(new_tests)
suite_mod.TestSuite.collector.remove(new_suites)
fixture_mod.Fixture.collector.remove(new_fixtures)
def _discover_files(self, root):
'''