xref: /openbmc/openbmc/poky/bitbake/bin/bitbake-selftest (revision 8460358c3d24c71d9d38fd126c745854a6301564)
1#!/usr/bin/env python3
2#
3# Copyright (C) 2012 Richard Purdie
4#
5# SPDX-License-Identifier: GPL-2.0-only
6#
7
8import os
9import sys, logging
10import warnings
11warnings.simplefilter("default")
12sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib'))
13
14import unittest
15try:
16    import bb
17    import hashserv
18    import prserv
19    import layerindexlib
20except RuntimeError as exc:
21    sys.exit(str(exc))
22
23tests = ["bb.tests.codeparser",
24         "bb.tests.color",
25         "bb.tests.cooker",
26         "bb.tests.cow",
27         "bb.tests.data",
28         "bb.tests.event",
29         "bb.tests.fetch",
30         "bb.tests.parse",
31         "bb.tests.runqueue",
32         "bb.tests.siggen",
33         "bb.tests.utils",
34         "bb.tests.compression",
35         "hashserv.tests",
36         "prserv.tests",
37         "layerindexlib.tests.layerindexobj",
38         "layerindexlib.tests.restapi",
39         "layerindexlib.tests.cooker"]
40
41for t in tests:
42    t = '.'.join(t.split('.')[:3])
43    __import__(t)
44
45
46# Set-up logging
47class StdoutStreamHandler(logging.StreamHandler):
48    """Special handler so that unittest is able to capture stdout"""
49    def __init__(self):
50        # Override __init__() because we don't want to set self.stream here
51        logging.Handler.__init__(self)
52
53    @property
54    def stream(self):
55        # We want to dynamically write wherever sys.stdout is pointing to
56        return sys.stdout
57
58
59handler = StdoutStreamHandler()
60bb.logger.addHandler(handler)
61bb.logger.setLevel(logging.DEBUG)
62
63
64ENV_HELP = """\
65Environment variables:
66  BB_SKIP_NETTESTS      set to 'yes' in order to skip tests using network
67                        connection
68  BB_TMPDIR_NOCLEAN     set to 'yes' to preserve test tmp directories
69"""
70
71class main(unittest.main):
72    def _print_help(self, *args, **kwargs):
73        super(main, self)._print_help(*args, **kwargs)
74        print(ENV_HELP)
75
76
77if __name__ == '__main__':
78        main(defaultTest=tests, buffer=True)
79