diff options
| author | Mariano Lopez <mariano.lopez@linux.intel.com> | 2016-05-24 12:44:11 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-05-30 15:58:11 +0100 |
| commit | daf0cc3745bc309e5e9566f737d113c744c5ffb3 (patch) | |
| tree | af8c76a10c64edb61cfd63b52dc8f74cb3604a7a | |
| parent | 549f134970b0ba0ad06256d7514b4bea1419da27 (diff) | |
| download | poky-daf0cc3745bc309e5e9566f737d113c744c5ffb3.tar.gz | |
oetest.py: Move getTests() outside loadTests() method
The method getTests() can be useful to all the class,
not just to loadTests().
[YOCTO #8694]
(From OE-Core rev: 667a4549bd51a6e4b487006f4cc1542d2961757a)
Signed-off-by: Mariano Lopez <mariano.lopez@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/oetest.py | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/meta/lib/oeqa/oetest.py b/meta/lib/oeqa/oetest.py index 70db119e39..8ad3715aec 100644 --- a/meta/lib/oeqa/oetest.py +++ b/meta/lib/oeqa/oetest.py | |||
| @@ -264,6 +264,22 @@ class TestContext(object): | |||
| 264 | 264 | ||
| 265 | return testslist | 265 | return testslist |
| 266 | 266 | ||
| 267 | def getTests(self, test): | ||
| 268 | '''Return all individual tests executed when running the suite.''' | ||
| 269 | # Unfortunately unittest does not have an API for this, so we have | ||
| 270 | # to rely on implementation details. This only needs to work | ||
| 271 | # for TestSuite containing TestCase. | ||
| 272 | method = getattr(test, '_testMethodName', None) | ||
| 273 | if method: | ||
| 274 | # leaf case: a TestCase | ||
| 275 | yield test | ||
| 276 | else: | ||
| 277 | # Look into TestSuite. | ||
| 278 | tests = getattr(test, '_tests', []) | ||
| 279 | for t1 in tests: | ||
| 280 | for t2 in self.getTests(t1): | ||
| 281 | yield t2 | ||
| 282 | |||
| 267 | def loadTests(self): | 283 | def loadTests(self): |
| 268 | setattr(oeTest, "tc", self) | 284 | setattr(oeTest, "tc", self) |
| 269 | 285 | ||
| @@ -272,36 +288,20 @@ class TestContext(object): | |||
| 272 | suites = [testloader.loadTestsFromName(name) for name in self.testslist] | 288 | suites = [testloader.loadTestsFromName(name) for name in self.testslist] |
| 273 | suites = filterByTagExp(suites, getattr(self, "tagexp", None)) | 289 | suites = filterByTagExp(suites, getattr(self, "tagexp", None)) |
| 274 | 290 | ||
| 275 | def getTests(test): | ||
| 276 | '''Return all individual tests executed when running the suite.''' | ||
| 277 | # Unfortunately unittest does not have an API for this, so we have | ||
| 278 | # to rely on implementation details. This only needs to work | ||
| 279 | # for TestSuite containing TestCase. | ||
| 280 | method = getattr(test, '_testMethodName', None) | ||
| 281 | if method: | ||
| 282 | # leaf case: a TestCase | ||
| 283 | yield test | ||
| 284 | else: | ||
| 285 | # Look into TestSuite. | ||
| 286 | tests = getattr(test, '_tests', []) | ||
| 287 | for t1 in tests: | ||
| 288 | for t2 in getTests(t1): | ||
| 289 | yield t2 | ||
| 290 | |||
| 291 | # Determine dependencies between suites by looking for @skipUnlessPassed | 291 | # Determine dependencies between suites by looking for @skipUnlessPassed |
| 292 | # method annotations. Suite A depends on suite B if any method in A | 292 | # method annotations. Suite A depends on suite B if any method in A |
| 293 | # depends on a method on B. | 293 | # depends on a method on B. |
| 294 | for suite in suites: | 294 | for suite in suites: |
| 295 | suite.dependencies = [] | 295 | suite.dependencies = [] |
| 296 | suite.depth = 0 | 296 | suite.depth = 0 |
| 297 | for test in getTests(suite): | 297 | for test in self.getTests(suite): |
| 298 | methodname = getattr(test, '_testMethodName', None) | 298 | methodname = getattr(test, '_testMethodName', None) |
| 299 | if methodname: | 299 | if methodname: |
| 300 | method = getattr(test, methodname) | 300 | method = getattr(test, methodname) |
| 301 | depends_on = getattr(method, '_depends_on', None) | 301 | depends_on = getattr(method, '_depends_on', None) |
| 302 | if depends_on: | 302 | if depends_on: |
| 303 | for dep_suite in suites: | 303 | for dep_suite in suites: |
| 304 | if depends_on in [getattr(t, '_testMethodName', None) for t in getTests(dep_suite)]: | 304 | if depends_on in [getattr(t, '_testMethodName', None) for t in self.getTests(dep_suite)]: |
| 305 | if dep_suite not in suite.dependencies and \ | 305 | if dep_suite not in suite.dependencies and \ |
| 306 | dep_suite is not suite: | 306 | dep_suite is not suite: |
| 307 | suite.dependencies.append(dep_suite) | 307 | suite.dependencies.append(dep_suite) |
