# Copyright 2014 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 import mopy.paths class MojoPythonTestRunner(object): """Helper class to run python tests on the bots.""" def __init__(self, test_dir): self._test_dir = test_dir def run(self): parser = argparse.ArgumentParser() parser.add_argument('-v', '--verbose', action='count', default=0) parser.add_argument('tests', nargs='*') self.add_custom_commandline_options(parser) args = parser.parse_args() self.apply_customization(args) loader = unittest.loader.TestLoader() print "Running Python unit tests under %s..." % self._test_dir src_root = mopy.paths.Paths().src_root pylib_dir = os.path.abspath(os.path.join(src_root, self._test_dir)) if args.tests: if pylib_dir not in sys.path: sys.path.append(pylib_dir) suite = unittest.TestSuite() for test_name in args.tests: suite.addTests(loader.loadTestsFromName(test_name)) else: suite = loader.discover(pylib_dir, pattern='*_unittest.py') runner = unittest.runner.TextTestRunner(verbosity=(args.verbose + 1)) result = runner.run(suite) return 0 if result.wasSuccessful() else 1 def add_custom_commandline_options(self, parser): """Allow to add custom option to the runner script.""" pass def apply_customization(self, args): """Allow to apply any customization to the runner.""" pass