diff options
Diffstat (limited to 'meta/lib/oeqa/utils/decorators.py')
| -rw-r--r-- | meta/lib/oeqa/utils/decorators.py | 85 | 
1 files changed, 0 insertions, 85 deletions
diff --git a/meta/lib/oeqa/utils/decorators.py b/meta/lib/oeqa/utils/decorators.py index aabf4110cb..ea90164e5e 100644 --- a/meta/lib/oeqa/utils/decorators.py +++ b/meta/lib/oeqa/utils/decorators.py  | |||
| @@ -16,91 +16,6 @@ import threading | |||
| 16 | import signal | 16 | import signal | 
| 17 | from functools import wraps | 17 | from functools import wraps | 
| 18 | 18 | ||
| 19 | #get the "result" object from one of the upper frames provided that one of these upper frames is a unittest.case frame | ||
| 20 | class getResults(object): | ||
| 21 | def __init__(self): | ||
| 22 | #dynamically determine the unittest.case frame and use it to get the name of the test method | ||
| 23 | ident = threading.current_thread().ident | ||
| 24 | upperf = sys._current_frames()[ident] | ||
| 25 | while (upperf.f_globals['__name__'] != 'unittest.case'): | ||
| 26 | upperf = upperf.f_back | ||
| 27 | |||
| 28 | def handleList(items): | ||
| 29 | ret = [] | ||
| 30 | # items is a list of tuples, (test, failure) or (_ErrorHandler(), Exception()) | ||
| 31 | for i in items: | ||
| 32 | s = i[0].id() | ||
| 33 | #Handle the _ErrorHolder objects from skipModule failures | ||
| 34 | if "setUpModule (" in s: | ||
| 35 | ret.append(s.replace("setUpModule (", "").replace(")","")) | ||
| 36 | else: | ||
| 37 | ret.append(s) | ||
| 38 | # Append also the test without the full path | ||
| 39 | testname = s.split('.')[-1] | ||
| 40 | if testname: | ||
| 41 | ret.append(testname) | ||
| 42 | return ret | ||
| 43 | self.faillist = handleList(upperf.f_locals['result'].failures) | ||
| 44 | self.errorlist = handleList(upperf.f_locals['result'].errors) | ||
| 45 | self.skiplist = handleList(upperf.f_locals['result'].skipped) | ||
| 46 | |||
| 47 | def getFailList(self): | ||
| 48 | return self.faillist | ||
| 49 | |||
| 50 | def getErrorList(self): | ||
| 51 | return self.errorlist | ||
| 52 | |||
| 53 | def getSkipList(self): | ||
| 54 | return self.skiplist | ||
| 55 | |||
| 56 | class skipIfFailure(object): | ||
| 57 | |||
| 58 | def __init__(self,testcase): | ||
| 59 | self.testcase = testcase | ||
| 60 | |||
| 61 | def __call__(self,f): | ||
| 62 | @wraps(f) | ||
| 63 | def wrapped_f(*args, **kwargs): | ||
| 64 | res = getResults() | ||
| 65 | if self.testcase in (res.getFailList() or res.getErrorList()): | ||
| 66 | raise unittest.SkipTest("Testcase dependency not met: %s" % self.testcase) | ||
| 67 | return f(*args, **kwargs) | ||
| 68 | wrapped_f.__name__ = f.__name__ | ||
| 69 | return wrapped_f | ||
| 70 | |||
| 71 | class skipIfSkipped(object): | ||
| 72 | |||
| 73 | def __init__(self,testcase): | ||
| 74 | self.testcase = testcase | ||
| 75 | |||
| 76 | def __call__(self,f): | ||
| 77 | @wraps(f) | ||
| 78 | def wrapped_f(*args, **kwargs): | ||
| 79 | res = getResults() | ||
| 80 | if self.testcase in res.getSkipList(): | ||
| 81 | raise unittest.SkipTest("Testcase dependency not met: %s" % self.testcase) | ||
| 82 | return f(*args, **kwargs) | ||
| 83 | wrapped_f.__name__ = f.__name__ | ||
| 84 | return wrapped_f | ||
| 85 | |||
| 86 | class skipUnlessPassed(object): | ||
| 87 | |||
| 88 | def __init__(self,testcase): | ||
| 89 | self.testcase = testcase | ||
| 90 | |||
| 91 | def __call__(self,f): | ||
| 92 | @wraps(f) | ||
| 93 | def wrapped_f(*args, **kwargs): | ||
| 94 | res = getResults() | ||
| 95 | if self.testcase in res.getSkipList() or \ | ||
| 96 | self.testcase in res.getFailList() or \ | ||
| 97 | self.testcase in res.getErrorList(): | ||
| 98 | raise unittest.SkipTest("Testcase dependency not met: %s" % self.testcase) | ||
| 99 | return f(*args, **kwargs) | ||
| 100 | wrapped_f.__name__ = f.__name__ | ||
| 101 | wrapped_f._depends_on = self.testcase | ||
| 102 | return wrapped_f | ||
| 103 | |||
| 104 | class testcase(object): | 19 | class testcase(object): | 
| 105 | def __init__(self, test_case): | 20 | def __init__(self, test_case): | 
| 106 | self.test_case = test_case | 21 | self.test_case = test_case | 
