blob: 7268e259395586f6baee30657bece246e6419e61 [file] [log] [blame]
Brad Bishopc342db32019-05-15 21:57:59 -04001#
2# SPDX-License-Identifier: MIT
3#
4
Brad Bishopd7bf8c12018-02-25 22:55:05 -05005import importlib
Brad Bishopd7bf8c12018-02-25 22:55:05 -05006import oeqa.selftest
7from oeqa.selftest.case import OESelftestTestCase
Brad Bishopd7bf8c12018-02-25 22:55:05 -05008
9class ExternalLayer(OESelftestTestCase):
10
Brad Bishopd7bf8c12018-02-25 22:55:05 -050011 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