oeqa/core: Add utils module for OEQA framework

misc: Functions for transform object to other types.
path: Functions for path handling.
test: Functions for operations related to test cases and suites.

[YOCTO #10232]

(From OE-Core rev: 102d04ccca3ca89d41b76a8c44e0ca0f436b7004)

Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Mariano Lopez 2016-11-09 10:33:42 -06:00 committed by Richard Purdie
parent 08714d3b7e
commit abb55ab304
4 changed files with 127 additions and 0 deletions

View File

View File

@ -0,0 +1,37 @@
# Copyright (C) 2016 Intel Corporation
# Released under the MIT license (see COPYING.MIT)
def toList(obj, obj_type, obj_name="Object"):
if isinstance(obj, obj_type):
return [obj]
elif isinstance(obj, list):
return obj
else:
raise TypeError("%s must be %s or list" % (obj_name, obj_type))
def toSet(obj, obj_type, obj_name="Object"):
if isinstance(obj, obj_type):
return {obj}
elif isinstance(obj, list):
return set(obj)
elif isinstance(obj, set):
return obj
else:
raise TypeError("%s must be %s or set" % (obj_name, obj_type))
def strToList(obj, obj_name="Object"):
return toList(obj, str, obj_name)
def strToSet(obj, obj_name="Object"):
return toSet(obj, str, obj_name)
def intToList(obj, obj_name="Object"):
return toList(obj, int, obj_name)
def dataStoteToDict(d, variables):
data = {}
for v in variables:
data[v] = d.getVar(v, True)
return data

View File

@ -0,0 +1,19 @@
# Copyright (C) 2016 Intel Corporation
# Released under the MIT license (see COPYING.MIT)
import os
import sys
def findFile(file_name, directory):
"""
Search for a file in directory and returns its complete path.
"""
for r, d, f in os.walk(directory):
if file_name in f:
return os.path.join(r, file_name)
return None
def remove_safe(path):
if os.path.exists(path):
os.remove(path)

View File

@ -0,0 +1,71 @@
# Copyright (C) 2016 Intel Corporation
# Released under the MIT license (see COPYING.MIT)
import os
import unittest
def getSuiteCases(suite):
"""
Returns individual test from a test suite.
"""
tests = []
for item in suite:
if isinstance(item, unittest.suite.TestSuite):
tests.extend(getSuiteCases(item))
elif isinstance(item, unittest.TestCase):
tests.append(item)
return tests
def getSuiteModules(suite):
"""
Returns modules in a test suite.
"""
modules = set()
for test in getSuiteCases(suite):
modules.add(getCaseModule(test))
return modules
def getSuiteCasesInfo(suite, func):
"""
Returns test case info from suite. Info is fetched from func.
"""
tests = []
for test in getSuiteCases(suite):
tests.append(func(test))
return tests
def getSuiteCasesNames(suite):
"""
Returns test case names from suite.
"""
return getSuiteCasesInfo(suite, getCaseMethod)
def getSuiteCasesIDs(suite):
"""
Returns test case ids from suite.
"""
return getSuiteCasesInfo(suite, getCaseID)
def getCaseModule(test_case):
"""
Returns test case module name.
"""
return test_case.__module__
def getCaseClass(test_case):
"""
Returns test case class name.
"""
return test_case.__class__.__name__
def getCaseID(test_case):
"""
Returns test case complete id.
"""
return test_case.id()
def getCaseMethod(test_case):
"""
Returns test case method name.
"""
return getCaseID(test_case).split('.')[-1]