diff options
author | Aníbal Limón <anibal.limon@linux.intel.com> | 2017-06-08 11:32:05 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-06-12 15:08:30 +0100 |
commit | 0b168b269b497383d01e71db585235948b71a3f8 (patch) | |
tree | 3241000fd819712855e921d0848460c551d67931 | |
parent | c3587b7d1005c8564e54263768d0088afbb5c946 (diff) | |
download | poky-0b168b269b497383d01e71db585235948b71a3f8.tar.gz |
oeqa/core/loader: Allow unittest.TestCase's to be executed
Currently there was a restriction to only execute tests that's
inherits from OETestCase but in some circunstancies the features
from the OEQA framework isn't needed so we need to support
basic unittests.
[YOCTO #10828]
(From OE-Core rev: baac26f1b36e89e07637b738dd31ec7356f05a02)
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/lib/oeqa/core/loader.py | 12 | ||||
-rw-r--r-- | meta/lib/oeqa/core/runner.py | 25 |
2 files changed, 21 insertions, 16 deletions
diff --git a/meta/lib/oeqa/core/loader.py b/meta/lib/oeqa/core/loader.py index 166fc35b4f..d110881698 100644 --- a/meta/lib/oeqa/core/loader.py +++ b/meta/lib/oeqa/core/loader.py | |||
@@ -185,7 +185,7 @@ class OETestLoader(unittest.TestLoader): | |||
185 | return True | 185 | return True |
186 | 186 | ||
187 | # Decorator filters | 187 | # Decorator filters |
188 | if self.filters: | 188 | if self.filters and isinstance(case, OETestCase): |
189 | filters = self.filters.copy() | 189 | filters = self.filters.copy() |
190 | case_decorators = [cd for cd in case.decorators | 190 | case_decorators = [cd for cd in case.decorators |
191 | if cd.__class__ in self.used_filters] | 191 | if cd.__class__ in self.used_filters] |
@@ -203,7 +203,8 @@ class OETestLoader(unittest.TestLoader): | |||
203 | return False | 203 | return False |
204 | 204 | ||
205 | def _getTestCase(self, testCaseClass, tcName): | 205 | def _getTestCase(self, testCaseClass, tcName): |
206 | if not hasattr(testCaseClass, '__oeqa_loader'): | 206 | if not hasattr(testCaseClass, '__oeqa_loader') and \ |
207 | issubclass(testCaseClass, OETestCase): | ||
207 | # In order to support data_vars validation | 208 | # In order to support data_vars validation |
208 | # monkey patch the default setUp/tearDown{Class} to use | 209 | # monkey patch the default setUp/tearDown{Class} to use |
209 | # the ones provided by OETestCase | 210 | # the ones provided by OETestCase |
@@ -230,7 +231,8 @@ class OETestLoader(unittest.TestLoader): | |||
230 | setattr(testCaseClass, '__oeqa_loader', True) | 231 | setattr(testCaseClass, '__oeqa_loader', True) |
231 | 232 | ||
232 | case = testCaseClass(tcName) | 233 | case = testCaseClass(tcName) |
233 | setattr(case, 'decorators', []) | 234 | if isinstance(case, OETestCase): |
235 | setattr(case, 'decorators', []) | ||
234 | 236 | ||
235 | return case | 237 | return case |
236 | 238 | ||
@@ -242,9 +244,9 @@ class OETestLoader(unittest.TestLoader): | |||
242 | raise TypeError("Test cases should not be derived from TestSuite." \ | 244 | raise TypeError("Test cases should not be derived from TestSuite." \ |
243 | " Maybe you meant to derive %s from TestCase?" \ | 245 | " Maybe you meant to derive %s from TestCase?" \ |
244 | % testCaseClass.__name__) | 246 | % testCaseClass.__name__) |
245 | if not issubclass(testCaseClass, self.caseClass): | 247 | if not issubclass(testCaseClass, unittest.case.TestCase): |
246 | raise TypeError("Test %s is not derived from %s" % \ | 248 | raise TypeError("Test %s is not derived from %s" % \ |
247 | (testCaseClass.__name__, self.caseClass.__name__)) | 249 | (testCaseClass.__name__, unittest.case.TestCase.__name__)) |
248 | 250 | ||
249 | testCaseNames = self.getTestCaseNames(testCaseClass) | 251 | testCaseNames = self.getTestCaseNames(testCaseClass) |
250 | if not testCaseNames and hasattr(testCaseClass, 'runTest'): | 252 | if not testCaseNames and hasattr(testCaseClass, 'runTest'): |
diff --git a/meta/lib/oeqa/core/runner.py b/meta/lib/oeqa/core/runner.py index 7ce718e784..532b25b98a 100644 --- a/meta/lib/oeqa/core/runner.py +++ b/meta/lib/oeqa/core/runner.py | |||
@@ -121,9 +121,10 @@ class OETestResult(_TestResult): | |||
121 | break | 121 | break |
122 | 122 | ||
123 | oeid = -1 | 123 | oeid = -1 |
124 | for d in case.decorators: | 124 | if hasattr(case, 'decorators'): |
125 | if hasattr(d, 'oeid'): | 125 | for d in case.decorators: |
126 | oeid = d.oeid | 126 | if hasattr(d, 'oeid'): |
127 | oeid = d.oeid | ||
127 | 128 | ||
128 | if fail: | 129 | if fail: |
129 | self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(), | 130 | self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(), |
@@ -188,9 +189,10 @@ class OETestRunner(_TestRunner): | |||
188 | def _list_cases_without_id(logger, case): | 189 | def _list_cases_without_id(logger, case): |
189 | 190 | ||
190 | found_id = False | 191 | found_id = False |
191 | for d in case.decorators: | 192 | if hasattr(case, 'decorators'): |
192 | if isinstance(d, OETestID): | 193 | for d in case.decorators: |
193 | found_id = True | 194 | if isinstance(d, OETestID): |
195 | found_id = True | ||
194 | 196 | ||
195 | if not found_id: | 197 | if not found_id: |
196 | logger.info('oeid missing for %s' % case.id()) | 198 | logger.info('oeid missing for %s' % case.id()) |
@@ -199,11 +201,12 @@ class OETestRunner(_TestRunner): | |||
199 | oeid = None | 201 | oeid = None |
200 | oetag = None | 202 | oetag = None |
201 | 203 | ||
202 | for d in case.decorators: | 204 | if hasattr(case, 'decorators'): |
203 | if isinstance(d, OETestID): | 205 | for d in case.decorators: |
204 | oeid = d.oeid | 206 | if isinstance(d, OETestID): |
205 | elif isinstance(d, OETestTag): | 207 | oeid = d.oeid |
206 | oetag = d.oetag | 208 | elif isinstance(d, OETestTag): |
209 | oetag = d.oetag | ||
207 | 210 | ||
208 | logger.info("%s\t%s\t\t%s" % (oeid, oetag, case.id())) | 211 | logger.info("%s\t%s\t\t%s" % (oeid, oetag, case.id())) |
209 | 212 | ||