selftest/seltest.py: Add test to check imports from other layers

This tests adds a check of selftest itself to verify if can
add test from other layers.

[YOCTO #9770]

(From OE-Core rev: 4fe4c408246b9a4a563106d097876e6caefca694)

Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
Signed-off-by: Jose Perez Carranza <jose.perez.carranza@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jose Perez Carranza 2017-06-22 09:16:32 -07:00 committed by Richard Purdie
parent 3e71c57780
commit f44c923bb9
2 changed files with 67 additions and 0 deletions

View File

@ -0,0 +1,16 @@
#from oeqa.selftest.base import oeSelfTest
from oeqa.selftest.case import OESelftestTestCase
#from oeqa.utils.decorators import testcase
class ImportedTests(OESelftestTestCase):
def test_unconditional_pass(self):
"""
Summary: Doesn't check anything, used to check import test from other layers.
Expected: 1. Pass unconditionally
Product: oe-core
Author: Mariano Lopez <mariano.lopez@intel.com
"""
self.assertEqual(True, True, msg = "Impossible to fail this test")

View File

@ -0,0 +1,51 @@
import importlib
from oeqa.utils.commands import runCmd
import oeqa.selftest
from oeqa.selftest.case import OESelftestTestCase
from oeqa.core.decorator.oeid import OETestID
class ExternalLayer(OESelftestTestCase):
@OETestID(1885)
def test_list_imported(self):
"""
Summary: Checks functionality to import tests from other layers.
Expected: 1. File "external-layer.py" must be in
oeqa.selftest.__path__
2. test_unconditional_pas method must exists
in ImportedTests class
Product: oe-core
Author: Mariano Lopez <mariano.lopez@intel.com>
"""
test_file = "external-layer.py"
test_module = "oeqa.selftest.cases.external-layer"
method_name = "test_unconditional_pass"
# Check if "external-layer.py" is in oeqa path
found_file = search_test_file(test_file)
self.assertTrue(found_file, msg="Can't find %s in the oeqa path" % test_file)
# Import oeqa.selftest.external-layer module and search for
# test_unconditional_pass method of ImportedTests class
found_method = search_method(test_module, method_name)
self.assertTrue(method_name, msg="Can't find %s method" % method_name)
def search_test_file(file_name):
for layer_path in oeqa.selftest.__path__:
for _, _, files in os.walk(layer_path):
for f in files:
if f == file_name:
return True
return False
def search_method(module, method):
modlib = importlib.import_module(module)
for var in vars(modlib):
klass = vars(modlib)[var]
if isinstance(klass, type(OESelftestTestCase)) and issubclass(klass, OESelftestTestCase):
for m in dir(klass):
if m == method:
return True
return False