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

Side by Side Diff: components/sync/PRESUBMIT_test.py

Issue 2426613003: [sync] Add store version to model type store backend (Closed)
Patch Set: [sync] Add store version to model type store backend Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « components/sync/PRESUBMIT.py ('k') | components/sync/model/model_type_store.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import os 5 import os
6 import re 6 import re
7 import sys 7 import sys
8 import unittest 8 import unittest
9 import PRESUBMIT 9 import PRESUBMIT
10 10
11 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 11 sys.path.append(
12 os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
12 from PRESUBMIT_test_mocks import MockOutputApi, MockChange 13 from PRESUBMIT_test_mocks import MockOutputApi, MockChange
13 14
14 class MockInputApi(object): 15 class MockInputApi(object):
15 """ Mocked input api for unit testing of presubmit. 16 """ Mocked input api for unit testing of presubmit.
16 This lets us mock things like file system operations and changed files. 17 This lets us mock things like file system operations and changed files.
17 """ 18 """
18 def __init__(self): 19 def __init__(self):
19 self.re = re 20 self.re = re
20 self.os_path = os.path 21 self.os_path = os.path
21 self.files = [] 22 self.files = []
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 return self._local_path 57 return self._local_path
57 # Format string used as the contents of a mock sync.proto in order to 58 # Format string used as the contents of a mock sync.proto in order to
58 # test presubmit parsing of EntitySpecifics definition in that file. 59 # test presubmit parsing of EntitySpecifics definition in that file.
59 MOCK_PROTOFILE_CONTENTS = ('\n' 60 MOCK_PROTOFILE_CONTENTS = ('\n'
60 'message EntitySpecifics {\n' 61 'message EntitySpecifics {\n'
61 '//comment\n' 62 '//comment\n'
62 '\n' 63 '\n'
63 'optional AutofillSpecifics autofill = 123;\n' 64 'optional AutofillSpecifics autofill = 123;\n'
64 'optional AppSpecifics app = 456;\n' 65 'optional AppSpecifics app = 456;\n'
65 'optional AppSettingSpecifics app_setting = 789;\n' 66 'optional AppSettingSpecifics app_setting = 789;\n'
67 'optional ExtensionSettingSpecifics extension_setting = 910;\n'
66 '//comment\n' 68 '//comment\n'
67 '}\n') 69 '}\n')
68 70
69 71
70 # Format string used as the contents of a mock model_type.cc 72 # Format string used as the contents of a mock model_type.cc
71 # in order to test presubmit parsing of the ModelTypeInfoMap in that file. 73 # in order to test presubmit parsing of the ModelTypeInfoMap in that file.
72 MOCK_MODELTYPE_CONTENTS =('\n' 74 MOCK_MODELTYPE_CONTENTS =('\n'
73 'const ModelTypeInfo kModelTypeInfoMap[] = {\n' 75 'const ModelTypeInfo kModelTypeInfoMap[] = {\n'
74 '{APP_SETTINGS, "APP_SETTING", "app_settings", "App settings",\n' 76 '{APP_SETTINGS, "APP_SETTING", "app_settings", "App settings",\n'
75 'sync_pb::EntitySpecifics::kAppSettingFieldNumber, 13},\n' 77 'sync_pb::EntitySpecifics::kAppSettingFieldNumber, 13},\n'
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 self.assertEqual(1, len(results)) 120 self.assertEqual(1, len(results))
119 self.assertTrue('root tag' in results[0].message) 121 self.assertTrue('root tag' in results[0].message)
120 122
121 def testInvalidChangeDuplicatedValues(self): 123 def testInvalidChangeDuplicatedValues(self):
122 results = self._testChange('{APP_SETTINGS, "APP_SETTING",\n' 124 results = self._testChange('{APP_SETTINGS, "APP_SETTING",\n'
123 '"app_settings", "App settings",\n' 125 '"app_settings", "App settings",\n'
124 'sync_pb::EntitySpecifics::kAppSettingFieldNumber, 13},\n') 126 'sync_pb::EntitySpecifics::kAppSettingFieldNumber, 13},\n')
125 self.assertEqual(6, len(results)) 127 self.assertEqual(6, len(results))
126 self.assertTrue('APP_SETTINGS' in results[0].message) 128 self.assertTrue('APP_SETTINGS' in results[0].message)
127 129
130 def testBlacklistedRootTag(self):
131 results = self._testChange('{EXTENSION_SETTING, "EXTENSION_SETTING",\n'
132 '"_mts_schema_descriptor","Extension Setting",\n'
133 'sync_pb::EntitySpecifics::kExtensionSettingFieldNumber, 6},')
134 self.assertEqual(2, len(results))
135 self.assertTrue('_mts_schema_descriptor' in results[0].message)
136 self.assertTrue("blacklist" in results[0].message)
137
128 def _testChange(self, modeltype_literal): 138 def _testChange(self, modeltype_literal):
129 mock_input_api = MockInputApi() 139 mock_input_api = MockInputApi()
130 mock_input_api.files = [ 140 mock_input_api.files = [
131 MockFile(os.path.abspath('./protocol/sync.proto'), 141 MockFile(os.path.abspath('./protocol/sync.proto'),
132 MOCK_PROTOFILE_CONTENTS), 142 MOCK_PROTOFILE_CONTENTS),
133 MockFile(os.path.abspath('./syncable/model_type.cc'), 143 MockFile(os.path.abspath('./syncable/model_type.cc'),
134 MOCK_MODELTYPE_CONTENTS % (modeltype_literal)) 144 MOCK_MODELTYPE_CONTENTS % (modeltype_literal))
135 ] 145 ]
136 146
137 return PRESUBMIT.CheckChangeOnCommit(mock_input_api, MockOutputApi()) 147 return PRESUBMIT.CheckChangeOnCommit(mock_input_api, MockOutputApi())
138 if __name__ == '__main__': 148 if __name__ == '__main__':
139 unittest.main() 149 unittest.main()
OLDNEW
« no previous file with comments | « components/sync/PRESUBMIT.py ('k') | components/sync/model/model_type_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698