diff options
author | mathieui <mathieui@mathieui.net> | 2020-12-04 23:02:24 +0100 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2020-12-04 23:04:21 +0100 |
commit | d3dc09ce945e9a66d09b179c55176b7f6a4f78ea (patch) | |
tree | c8b8b4a2df80fe56e8990bcffe93d74ff1dfb9b5 | |
parent | e6d1badb81f7bacf78f57b83d0f06271f3e99d9a (diff) | |
download | slixmpp-d3dc09ce945e9a66d09b179c55176b7f6a4f78ea.tar.gz slixmpp-d3dc09ce945e9a66d09b179c55176b7f6a4f78ea.tar.bz2 slixmpp-d3dc09ce945e9a66d09b179c55176b7f6a4f78ea.tar.xz slixmpp-d3dc09ce945e9a66d09b179c55176b7f6a4f78ea.zip |
CI: add a script to run integration tests
(same as run_tests.py, but use adifferent directory)
-rwxr-xr-x | run_integration_tests.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/run_integration_tests.py b/run_integration_tests.py new file mode 100755 index 00000000..9f670b5c --- /dev/null +++ b/run_integration_tests.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 + +import sys +import logging +import unittest + +from argparse import ArgumentParser +from distutils.core import Command +from importlib import import_module +from pathlib import Path + + +def run_tests(filenames=None): + """ + Find and run all tests in the tests/ directory. + + Excludes live tests (tests/live_*). + """ + if sys.version_info < (3, 8): + raise ValueError('Your python version is too old to run these tests') + if not filenames: + filenames = [i for i in Path('itests').glob('test_*')] + else: + filenames = [Path(i) for i in filenames] + + modules = ['.'.join(test.parts[:-1] + (test.stem,)) for test in filenames] + + suites = [] + for filename in modules: + module = import_module(filename) + suites.append(module.suite) + + tests = unittest.TestSuite(suites) + runner = unittest.TextTestRunner(verbosity=2) + + # Disable logging output + logging.basicConfig(level=100) + logging.disable(100) + + result = runner.run(tests) + return result + + +# Add a 'test' command for setup.py + +class TestCommand(Command): + + user_options = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + run_tests() + + +if __name__ == '__main__': + parser = ArgumentParser(description='Run unit tests.') + parser.add_argument('tests', metavar='TEST', nargs='*', help='list of tests to run, or nothing to run them all') + args = parser.parse_args() + + result = run_tests(args.tests) + print("<tests %s ran='%s' errors='%s' fails='%s' success='%s'/>" % ( + "xmlns='http//andyet.net/protocol/tests'", + result.testsRun, len(result.errors), + len(result.failures), result.wasSuccessful())) + + sys.exit(not result.wasSuccessful()) |