Commit a975ba5d authored by tandrii@chromium.org's avatar tandrii@chromium.org

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
parent 03d762f2
......@@ -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 = '<path-to-cq-config>'
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 = '<path-to-cq-config>'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment