summaryrefslogtreecommitdiffstats
path: root/bin/bitbake-selftest
blob: 380e003619ceca39782fe6456e7d44c87369b104 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env python3
#
# Copyright (C) 2012 Richard Purdie
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

import os
import sys, logging
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib'))

import unittest
try:
    import bb
except RuntimeError as exc:
    sys.exit(str(exc))

tests = ["bb.tests.codeparser",
         "bb.tests.cow",
         "bb.tests.data",
         "bb.tests.fetch",
         "bb.tests.parse",
         "bb.tests.utils"]

for t in tests:
    t = '.'.join(t.split('.')[:3])
    __import__(t)


# Set-up logging
class StdoutStreamHandler(logging.StreamHandler):
    """Special handler so that unittest is able to capture stdout"""
    def __init__(self):
        # Override __init__() because we don't want to set self.stream here
        logging.Handler.__init__(self)

    @property
    def stream(self):
        # We want to dynamically write wherever sys.stdout is pointing to
        return sys.stdout


handler = StdoutStreamHandler()
bb.logger.addHandler(handler)
bb.logger.setLevel(logging.DEBUG)


ENV_HELP = """\
Environment variables:
  BB_SKIP_NETTESTS      set to 'yes' in order to skip tests using network
                        connection
  BB_TMPDIR_NOCLEAN     set to 'yes' to preserve test tmp directories
"""

class main(unittest.main):
    def _print_help(self, *args, **kwargs):
        super(main, self)._print_help(*args, **kwargs)
        print(ENV_HELP)


if __name__ == '__main__':
        main(defaultTest=tests, buffer=True)