|  | #!/usr/bin/env python | 
|  | # Copyright 2016 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 logging | 
|  | import os | 
|  | import sys | 
|  | import unittest | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | logging.basicConfig( | 
|  | level=logging.DEBUG if '-v' in sys.argv else logging.WARNING, | 
|  | format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s') | 
|  |  | 
|  | suite = unittest.TestSuite() | 
|  | loader = unittest.TestLoader() | 
|  | root_dir = os.path.dirname(os.path.realpath(__file__)) | 
|  | if len(sys.argv) < 2: | 
|  | cases = loader.discover(start_dir=root_dir, pattern='*_unittest.py') | 
|  | else: | 
|  | cases = [] | 
|  | for module in sys.argv[1:]: | 
|  | pattern = '{}_unittest.py'.format(module) | 
|  | cases.extend(loader.discover(start_dir=root_dir, pattern=pattern)) | 
|  | suite.addTests(cases) | 
|  | res = unittest.TextTestRunner(verbosity=2).run(suite) | 
|  | if res.wasSuccessful(): | 
|  | sys.exit(0) | 
|  | else: | 
|  | sys.exit(1) |