Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Unified Diff: testing/buildbot/manage.py

Issue 1049703005: Add tool to reformat testing/buildbot/ json files in their canonical format. (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@master
Patch Set: Rename tool, as it'll be expanded Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « testing/buildbot/chromium_trybot.json ('k') | testing/buildbot/trybot_analyze_config.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: testing/buildbot/manage.py
diff --git a/testing/buildbot/manage.py b/testing/buildbot/manage.py
new file mode 100755
index 0000000000000000000000000000000000000000..1ba69f04a1602c5ae573722c0a32a2d8835dee58
--- /dev/null
+++ b/testing/buildbot/manage.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+# Copyright 2015 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.
+
+"""Toolbox to manage all the json files in this directory.
+
+It can reformat them in their canonical format or ensures they are well
+formatted.
+"""
+
+import argparse
+import glob
+import json
+import os
+import sys
+
+
+THIS_DIR = os.path.dirname(os.path.abspath(__file__))
+
+
+# These are not 'builders'.
+SKIP = {
+ 'compile_targets', 'gtest_tests', 'filter_compile_builders',
+ 'non_filter_builders', 'non_filter_tests_builders',
+}
+
+
+def upgrade_test(test):
+ """Converts from old style string to new style dict."""
+ if isinstance(test, basestring):
+ return {'test': test}
+ assert isinstance(test, dict)
+ return test
+
+
+def main():
+ parser = argparse.ArgumentParser(description=sys.modules[__name__].__doc__)
+ group = parser.add_mutually_exclusive_group(required=True)
+ group.add_argument(
+ '-c', '--check', action='store_true', help='Only check the files')
+ group.add_argument(
+ '-w', '--write', action='store_true', help='Rewrite the files')
+ args = parser.parse_args()
+
+ result = 0
+ for filepath in glob.glob(os.path.join(THIS_DIR, '*.json')):
+ filename = os.path.basename(filepath)
+ with open(filepath) as f:
+ content = f.read()
+ config = json.loads(content)
+ for builder, data in sorted(config.iteritems()):
+ if builder in SKIP:
+ # Oddities.
+ continue
+
+ if not isinstance(data, dict):
+ print('%s: %s is broken: %s' % (filename, builder, data))
+ continue
+
+ if 'gtest_tests' in data:
+ config[builder]['gtest_tests'] = sorted(
+ (upgrade_test(l) for l in data['gtest_tests']),
+ key=lambda x: x['test'])
+
+ expected = json.dumps(
+ config, sort_keys=True, indent=2, separators=(',', ': ')) + '\n'
+ if content != expected:
+ result = 1
+ if args.write:
+ with open(filepath, 'wb') as f:
+ f.write(expected)
+ print('Updated %s' % filename)
+ else:
+ print('%s is not in canonical format' % filename)
Nico 2015/05/29 04:38:08 This is a pretty useless output. Maybe it could pr
+ return result
+
+
+if __name__ == "__main__":
+ sys.exit(main())
« no previous file with comments | « testing/buildbot/chromium_trybot.json ('k') | testing/buildbot/trybot_analyze_config.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698