From a975ba5d454e8caae89a55fecb9d40928a0db362 Mon Sep 17 00:00:00 2001 From: "tandrii@chromium.org" Date: Mon, 25 Jan 2016 13:50:21 +0000 Subject: [PATCH] commit_queue validate: validate just correctness of protobuf. R=sergiyb@chromium.org,phajdan.jr@chromium.org BUG= Review URL: https://codereview.chromium.org/1617163004 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@298381 0039d316-1c4b-4281-b951-d872f2087c98 --- commit_queue.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/commit_queue.py b/commit_queue.py index ec8f51a18..4e624773a 100755 --- a/commit_queue.py +++ b/commit_queue.py @@ -26,7 +26,6 @@ THIRD_PARTY_DIR = os.path.join(os.path.dirname(__file__), 'third_party') sys.path.insert(0, THIRD_PARTY_DIR) from cq_client import cq_pb2 -from cq_client import validate_config from protobuf26 import text_format def usage(more): @@ -188,20 +187,30 @@ CMDbuilders.func_usage_more = '' def CMDvalidate(parser, args): - """Validates a CQ config. + """Validates a CQ config, returns 0 on valid config. - Takes a single argument - path to the CQ config to be validated. Returns 0 on - valid config, non-zero on invalid config. Errors and warnings are printed to - screen. + BUGS: this doesn't do semantic validation, only verifies validity of protobuf. + But don't worry - bad cq.cfg won't cause outages, luci-config service will + not accept them, will send warning email, and continue using previous + version. """ _, args = parser.parse_args(args) if len(args) != 1: parser.error('Expected a single path to CQ config. Got: %s' % ' '.join(args)) - with open(args[0]) as config_file: - cq_config = config_file.read() - return 0 if validate_config.IsValid(cq_config) else 1 + config = cq_pb2.Config() + try: + with open(args[0]) as config_file: + text_config = config_file.read() + text_format.Merge(text_config, config) + # TODO(tandrii): provide an option to actually validate semantics of CQ + # config. + return 0 + except text_format.ParseError as e: + print 'failed to parse cq.cfg: %s' % e + return 1 + CMDvalidate.func_usage_more = ''