#!/usr/bin/env python3 # This source file is part of the Swift.org open source project # # Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors # Licensed under Apache License v2.0 with Runtime Library Exception # # See https://swift.org/LICENSE.txt for license information # See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors """ Utility script used to easily run the build_swift module unit tests. """ import argparse import os import sys import unittest MODULE_DIR = os.path.abspath(os.path.dirname(__file__)) UTILS_DIR = os.path.abspath(os.path.join(MODULE_DIR, os.pardir)) def parse_args(): parser = argparse.ArgumentParser( description='Utility script used to run the build_swift module unit ' 'test suite.') parser.set_defaults(verbosity=1) parser.add_argument('-v', '--verbose', dest='verbosity', action='store_const', const=2, help='Verbose output') parser.add_argument('-q', '--quiet', dest='verbosity', action='store_const', const=0, help='Minimal output') parser.add_argument('-f', '--failfast', action='store_true', help='Stop on first failure') parser.add_argument('-c', '--catch', action='store_true', help='Catch control-C and display results') parser.add_argument('-b', '--buffer', action='store_true', help='Buffer stdout and stderr during test runs') parser.add_argument('-p', '--pattern', default='test*.py', help='Pattern to match tests ("%(default)s" default)') return parser.parse_args() def main(): args = parse_args() if args.catch: unittest.installHandler() runner = unittest.TextTestRunner( verbosity=args.verbosity, failfast=args.failfast, buffer=args.buffer) # Add the swift/utils directory to the Python path. sys.path.append(UTILS_DIR) # Discover all tests for the module. module_tests = unittest.defaultTestLoader.discover( MODULE_DIR, pattern=args.pattern) # Create and run test suite. suite = unittest.TestSuite() suite.addTests(module_tests) result = runner.run(suite) return not result.wasSuccessful() if __name__ == '__main__': sys.exit(main())