|  | #!/usr/bin/env python3 | 
|  |  | 
|  | # Copyright (c) 2013-2017 Intel Corporation | 
|  | # | 
|  | # SPDX-License-Identifier: GPL-2.0-only | 
|  | # | 
|  |  | 
|  | # DESCRIPTION | 
|  | # This script runs tests defined in meta/lib/oeqa/selftest/ | 
|  | # It's purpose is to automate the testing of different bitbake tools. | 
|  | # To use it you just need to source your build environment setup script and | 
|  | # add the meta-selftest layer to your BBLAYERS. | 
|  | # Call the script as: "oe-selftest -a" to run all the tests in meta/lib/oeqa/selftest/ | 
|  | # Call the script as: "oe-selftest -r <module>.<Class>.<method>" to run just a single test | 
|  | # E.g: "oe-selftest -r bblayers.BitbakeLayers" will run just the BitbakeLayers class from meta/lib/oeqa/selftest/bblayers.py | 
|  |  | 
|  |  | 
|  |  | 
|  | import os | 
|  | import sys | 
|  | import argparse | 
|  | import logging | 
|  |  | 
|  | scripts_path = os.path.dirname(os.path.realpath(__file__)) | 
|  | lib_path = scripts_path + '/lib' | 
|  | sys.path = sys.path + [lib_path] | 
|  | import argparse_oe | 
|  | import scriptutils | 
|  | import scriptpath | 
|  | scriptpath.add_oe_lib_path() | 
|  | scriptpath.add_bitbake_lib_path() | 
|  |  | 
|  | from oeqa.utils import load_test_components | 
|  | from oeqa.core.exception import OEQAPreRun | 
|  |  | 
|  | logger = scriptutils.logger_create('oe-selftest', stream=sys.stdout) | 
|  |  | 
|  | def main(): | 
|  | description = "Script that runs unit tests against bitbake and other Yocto related tools. The goal is to validate tools functionality and metadata integrity. Refer to https://wiki.yoctoproject.org/wiki/Oe-selftest for more information." | 
|  | parser = argparse_oe.ArgumentParser(description=description) | 
|  |  | 
|  | comp_name, comp = load_test_components(logger, 'oe-selftest').popitem() | 
|  | comp.register_commands(logger, parser) | 
|  |  | 
|  | try: | 
|  | args = parser.parse_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 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) |