1# 2# SPDX-License-Identifier: MIT 3# 4 5import importlib 6import oeqa.selftest 7from oeqa.selftest.case import OESelftestTestCase 8 9class ExternalLayer(OESelftestTestCase): 10 11 def test_list_imported(self): 12 """ 13 Summary: Checks functionality to import tests from other layers. 14 Expected: 1. File "external-layer.py" must be in 15 oeqa.selftest.__path__ 16 2. test_unconditional_pas method must exists 17 in ImportedTests class 18 Product: oe-core 19 Author: Mariano Lopez <mariano.lopez@intel.com> 20 """ 21 22 test_file = "external-layer.py" 23 test_module = "oeqa.selftest.cases.external-layer" 24 method_name = "test_unconditional_pass" 25 26 # Check if "external-layer.py" is in oeqa path 27 found_file = search_test_file(test_file) 28 self.assertTrue(found_file, msg="Can't find %s in the oeqa path" % test_file) 29 30 # Import oeqa.selftest.external-layer module and search for 31 # test_unconditional_pass method of ImportedTests class 32 found_method = search_method(test_module, method_name) 33 self.assertTrue(method_name, msg="Can't find %s method" % method_name) 34 35def search_test_file(file_name): 36 for layer_path in oeqa.selftest.__path__: 37 for _, _, files in os.walk(layer_path): 38 for f in files: 39 if f == file_name: 40 return True 41 return False 42 43def search_method(module, method): 44 modlib = importlib.import_module(module) 45 for var in vars(modlib): 46 klass = vars(modlib)[var] 47 if isinstance(klass, type(OESelftestTestCase)) and issubclass(klass, OESelftestTestCase): 48 for m in dir(klass): 49 if m == method: 50 return True 51 return False 52 53