aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oeqa/oetest.py17
-rw-r--r--meta/lib/oeqa/utils/decorators.py40
2 files changed, 34 insertions, 23 deletions
diff --git a/meta/lib/oeqa/oetest.py b/meta/lib/oeqa/oetest.py
index 0db6cb80a9..ecb8e53705 100644
--- a/meta/lib/oeqa/oetest.py
+++ b/meta/lib/oeqa/oetest.py
@@ -11,7 +11,6 @@ import os, re, mmap
import unittest
import inspect
-
def loadTests(tc):
# set the context object passed from the test class
@@ -36,24 +35,9 @@ def runTests(tc):
return result
-
class oeTest(unittest.TestCase):
longMessage = True
- testFailures = []
- testSkipped = []
- testErrors = []
-
- def run(self, result=None):
- super(oeTest, self).run(result)
-
- # we add to our own lists the results, we use those for decorators
- if len(result.failures) > len(oeTest.testFailures):
- oeTest.testFailures.append(str(result.failures[-1][0]).split()[0])
- if len(result.skipped) > len(oeTest.testSkipped):
- oeTest.testSkipped.append(str(result.skipped[-1][0]).split()[0])
- if len(result.errors) > len(oeTest.testErrors):
- oeTest.testErrors.append(str(result.errors[-1][0]).split()[0])
@classmethod
def hasPackage(self, pkg):
@@ -71,7 +55,6 @@ class oeTest(unittest.TestCase):
else:
return False
-
class oeRuntimeTest(oeTest):
def __init__(self, methodName='runTest'):
diff --git a/meta/lib/oeqa/utils/decorators.py b/meta/lib/oeqa/utils/decorators.py
index a0d94e6d24..439e80a42b 100644
--- a/meta/lib/oeqa/utils/decorators.py
+++ b/meta/lib/oeqa/utils/decorators.py
@@ -6,9 +6,34 @@
# Most useful is skipUnlessPassed which can be used for
# creating dependecies between two test methods.
-from oeqa.oetest import *
import logging
import sys
+import unittest
+
+#get the "result" object from one of the upper frames provided that one of these upper frames is a unittest.case frame
+class getResults(object):
+ def __init__(self):
+ #dynamically determine the unittest.case frame and use it to get the name of the test method
+ upperf = sys._current_frames().values()[0]
+ while (upperf.f_globals['__name__'] != 'unittest.case'):
+ upperf = upperf.f_back
+ self.faillist = [ seq[0]._testMethodName for seq in upperf.f_locals['result'].failures ]
+ self.errorlist = [ seq[0]._testMethodName for seq in upperf.f_locals['result'].errors ]
+ #ignore the _ErrorHolder objects from the skipped tests list
+ self.skiplist = []
+ for seq in upperf.f_locals['result'].skipped:
+ try:
+ self.skiplist.append(seq[0]._testMethodName)
+ except: pass
+
+ def getFailList(self):
+ return self.faillist
+
+ def getErrorList(self):
+ return self.errorlist
+
+ def getSkipList(self):
+ return self.skiplist
class skipIfFailure(object):
@@ -17,7 +42,8 @@ class skipIfFailure(object):
def __call__(self,f):
def wrapped_f(*args):
- if self.testcase in (oeTest.testFailures or oeTest.testErrors):
+ res = getResults()
+ if self.testcase in (res.getFailList() or res.getErrorList()):
raise unittest.SkipTest("Testcase dependency not met: %s" % self.testcase)
return f(*args)
wrapped_f.__name__ = f.__name__
@@ -30,7 +56,8 @@ class skipIfSkipped(object):
def __call__(self,f):
def wrapped_f(*args):
- if self.testcase in oeTest.testSkipped:
+ res = getResults()
+ if self.testcase in res.getSkipList():
raise unittest.SkipTest("Testcase dependency not met: %s" % self.testcase)
return f(*args)
wrapped_f.__name__ = f.__name__
@@ -43,9 +70,10 @@ class skipUnlessPassed(object):
def __call__(self,f):
def wrapped_f(*args):
- if self.testcase in oeTest.testSkipped or \
- self.testcase in oeTest.testFailures or \
- self.testcase in oeTest.testErrors:
+ res = getResults()
+ if self.testcase in res.getSkipList() or \
+ self.testcase in res.getFailList() or \
+ self.testcase in res.getErrorList():
raise unittest.SkipTest("Testcase dependency not met: %s" % self.testcase)
return f(*args)
wrapped_f.__name__ = f.__name__