| #!/usr/bin/env python |
| # Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| import argparse |
| import os |
| import sys |
| import unittest |
| |
| |
| def _IterateTestCase(test): |
| if isinstance(test, unittest.TestCase): |
| yield test |
| else: |
| for t in test: |
| for u in _IterateTestCase(t): |
| yield u |
| |
| |
| def main(args): |
| parser = argparse.ArgumentParser(description='Run all vinn tests') |
| parser.add_argument('test_name', type=str, nargs='?', |
| help=('Specify a specific test to run. If this is empty, ' |
| 'all tests are run. (the name can be a substring ' |
| ' of test names)')) |
| options = parser.parse_args(args) |
| def _IsTestMatched(test): |
| if not options.test_name: |
| return True |
| return options.test_name in test.id() |
| |
| suite = unittest.TestSuite() |
| vinn_dir = os.path.join(os.path.dirname(__file__), 'vinn') |
| discover_tests = unittest.TestLoader().discover( |
| start_dir=vinn_dir, pattern='*test.py') |
| for t in _IterateTestCase(discover_tests): |
| if _IsTestMatched(t): |
| suite.addTest(t) |
| results = unittest.TextTestRunner(verbosity=2).run(suite) |
| return len(results.failures) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv[1:])) |