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