12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/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(train):
- if train:
- return None
- return test(
- ['python', '-m', 'unittest', 'discover', '-s', '.', '-p', '*_test.py'],
- INFRA_BOTS_DIR)
- def recipe_test(train):
- cmd = [
- 'python', os.path.join(INFRA_BOTS_DIR, 'recipes.py'), 'test']
- if train:
- cmd.append('train')
- else:
- cmd.append('run')
- return test(cmd, SKIA_DIR)
- def gen_tasks_test(train):
- cmd = ['go', 'run', 'gen_tasks.go']
- if not train:
- cmd.append('--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:
- if ('cannot find package "go.skia.org/infra' in output or
- 'gen_tasks.go:' 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():
- train = False
- if '--train' in sys.argv:
- train = True
- tests = (
- python_unit_tests,
- recipe_test,
- gen_tasks_test,
- )
- errs = []
- for t in tests:
- err = t(train)
- 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)
- if train:
- print 'Trained tests successfully.'
- else:
- print 'All tests passed!'
- if __name__ == '__main__':
- main()
|