poky/scripts/oe-test
Mikko Rapeli e5e8f2aa0a testexport.bbclass oe-test: capture all tests and data from all layers
testexport.bbclass only copied files from core layer to
the testexport.tar.gz to run tests. Then it filtered
out tests and files which were not specified in
TEST_SUITES variable.

Remove filtering of files to include parselogs.py
test data files which are machine and/or layer specific.
TEST_SUITES variable is now read from build time exported
data store when running tests so there is no need to remove
files from exported tests in testexport.bbclass.

Adapt oe-test script to find "lib" directories from
the new structure with layer specific paths which are
used to find tests and test data files.

(From OE-Core rev: 5c39fedee1dd0e101e2611b71a895c0251ba968d)

Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-10 10:47:30 +01:00

2.7 KiB
Executable File

#!/usr/bin/env python3

OpenEmbedded test tool

Copyright (C) 2016 Intel Corporation

SPDX-License-Identifier: MIT

import argparse import glob import logging import os import sys

scripts_path = os.path.dirname(os.path.realpath(file)) lib_path = os.path.join(scripts_path, 'lib') sys.path.append(lib_path) meta_lib_paths = glob.glob(scripts_path + '/*/lib', recursive=True) for p in meta_lib_paths: sys.path.append(p) import argparse_oe import scriptutils

oe-test is used for testexport and it doesn't have oe lib

so we just skip adding these libraries (not used in testexport)

try: import scriptpath scriptpath.add_oe_lib_path() except ImportError: pass

from oeqa.utils import load_test_components from oeqa.core.exception import OEQAPreRun

logger = scriptutils.logger_create('oe-test', stream=sys.stdout)

def main(): parser = argparse_oe.ArgumentParser(description="OpenEmbedded test tool", add_help=False, epilog="Use %(prog)s --help to get help on a specific command") parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true') parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true') global_args, unparsed_args = parser.parse_known_args()

# Help is added here rather than via add_help=True, as we don't want it to
# be handled by parse_known_args()
parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
                    help='show this help message and exit')

if global_args.debug:
    logger.setLevel(logging.DEBUG)
elif global_args.quiet:
    logger.setLevel(logging.ERROR)

components = load_test_components(logger, 'oe-test')

subparsers = parser.add_subparsers(dest="subparser_name", title='subcommands', metavar='<subcommand>')
subparsers.add_subparser_group('components', 'Test components')
subparsers.required = True
for comp_name in sorted(components.keys()):
    comp = components[comp_name]
    comp.register_commands(logger, subparsers)

try:
    args = parser.parse_args(unparsed_args, namespace=global_args)
    results = args.func(logger, args)
    ret = 0 if results.wasSuccessful() else 1
except SystemExit as err:
    if err.code != 0:
        raise err
    ret = err.code
except argparse_oe.ArgumentUsageError as ae:
    parser.error_subcommand(ae.message, ae.subcommand)
except OEQAPreRun as pr:
    ret = 1

return ret

if name == 'main': try: ret = main() except Exception: ret = 1 import traceback traceback.print_exc() sys.exit(ret)