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