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

Unified Diff: chrome/app/policy/PRESUBMIT.py

Issue 108513011: Move chrome/app/policy into components/policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years 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 | « chrome/app/policy/OWNERS ('k') | chrome/app/policy/cloud_policy_codegen.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/app/policy/PRESUBMIT.py
diff --git a/chrome/app/policy/PRESUBMIT.py b/chrome/app/policy/PRESUBMIT.py
deleted file mode 100644
index 91f24c475e8ecab02ca4bb3371e4ad33902a6732..0000000000000000000000000000000000000000
--- a/chrome/app/policy/PRESUBMIT.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (c) 2012 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.
-
-# If this presubmit check fails or misbehaves, please complain to
-# mnissler@chromium.org, pastarmovj@chromium.org or joaodasilva@chromium.org.
-
-import itertools
-import sys
-import xml.dom.minidom
-
-def _GetPolicyTemplates(template_path):
- # Read list of policies in the template. eval() is used instead of a JSON
- # parser because policy_templates.json is not quite JSON, and uses some
- # python features such as #-comments and '''strings'''. policy_templates.json
- # is actually maintained as a python dictionary.
- with open(template_path) as f:
- template_data = eval(f.read(), {})
- policies = ( policy
- for policy in template_data['policy_definitions']
- if policy['type'] != 'group' )
- groups = ( policy['policies']
- for policy in template_data['policy_definitions']
- if policy['type'] == 'group' )
- subpolicies = ( policy for group in groups for policy in group )
- return list(itertools.chain(policies, subpolicies))
-
-def _CheckPolicyTemplatesSyntax(input_api, output_api):
- filepath = input_api.os_path.join(input_api.PresubmitLocalPath(),
- 'policy_templates.json')
- if any(f.AbsoluteLocalPath() == filepath
- for f in input_api.AffectedFiles()):
- old_sys_path = sys.path
- try:
- sys.path = [input_api.PresubmitLocalPath()] + sys.path
- # Optimization: only load this when it's needed.
- import syntax_check_policy_template_json
- checker = syntax_check_policy_template_json.PolicyTemplateChecker()
- if checker.Run([], filepath) > 0:
- return [output_api.PresubmitError('Syntax error(s) in file:',
- [filepath])]
- finally:
- sys.path = old_sys_path
- return []
-
-
-def _CheckPolicyTestCases(input_api, output_api, policies):
- # Read list of policies in chrome/test/data/policy/policy_test_cases.json.
- root = input_api.change.RepositoryRoot()
- policy_test_cases_file = input_api.os_path.join(
- root, 'chrome', 'test', 'data', 'policy', 'policy_test_cases.json')
- test_names = input_api.json.load(open(policy_test_cases_file)).keys()
- tested_policies = frozenset(name for name in test_names if name[:2] != '--')
- policy_names = frozenset(policy['name'] for policy in policies)
-
- # Finally check if any policies are missing.
- missing = policy_names - tested_policies
- extra = tested_policies - policy_names
- error_missing = ('Policy \'%s\' was added to policy_templates.json but not '
- 'to src/chrome/test/data/policy/policy_test_cases.json. '
- 'Please update both files.')
- error_extra = ('Policy \'%s\' is tested by '
- 'src/chrome/test/data/policy/policy_test_cases.json but is not'
- ' defined in policy_templates.json. Please update both files.')
- results = []
- for policy in missing:
- results.append(output_api.PresubmitError(error_missing % policy))
- for policy in extra:
- results.append(output_api.PresubmitError(error_extra % policy))
- return results
-
-
-def _CheckPolicyHistograms(input_api, output_api, policies):
- root = input_api.change.RepositoryRoot()
- histograms = input_api.os_path.join(
- root, 'tools', 'metrics', 'histograms', 'histograms.xml')
- with open(histograms) as f:
- tree = xml.dom.minidom.parseString(f.read())
- enums = (tree.getElementsByTagName('histogram-configuration')[0]
- .getElementsByTagName('enums')[0]
- .getElementsByTagName('enum'))
- policy_enum = [e for e in enums
- if e.getAttribute('name') == 'EnterprisePolicies'][0]
- policy_ids = frozenset([int(e.getAttribute('value'))
- for e in policy_enum.getElementsByTagName('int')])
-
- error_missing = ('Policy \'%s\' was added to policy_templates.json but not '
- 'to src/tools/metrics/histograms/histograms.xml. '
- 'Please update both files.')
- results = []
- for policy in policies:
- if policy['id'] not in policy_ids:
- results.append(output_api.PresubmitError(error_missing % policy['name']))
- return results
-
-
-def _CommonChecks(input_api, output_api):
- results = []
- results.extend(_CheckPolicyTemplatesSyntax(input_api, output_api))
-
- os_path = input_api.os_path
- local_path = input_api.PresubmitLocalPath()
- template_path = os_path.join(local_path, 'policy_templates.json')
- affected_files = input_api.AffectedFiles()
- if any(f.AbsoluteLocalPath() == template_path for f in affected_files):
- policies = _GetPolicyTemplates(template_path)
- results.extend(_CheckPolicyTestCases(input_api, output_api, policies))
- results.extend(_CheckPolicyHistograms(input_api, output_api, policies))
-
- return results
-
-
-def CheckChangeOnUpload(input_api, output_api):
- return _CommonChecks(input_api, output_api)
-
-
-def CheckChangeOnCommit(input_api, output_api):
- return _CommonChecks(input_api, output_api)
« no previous file with comments | « chrome/app/policy/OWNERS ('k') | chrome/app/policy/cloud_policy_codegen.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698