xref: /openbmc/openbmc/poky/meta/lib/oeqa/core/utils/test.py (revision c342db35)
1*c342db35SBrad Bishop#
2eb8dc403SDave Cobbley# Copyright (C) 2016 Intel Corporation
3*c342db35SBrad Bishop#
4*c342db35SBrad Bishop# SPDX-License-Identifier: MIT
5*c342db35SBrad Bishop#
6eb8dc403SDave Cobbley
7eb8dc403SDave Cobbleyimport os
8eb8dc403SDave Cobbleyimport inspect
9eb8dc403SDave Cobbleyimport unittest
10eb8dc403SDave Cobbley
11eb8dc403SDave Cobbleydef getSuiteCases(suite):
12eb8dc403SDave Cobbley    """
13eb8dc403SDave Cobbley        Returns individual test from a test suite.
14eb8dc403SDave Cobbley    """
15eb8dc403SDave Cobbley    tests = []
16eb8dc403SDave Cobbley
17eb8dc403SDave Cobbley    if isinstance(suite, unittest.TestCase):
18eb8dc403SDave Cobbley        tests.append(suite)
19eb8dc403SDave Cobbley    elif isinstance(suite, unittest.suite.TestSuite):
20eb8dc403SDave Cobbley        for item in suite:
21eb8dc403SDave Cobbley            tests.extend(getSuiteCases(item))
22eb8dc403SDave Cobbley
23eb8dc403SDave Cobbley    return tests
24eb8dc403SDave Cobbley
25eb8dc403SDave Cobbleydef getSuiteModules(suite):
26eb8dc403SDave Cobbley    """
27eb8dc403SDave Cobbley        Returns modules in a test suite.
28eb8dc403SDave Cobbley    """
29eb8dc403SDave Cobbley    modules = set()
30eb8dc403SDave Cobbley    for test in getSuiteCases(suite):
31eb8dc403SDave Cobbley        modules.add(getCaseModule(test))
32eb8dc403SDave Cobbley    return modules
33eb8dc403SDave Cobbley
34eb8dc403SDave Cobbleydef getSuiteCasesInfo(suite, func):
35eb8dc403SDave Cobbley    """
36eb8dc403SDave Cobbley        Returns test case info from suite. Info is fetched from func.
37eb8dc403SDave Cobbley    """
38eb8dc403SDave Cobbley    tests = []
39eb8dc403SDave Cobbley    for test in getSuiteCases(suite):
40eb8dc403SDave Cobbley        tests.append(func(test))
41eb8dc403SDave Cobbley    return tests
42eb8dc403SDave Cobbley
43eb8dc403SDave Cobbleydef getSuiteCasesNames(suite):
44eb8dc403SDave Cobbley    """
45eb8dc403SDave Cobbley        Returns test case names from suite.
46eb8dc403SDave Cobbley    """
47eb8dc403SDave Cobbley    return getSuiteCasesInfo(suite, getCaseMethod)
48eb8dc403SDave Cobbley
49eb8dc403SDave Cobbleydef getSuiteCasesIDs(suite):
50eb8dc403SDave Cobbley    """
51eb8dc403SDave Cobbley        Returns test case ids from suite.
52eb8dc403SDave Cobbley    """
53eb8dc403SDave Cobbley    return getSuiteCasesInfo(suite, getCaseID)
54eb8dc403SDave Cobbley
55eb8dc403SDave Cobbleydef getSuiteCasesFiles(suite):
56eb8dc403SDave Cobbley    """
57eb8dc403SDave Cobbley        Returns test case files paths from suite.
58eb8dc403SDave Cobbley    """
59eb8dc403SDave Cobbley    return getSuiteCasesInfo(suite, getCaseFile)
60eb8dc403SDave Cobbley
61eb8dc403SDave Cobbleydef getCaseModule(test_case):
62eb8dc403SDave Cobbley    """
63eb8dc403SDave Cobbley        Returns test case module name.
64eb8dc403SDave Cobbley    """
65eb8dc403SDave Cobbley    return test_case.__module__
66eb8dc403SDave Cobbley
67eb8dc403SDave Cobbleydef getCaseClass(test_case):
68eb8dc403SDave Cobbley    """
69eb8dc403SDave Cobbley        Returns test case class name.
70eb8dc403SDave Cobbley    """
71eb8dc403SDave Cobbley    return test_case.__class__.__name__
72eb8dc403SDave Cobbley
73eb8dc403SDave Cobbleydef getCaseID(test_case):
74eb8dc403SDave Cobbley    """
75eb8dc403SDave Cobbley        Returns test case complete id.
76eb8dc403SDave Cobbley    """
77eb8dc403SDave Cobbley    return test_case.id()
78eb8dc403SDave Cobbley
79eb8dc403SDave Cobbleydef getCaseFile(test_case):
80eb8dc403SDave Cobbley    """
81eb8dc403SDave Cobbley        Returns test case file path.
82eb8dc403SDave Cobbley    """
83eb8dc403SDave Cobbley    return inspect.getsourcefile(test_case.__class__)
84eb8dc403SDave Cobbley
85eb8dc403SDave Cobbleydef getCaseMethod(test_case):
86eb8dc403SDave Cobbley    """
87eb8dc403SDave Cobbley        Returns test case method name.
88eb8dc403SDave Cobbley    """
89eb8dc403SDave Cobbley    return getCaseID(test_case).split('.')[-1]
90