| Index: infra/bots/infra_tests.py
|
| diff --git a/infra/bots/infra_tests.py b/infra/bots/infra_tests.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..779ea8d83b1587e63f8a517b98c912b525b74a16
|
| --- /dev/null
|
| +++ b/infra/bots/infra_tests.py
|
| @@ -0,0 +1,77 @@
|
| +#!/usr/bin/env python
|
| +#
|
| +# Copyright 2016 Google Inc.
|
| +#
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +
|
| +"""Run all infrastructure-related tests."""
|
| +
|
| +
|
| +import os
|
| +import subprocess
|
| +import sys
|
| +
|
| +
|
| +INFRA_BOTS_DIR = os.path.dirname(os.path.realpath(__file__))
|
| +SKIA_DIR = os.path.abspath(os.path.join(INFRA_BOTS_DIR, os.pardir, os.pardir))
|
| +
|
| +
|
| +def test(cmd, cwd):
|
| + try:
|
| + subprocess.check_output(cmd, cwd=cwd, stderr=subprocess.STDOUT)
|
| + except subprocess.CalledProcessError as e:
|
| + return e.output
|
| +
|
| +
|
| +def python_unit_tests():
|
| + return test(
|
| + ['python', '-m', 'unittest', 'discover', '-s', '.', '-p', '*_test.py'],
|
| + INFRA_BOTS_DIR)
|
| +
|
| +
|
| +def recipe_simulation_test():
|
| + return test(
|
| + ['python', os.path.join(INFRA_BOTS_DIR, 'recipes.py'), 'simulation_test'],
|
| + SKIA_DIR)
|
| +
|
| +
|
| +def gen_tasks_test():
|
| + cmd = ['go', 'run', 'gen_tasks.go', '--test']
|
| + try:
|
| + output = test(cmd, INFRA_BOTS_DIR)
|
| + except OSError:
|
| + return ('Failed to run "%s"; do you have Go installed on your machine?'
|
| + % ' '.join(cmd))
|
| + if output and 'cannot find package "go.skia.org/infra' in output:
|
| + return ('Failed to run gen_tests.go:\n\n%s\nMaybe you need to run:\n\n'
|
| + '$ go get -u go.skia.org/infra/...' % output)
|
| + return output
|
| +
|
| +
|
| +def main():
|
| + tests = (
|
| + python_unit_tests,
|
| + recipe_simulation_test,
|
| + gen_tasks_test,
|
| + )
|
| + errs = []
|
| + for t in tests:
|
| + err = t()
|
| + if err:
|
| + errs.append(err)
|
| +
|
| + if len(errs) > 0:
|
| + print >> sys.stderr, 'Test failures:\n'
|
| + for err in errs:
|
| + print >> sys.stderr, '=============================='
|
| + print >> sys.stderr, err
|
| + print >> sys.stderr, '=============================='
|
| + sys.exit(1)
|
| +
|
| + print 'All tests passed!'
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + main()
|
|
|