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

88 lines
2.7 KiB
Python
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 <subcommand> --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)