Commit 29a32a45 authored by Yann Dago's avatar Yann Dago Committed by Commit Bot

Put policy_template placeholders in a ph node

Bug: 1000118
Change-Id: I09456c19aec5a5a9ea26cdc76d5c28b66807f1e5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1872541
Commit-Queue: Yann Dago <ydago@chromium.org>
Reviewed-by: default avatarRobert Flack <flackr@chromium.org>
Reviewed-by: default avatarJulian Pastarmov <pastarmovj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708365}
parent c9a517e3
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# mnissler@chromium.org, bartfab@chromium.org or atwilson@chromium.org. # mnissler@chromium.org, bartfab@chromium.org or atwilson@chromium.org.
import sys import sys
import xml.dom.minidom from xml.dom import minidom
def _GetPolicyTemplates(template_path): def _GetPolicyTemplates(template_path):
# Read list of policies in the template. eval() is used instead of a JSON # Read list of policies in the template. eval() is used instead of a JSON
...@@ -77,7 +77,7 @@ def _CheckPolicyHistograms(input_api, output_api, policies): ...@@ -77,7 +77,7 @@ def _CheckPolicyHistograms(input_api, output_api, policies):
histograms = input_api.os_path.join( histograms = input_api.os_path.join(
root, 'tools', 'metrics', 'histograms', 'enums.xml') root, 'tools', 'metrics', 'histograms', 'enums.xml')
with open(histograms) as f: with open(histograms) as f:
tree = xml.dom.minidom.parseString(f.read()) tree = minidom.parseString(f.read())
enums = (tree.getElementsByTagName('histogram-configuration')[0] enums = (tree.getElementsByTagName('histogram-configuration')[0]
.getElementsByTagName('enums')[0] .getElementsByTagName('enums')[0]
.getElementsByTagName('enum')) .getElementsByTagName('enum'))
...@@ -117,7 +117,7 @@ def _CheckPolicyAtomicGroupsHistograms(input_api, output_api, atomic_groups): ...@@ -117,7 +117,7 @@ def _CheckPolicyAtomicGroupsHistograms(input_api, output_api, atomic_groups):
histograms = input_api.os_path.join( histograms = input_api.os_path.join(
root, 'tools', 'metrics', 'histograms', 'enums.xml') root, 'tools', 'metrics', 'histograms', 'enums.xml')
with open(histograms) as f: with open(histograms) as f:
tree = xml.dom.minidom.parseString(f.read()) tree = minidom.parseString(f.read())
enums = (tree.getElementsByTagName('histogram-configuration')[0] enums = (tree.getElementsByTagName('histogram-configuration')[0]
.getElementsByTagName('enums')[0] .getElementsByTagName('enums')[0]
.getElementsByTagName('enum')) .getElementsByTagName('enum'))
...@@ -153,11 +153,28 @@ def _CheckPolicyAtomicGroupsHistograms(input_api, output_api, atomic_groups): ...@@ -153,11 +153,28 @@ def _CheckPolicyAtomicGroupsHistograms(input_api, output_api, atomic_groups):
results.append(output_api.PresubmitError(error_extra % atomic_group_id)) results.append(output_api.PresubmitError(error_extra % atomic_group_id))
return results return results
def _CheckMissingPlaceholders(input_api, output_api, template_path):
with open(template_path) as f:
template_data = eval(f.read(), {})
def _CommonChecks(input_api, output_api):
results = [] results = []
results.extend(_CheckPolicyTemplatesSyntax(input_api, output_api)) items = template_data['policy_definitions'] \
+ [msg for msg in template_data['messages'].values()]
for item in items:
for key in ['desc', 'text']:
if not key in item:
continue
node = minidom.parseString('<msg>%s</msg>' % item[key]).childNodes[0]
for child in node.childNodes:
if child.nodeType == minidom.Node.TEXT_NODE and '$' in child.data:
warning = ('Character \'$\' found outside of a placeholder in "%s". '
'Should it be in a placeholder ?') % item[key]
results.append(output_api.PresubmitPromptWarning(warning))
return results
def _CommonChecks(input_api, output_api):
results = []
root = input_api.change.RepositoryRoot() root = input_api.change.RepositoryRoot()
template_path = template_path = input_api.os_path.join( template_path = template_path = input_api.os_path.join(
root, 'components', 'policy', 'resources', 'policy_templates.json') root, 'components', 'policy', 'resources', 'policy_templates.json')
...@@ -166,6 +183,8 @@ def _CommonChecks(input_api, output_api): ...@@ -166,6 +183,8 @@ def _CommonChecks(input_api, output_api):
root, 'chrome', 'test', 'data', 'policy', 'policy_test_cases.json') root, 'chrome', 'test', 'data', 'policy', 'policy_test_cases.json')
affected_files = input_api.change.AffectedFiles() affected_files = input_api.change.AffectedFiles()
results.extend(_CheckMissingPlaceholders(input_api, output_api,
template_path))
template_changed = any(f.AbsoluteLocalPath() == template_path \ template_changed = any(f.AbsoluteLocalPath() == template_path \
for f in affected_files) for f in affected_files)
tests_changed = any(f.AbsoluteLocalPath() == test_cases_path \ tests_changed = any(f.AbsoluteLocalPath() == test_cases_path \
...@@ -179,6 +198,7 @@ def _CommonChecks(input_api, output_api): ...@@ -179,6 +198,7 @@ def _CommonChecks(input_api, output_api):
return results return results
results.extend(_CheckPolicyTestCases(input_api, output_api, policies)) results.extend(_CheckPolicyTestCases(input_api, output_api, policies))
if template_changed: if template_changed:
results.extend(_CheckPolicyTemplatesSyntax(input_api, output_api))
results.extend(_CheckPolicyHistograms(input_api, output_api, policies)) results.extend(_CheckPolicyHistograms(input_api, output_api, policies))
return results return results
......
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