| Index: testing/scripts/checkdeps.py
|
| diff --git a/testing/scripts/checkdeps.py b/testing/scripts/checkdeps.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..83abfdf53b063080799b5f6989902ee00291a1f8
|
| --- /dev/null
|
| +++ b/testing/scripts/checkdeps.py
|
| @@ -0,0 +1,75 @@
|
| +#!/usr/bin/env python
|
| +# 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 contextlib
|
| +import json
|
| +import os
|
| +import subprocess
|
| +import sys
|
| +import tempfile
|
| +
|
| +
|
| +SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
|
| +SRC_DIR = os.path.abspath(
|
| + os.path.join(SCRIPT_DIR, os.path.pardir, os.path.pardir))
|
| +
|
| +
|
| +def run_command(argv):
|
| + print 'Running %r' % argv
|
| + rc = subprocess.call(argv)
|
| + print 'Command %r returned exit code %d' % (argv, rc)
|
| + return rc
|
| +
|
| +
|
| +@contextlib.contextmanager
|
| +def temporary_file():
|
| + fd, path = tempfile.mkstemp()
|
| + os.close(fd)
|
| + try:
|
| + yield path
|
| + finally:
|
| + os.remove(path)
|
| +
|
| +
|
| +def mode_run(args):
|
| + with temporary_file() as tempfile_path:
|
| + rc = run_command([
|
| + os.path.join(SRC_DIR, 'buildtools', 'checkdeps', 'checkdeps.py'),
|
| + '--json', tempfile_path
|
| + ])
|
| +
|
| + with open(tempfile_path) as f:
|
| + checkdeps_results = json.load(f)
|
| +
|
| + result_set = set()
|
| + for result in checkdeps_results:
|
| + for violation in result['violations']:
|
| + result_set.add((result['dependee_path'], violation['include_path']))
|
| +
|
| + with open(args.output, 'w') as f:
|
| + json.dump({
|
| + 'valid': True,
|
| + 'failures': ['%s: %s' % (r[0], r[1]) for r in result_set],
|
| + }, f)
|
| +
|
| + return rc
|
| +
|
| +
|
| +def main(argv):
|
| + parser = argparse.ArgumentParser()
|
| +
|
| + subparsers = parser.add_subparsers()
|
| +
|
| + run_parser = subparsers.add_parser('run')
|
| + run_parser.add_argument('--output', required=True)
|
| + run_parser.set_defaults(func=mode_run)
|
| +
|
| + args = parser.parse_args(argv)
|
| + return args.func(args)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main(sys.argv[1:]))
|
|
|