[oe-commits] [openembedded-core] 02/10: meta: implement key baserunner features
git at git.openembedded.org
git at git.openembedded.org
Thu Sep 15 11:20:25 UTC 2016
rpurdie pushed a commit to branch master-next
in repository openembedded-core.
commit 54bb5b706fe4abcf39965be707d50b01465d947e
Author: zjh <junhuix.zhang at intel.com>
AuthorDate: Tue Sep 13 09:17:33 2016 +0800
meta: implement key baserunner features
Baserunner contains three features:
1. load cases from a manifest file
2. load cases from a package such as "oeqa.runtime"
3. create runner engine based on pyunit textrunner
Signed-off-by: zjh <junhuix.zhang at intel.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
meta/lib/base/baserunner.py | 44 ++++++++++++++++++++++++++++++++++++++------
1 file changed, 38 insertions(+), 6 deletions(-)
diff --git a/meta/lib/base/baserunner.py b/meta/lib/base/baserunner.py
index 56b838e..d59872f 100755
--- a/meta/lib/base/baserunner.py
+++ b/meta/lib/base/baserunner.py
@@ -31,30 +31,62 @@ class FakeOptions(object):
class TestRunnerBase(object):
'''test runner base '''
def __init__(self, context=None):
- self.tclist = []
+ self.testslist = []
self.runner = None
self.context = context if context else TestContext()
+ self.test_options = None
self.test_result = None
self.run_time = None
+ def __del__(self):
+ """
+ Because unittest.TestCase is a class object, it will exist as long as the python virtual machine process.
+ So tc can't be released if we don't release them explicitly.
+ """
+ if hasattr(unittest.TestCase, "tc"):
+ delattr(unittest.TestCase, "tc")
+
+ @staticmethod
+ def get_tc_from_manifest(fname):
+ '''get tc list from manifest format '''
+ with open(fname, "r") as f:
+ tclist = [n.strip() for n in f.readlines() \
+ if n.strip() and not n.strip().startswith('#')]
+ return tclist
def configure(self, options=FakeOptions()):
'''configure before testing'''
- pass
+ self.test_options = options
+ self.runner = unittest.TextTestRunner(stream=sys.stderr, \
+ verbosity=2)
def result(self):
'''output test result '''
- pass
+ return self.test_result
def loadtest(self, names=None):
'''load test suite'''
- pass
+ if names is None:
+ names = self.testslist
+ testloader = unittest.TestLoader()
+ tclist = []
+ for name in names:
+ tset = testloader.loadTestsFromName(name)
+ if tset.countTestCases() > 0:
+ tclist.append(tset)
+ elif tset._tests == []:
+ tclist.append(testloader.discover(name, "[!_]*.py", os.path.curdir))
+ return testloader.suiteClass(tclist)
def runtest(self, testsuite):
'''run test suite'''
- pass
+ starttime = time.time()
+ self.test_result = self.runner.run(testsuite)
+ self.run_time = time.time() - starttime
def start(self, testsuite):
'''start testing'''
- pass
+ setattr(unittest.TestCase, "tc", self.context)
+ self.runtest(testsuite)
+ self.result()
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list