| Index: py/run_unittests
|
| diff --git a/py/run_unittests b/py/run_unittests
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..30c203ec6c5dbdd232deee60ba26b535f7b90930
|
| --- /dev/null
|
| +++ b/py/run_unittests
|
| @@ -0,0 +1,62 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2012 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.
|
| +
|
| +"""Runs all unit tests under this base directory."""
|
| +
|
| +import os
|
| +import subprocess
|
| +import sys
|
| +import unittest
|
| +
|
| +
|
| +NO_CRAWL_DIRS = [
|
| + '.git',
|
| + '.svn',
|
| +]
|
| +
|
| +
|
| +SEARCH_PATH = os.path.dirname(os.path.abspath(__file__))
|
| +
|
| +
|
| +def FilterDirectory(dirpath, filenames):
|
| + """ Determine whether to look for tests in the given directory.
|
| +
|
| + dirpath: string; path of the directory in question.
|
| + filenames: list of strings; the files in the directory.
|
| + """
|
| + if not dirpath or not filenames:
|
| + return False
|
| + for no_crawl_dir in NO_CRAWL_DIRS:
|
| + if no_crawl_dir in dirpath:
|
| + return False
|
| + return True
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + print 'Searching for tests.'
|
| + tests_to_run = []
|
| +
|
| + for (dirpath, dirnames, filenames) in os.walk(SEARCH_PATH, topdown=True):
|
| + dirnames[:] = [d for d in dirnames if not d in NO_CRAWL_DIRS]
|
| + test_modules = [os.path.join(dirpath, filename) for filename in filenames
|
| + if filename.endswith('_test.py')]
|
| + if not test_modules:
|
| + continue
|
| + tests_to_run.extend(test_modules)
|
| +
|
| + print 'Found %d tests.' % len(tests_to_run)
|
| + errors = []
|
| + for test in tests_to_run:
|
| + proc = subprocess.Popen(['python', test], stdout=subprocess.PIPE,
|
| + stderr=subprocess.STDOUT)
|
| + if proc.wait() != 0:
|
| + errors.append(proc.communicate()[0])
|
| + if errors:
|
| + for error in errors:
|
| + print error
|
| + print 'Failed %d of %d.' % (len(errors), len(test_modules))
|
| + sys.exit(1)
|
| + else:
|
| + print 'All tests succeeded.'
|
|
|