From e50b415aaaa1581473f85f0a8afa278b5f95129b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= Date: Wed, 26 Jul 2017 10:04:09 -0500 Subject: oeqa/{core,selftest}: Add support to validate if a specified test case isn't found MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If some test module/case is specified to run and isn't found the OEQA framework didn't notice it, so complete the implementation using modules_required and validate for the test case prescense. Raise an exception when the test module/case required isn't found. [YOCTO #11645] Signed-off-by: Aníbal Limón Signed-off-by: Richard Purdie --- meta/lib/oeqa/core/loader.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'meta/lib/oeqa/core/loader.py') diff --git a/meta/lib/oeqa/core/loader.py b/meta/lib/oeqa/core/loader.py index e4c218b57f..332086a13d 100644 --- a/meta/lib/oeqa/core/loader.py +++ b/meta/lib/oeqa/core/loader.py @@ -9,6 +9,7 @@ import inspect from oeqa.core.utils.path import findFile from oeqa.core.utils.test import getSuiteModules, getCaseID +from oeqa.core.exception import OEQATestNotFound from oeqa.core.case import OETestCase from oeqa.core.decorator import decoratorClasses, OETestDecorator, \ OETestFilter, OETestDiscover @@ -277,6 +278,28 @@ class OETestLoader(unittest.TestLoader): return self.suiteClass(suite) + def _required_modules_validation(self): + """ + Search in Test context registry if a required + test is found, raise an exception when not found. + """ + + for module in self.modules_required: + found = False + + # The module name is splitted to only compare the + # first part of a test case id. + comp_len = len(module.split('.')) + for case in self.tc._registry['cases']: + case_comp = '.'.join(case.split('.')[0:comp_len]) + if module == case_comp: + found = True + break + + if not found: + raise OEQATestNotFound("Not found %s in loaded test cases" % \ + module) + def discover(self): big_suite = self.suiteClass() for path in self.module_paths: @@ -291,6 +314,9 @@ class OETestLoader(unittest.TestLoader): for clss in discover_classes: cases = clss.discover(self.tc._registry) + if self.modules_required: + self._required_modules_validation() + return self.suiteClass(cases) if cases else big_suite def _filterModule(self, module): -- cgit v1.2.3