4c8d86c1d9
This makes it clearer which files are for writing bot tests vs tests of the infrastructure.
52 lines
1.5 KiB
Python
Executable file
52 lines
1.5 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import unittest
|
|
import argparse
|
|
|
|
from importlib import import_module
|
|
|
|
def parse_args():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('--coverage',
|
|
nargs='?',
|
|
const=True,
|
|
default=False,
|
|
help='compute test coverage ("--coverage combine" to combine with previous reports)')
|
|
return parser.parse_args()
|
|
|
|
def run_all():
|
|
TOOLS_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
ROOT_DIR = os.path.abspath(os.path.join(TOOLS_DIR, '..'))
|
|
BOTS_DIR = os.path.join(ROOT_DIR, 'zulib_bots')
|
|
sys.path.insert(0, BOTS_DIR)
|
|
|
|
options = parse_args()
|
|
|
|
if options.coverage:
|
|
import coverage
|
|
cov = coverage.Coverage(config_file="tools/.coveragerc")
|
|
if options.coverage == 'combine':
|
|
cov.load()
|
|
cov.start()
|
|
|
|
module = 'zulip_bots/zulip_bots/tests/'
|
|
suite = unittest.defaultTestLoader.discover(module)
|
|
|
|
suite = unittest.TestSuite([suite])
|
|
runner = unittest.TextTestRunner(verbosity=2)
|
|
result = runner.run(suite)
|
|
if result.failures or result.errors:
|
|
sys.exit(1)
|
|
|
|
if not result.failures and options.coverage:
|
|
cov.stop()
|
|
cov.data_suffix = False # Disable suffix so that filename is .coverage
|
|
cov.save()
|
|
cov.html_report()
|
|
print("HTML report saved under directory 'htmlcov'.")
|
|
|
|
if __name__ == '__main__':
|
|
run_all()
|