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

Side by Side Diff: chrome/common/extensions/docs/server2/availability_finder_test.py

Issue 491653002: Docserver: Use GitilesFileSystem instead of SubversionFileSystem (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 import os 5 import os
6 import sys 6 import sys
7 import unittest 7 import unittest
8 8
9 import api_schema_graph 9 import api_schema_graph
10 from availability_finder import AvailabilityFinder, AvailabilityInfo 10 from availability_finder import AvailabilityFinder, AvailabilityInfo
(...skipping 16 matching lines...) Expand all
27 27
28 def _create_availability_finder(self, 28 def _create_availability_finder(self,
29 host_fs_creator, 29 host_fs_creator,
30 host_fs_iterator, 30 host_fs_iterator,
31 platform): 31 platform):
32 test_object_store = ObjectStoreCreator.ForTest() 32 test_object_store = ObjectStoreCreator.ForTest()
33 return AvailabilityFinder( 33 return AvailabilityFinder(
34 self._branch_utility, 34 self._branch_utility,
35 CompiledFileSystem.Factory(test_object_store), 35 CompiledFileSystem.Factory(test_object_store),
36 host_fs_iterator, 36 host_fs_iterator,
37 host_fs_creator.GetTrunk(), 37 host_fs_creator.GetMaster(),
38 test_object_store, 38 test_object_store,
39 platform) 39 platform)
40 40
41 def setUp(self): 41 def setUp(self):
42 self._branch_utility = BranchUtility( 42 self._branch_utility = BranchUtility(
43 os.path.join('branch_utility', 'first.json'), 43 os.path.join('branch_utility', 'first.json'),
44 os.path.join('branch_utility', 'second.json'), 44 os.path.join('branch_utility', 'second.json'),
45 FakeUrlFetcher(Server2Path('test_data')), 45 FakeUrlFetcher(Server2Path('test_data')),
46 ObjectStoreCreator.ForTest()) 46 ObjectStoreCreator.ForTest())
47 self._api_fs_creator = FakeHostFileSystemProvider( 47 self._api_fs_creator = FakeHostFileSystemProvider(
48 CANNED_API_FILE_SYSTEM_DATA) 48 CANNED_API_FILE_SYSTEM_DATA)
49 self._node_fs_creator = FakeHostFileSystemProvider(TABS_SCHEMA_BRANCHES) 49 self._node_fs_creator = FakeHostFileSystemProvider(TABS_SCHEMA_BRANCHES)
50 self._api_fs_iterator = HostFileSystemIterator(self._api_fs_creator, 50 self._api_fs_iterator = HostFileSystemIterator(self._api_fs_creator,
51 self._branch_utility) 51 self._branch_utility)
52 self._node_fs_iterator = HostFileSystemIterator(self._node_fs_creator, 52 self._node_fs_iterator = HostFileSystemIterator(self._node_fs_creator,
53 self._branch_utility) 53 self._branch_utility)
54 54
55 # Imitate the actual SVN file system by incrementing the stats for paths 55 # Imitate the actual SVN file system by incrementing the stats for paths
56 # where an API schema has changed. 56 # where an API schema has changed.
57 last_stat = type('last_stat', (object,), {'val': 0}) 57 last_stat = type('last_stat', (object,), {'val': 0})
58 58
59 def stat_paths(file_system, channel_info): 59 def stat_paths(file_system, channel_info):
60 if channel_info.version not in TABS_UNMODIFIED_VERSIONS: 60 if channel_info.version not in TABS_UNMODIFIED_VERSIONS:
61 last_stat.val += 1 61 last_stat.val += 1
62 # HACK: |file_system| is a MockFileSystem backed by a TestFileSystem. 62 # HACK: |file_system| is a MockFileSystem backed by a TestFileSystem.
63 # Increment the TestFileSystem stat count. 63 # Increment the TestFileSystem stat count.
64 file_system._file_system.IncrementStat(by=last_stat.val) 64 file_system._file_system.IncrementStat(by=last_stat.val)
65 # Continue looping. The iterator will stop after 'trunk' automatically. 65 # Continue looping. The iterator will stop after 'master' automatically.
66 return True 66 return True
67 67
68 # Use the HostFileSystemIterator created above to change global stat values 68 # Use the HostFileSystemIterator created above to change global stat values
69 # for the TestFileSystems that it creates. 69 # for the TestFileSystems that it creates.
70 self._node_fs_iterator.Ascending( 70 self._node_fs_iterator.Ascending(
71 # The earliest version represented with the tabs' test data is 13. 71 # The earliest version represented with the tabs' test data is 13.
72 self._branch_utility.GetStableChannelInfo(13), 72 self._branch_utility.GetStableChannelInfo(13),
73 stat_paths) 73 stat_paths)
74 74
75 def testGraphOptimization(self): 75 def testGraphOptimization(self):
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 def assertGet(ch_info, api, only_on=None, scheduled=None): 107 def assertGet(ch_info, api, only_on=None, scheduled=None):
108 for platform in GetPlatforms(): 108 for platform in GetPlatforms():
109 get_availability = self._create_availability_finder( 109 get_availability = self._create_availability_finder(
110 self._api_fs_creator, 110 self._api_fs_creator,
111 self._api_fs_iterator, 111 self._api_fs_iterator,
112 platform if only_on is None else only_on).GetAPIAvailability 112 platform if only_on is None else only_on).GetAPIAvailability
113 self.assertEqual(AvailabilityInfo(ch_info, scheduled=scheduled), 113 self.assertEqual(AvailabilityInfo(ch_info, scheduled=scheduled),
114 get_availability(api)) 114 get_availability(api))
115 115
116 # Testing APIs with predetermined availability. 116 # Testing APIs with predetermined availability.
117 assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'jsonTrunkAPI') 117 assertGet(ChannelInfo('master', 'master', 'master'), 'jsonMasterAPI')
118 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'jsonDevAPI') 118 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'jsonDevAPI')
119 assertGet(ChannelInfo('beta', CANNED_BRANCHES[30], 30), 'jsonBetaAPI') 119 assertGet(ChannelInfo('beta', CANNED_BRANCHES[30], 30), 'jsonBetaAPI')
120 assertGet(ChannelInfo('stable', CANNED_BRANCHES[20], 20), 'jsonStableAPI') 120 assertGet(ChannelInfo('stable', CANNED_BRANCHES[20], 20), 'jsonStableAPI')
121 121
122 # Testing a whitelisted API. 122 # Testing a whitelisted API.
123 assertGet(ChannelInfo('beta', CANNED_BRANCHES[30], 30), 123 assertGet(ChannelInfo('beta', CANNED_BRANCHES[30], 30),
124 'declarativeWebRequest') 124 'declarativeWebRequest')
125 125
126 # Testing APIs found only by checking file system existence. 126 # Testing APIs found only by checking file system existence.
127 assertGet(ChannelInfo('stable', CANNED_BRANCHES[23], 23), 'windows') 127 assertGet(ChannelInfo('stable', CANNED_BRANCHES[23], 23), 'windows')
128 assertGet(ChannelInfo('stable', CANNED_BRANCHES[18], 18), 'tabs') 128 assertGet(ChannelInfo('stable', CANNED_BRANCHES[18], 18), 'tabs')
129 assertGet(ChannelInfo('stable', CANNED_BRANCHES[18], 18), 'input.ime') 129 assertGet(ChannelInfo('stable', CANNED_BRANCHES[18], 18), 'input.ime')
130 130
131 # Testing API channel existence for _api_features.json. 131 # Testing API channel existence for _api_features.json.
132 # Listed as 'dev' on |beta|, 'dev' on |dev|. 132 # Listed as 'dev' on |beta|, 'dev' on |dev|.
133 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'systemInfo.stuff') 133 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'systemInfo.stuff')
134 # Listed as 'stable' on |beta|. 134 # Listed as 'stable' on |beta|.
135 assertGet(ChannelInfo('beta', CANNED_BRANCHES[30], 30), 135 assertGet(ChannelInfo('beta', CANNED_BRANCHES[30], 30),
136 'systemInfo.cpu', 136 'systemInfo.cpu',
137 scheduled=31) 137 scheduled=31)
138 138
139 # Testing API channel existence for _manifest_features.json. 139 # Testing API channel existence for _manifest_features.json.
140 # Listed as 'trunk' on all channels. 140 # Listed as 'master' on all channels.
141 assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'sync') 141 assertGet(ChannelInfo('master', 'master', 'master'), 'sync')
142 # No records of API until |trunk|. 142 # No records of API until |master|.
143 assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'history') 143 assertGet(ChannelInfo('master', 'master', 'master'), 'history')
144 # Listed as 'dev' on |dev|. 144 # Listed as 'dev' on |dev|.
145 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'storage') 145 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'storage')
146 # Stable in _manifest_features and into pre-18 versions. 146 # Stable in _manifest_features and into pre-18 versions.
147 assertGet(ChannelInfo('stable', CANNED_BRANCHES[8], 8), 'pageAction') 147 assertGet(ChannelInfo('stable', CANNED_BRANCHES[8], 8), 'pageAction')
148 148
149 # Testing API channel existence for _permission_features.json. 149 # Testing API channel existence for _permission_features.json.
150 # Listed as 'beta' on |trunk|. 150 # Listed as 'beta' on |master|.
151 assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'falseBetaAPI') 151 assertGet(ChannelInfo('master', 'master', 'master'), 'falseBetaAPI')
152 # Listed as 'trunk' on |trunk|. 152 # Listed as 'master' on |master|.
153 assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'trunkAPI') 153 assertGet(ChannelInfo('master', 'master', 'master'), 'masterAPI')
154 # Listed as 'trunk' on all development channels. 154 # Listed as 'master' on all development channels.
155 assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'declarativeContent') 155 assertGet(ChannelInfo('master', 'master', 'master'), 'declarativeContent')
156 # Listed as 'dev' on all development channels. 156 # Listed as 'dev' on all development channels.
157 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'bluetooth') 157 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'bluetooth')
158 # Listed as 'dev' on |dev|. 158 # Listed as 'dev' on |dev|.
159 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'cookies') 159 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'cookies')
160 # Treated as 'stable' APIs. 160 # Treated as 'stable' APIs.
161 assertGet(ChannelInfo('stable', CANNED_BRANCHES[24], 24), 'alarms') 161 assertGet(ChannelInfo('stable', CANNED_BRANCHES[24], 24), 'alarms')
162 assertGet(ChannelInfo('stable', CANNED_BRANCHES[21], 21), 'bookmarks') 162 assertGet(ChannelInfo('stable', CANNED_BRANCHES[21], 21), 'bookmarks')
163 163
164 # Testing older API existence using extension_api.json. 164 # Testing older API existence using extension_api.json.
165 assertGet(ChannelInfo('stable', CANNED_BRANCHES[6], 6), 'menus') 165 assertGet(ChannelInfo('stable', CANNED_BRANCHES[6], 6), 'menus')
166 assertGet(ChannelInfo('stable', CANNED_BRANCHES[5], 5), 'idle') 166 assertGet(ChannelInfo('stable', CANNED_BRANCHES[5], 5), 'idle')
167 167
168 # Switches between _features.json files across branches. 168 # Switches between _features.json files across branches.
169 # Listed as 'trunk' on all channels, in _api, _permission, or _manifest. 169 # Listed as 'master' on all channels, in _api, _permission, or _manifest.
170 assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'contextMenus') 170 assertGet(ChannelInfo('master', 'master', 'master'), 'contextMenus')
171 # Moves between _permission and _manifest as file system is traversed. 171 # Moves between _permission and _manifest as file system is traversed.
172 assertGet(ChannelInfo('stable', CANNED_BRANCHES[23], 23), 172 assertGet(ChannelInfo('stable', CANNED_BRANCHES[23], 23),
173 'systemInfo.display') 173 'systemInfo.display')
174 assertGet(ChannelInfo('stable', CANNED_BRANCHES[17], 17), 'webRequest') 174 assertGet(ChannelInfo('stable', CANNED_BRANCHES[17], 17), 'webRequest')
175 175
176 # Mid-upgrade cases: 176 # Mid-upgrade cases:
177 # Listed as 'dev' on |beta| and 'beta' on |dev|. 177 # Listed as 'dev' on |beta| and 'beta' on |dev|.
178 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'notifications') 178 assertGet(ChannelInfo('dev', CANNED_BRANCHES[31], 31), 'notifications')
179 # Listed as 'beta' on |stable|, 'dev' on |beta|...until |stable| on trunk. 179 # Listed as 'beta' on |stable|, 'dev' on |beta|...until |stable| on master.
180 assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'events') 180 assertGet(ChannelInfo('master', 'master', 'master'), 'events')
181 181
182 # Check for differing availability across apps|extensions 182 # Check for differing availability across apps|extensions
183 assertGet(ChannelInfo('stable', CANNED_BRANCHES[26], 26), 183 assertGet(ChannelInfo('stable', CANNED_BRANCHES[26], 26),
184 'appsFirst', 184 'appsFirst',
185 only_on='extensions') 185 only_on='extensions')
186 assertGet(ChannelInfo('stable', CANNED_BRANCHES[25], 25), 186 assertGet(ChannelInfo('stable', CANNED_BRANCHES[25], 25),
187 'appsFirst', 187 'appsFirst',
188 only_on='apps') 188 only_on='apps')
189 189
190 def testGetAPINodeAvailability(self): 190 def testGetAPINodeAvailability(self):
191 def assertEquals(found, channel_info, actual, scheduled=None): 191 def assertEquals(found, channel_info, actual, scheduled=None):
192 lookup_result = api_schema_graph.LookupResult 192 lookup_result = api_schema_graph.LookupResult
193 if channel_info is None: 193 if channel_info is None:
194 self.assertEquals(lookup_result(found, None), actual) 194 self.assertEquals(lookup_result(found, None), actual)
195 else: 195 else:
196 self.assertEquals(lookup_result(found, AvailabilityInfo(channel_info, 196 self.assertEquals(lookup_result(found, AvailabilityInfo(channel_info,
197 scheduled=scheduled)), actual) 197 scheduled=scheduled)), actual)
198 198
199 for platform in GetPlatforms(): 199 for platform in GetPlatforms():
200 # Allow the LookupResult constructions below to take just one line. 200 # Allow the LookupResult constructions below to take just one line.
201 avail_finder = self._create_availability_finder( 201 avail_finder = self._create_availability_finder(
202 self._node_fs_creator, 202 self._node_fs_creator,
203 self._node_fs_iterator, 203 self._node_fs_iterator,
204 platform) 204 platform)
205 tabs_graph = avail_finder.GetAPINodeAvailability('tabs') 205 tabs_graph = avail_finder.GetAPINodeAvailability('tabs')
206 fake_tabs_graph = avail_finder.GetAPINodeAvailability('fakeTabs') 206 fake_tabs_graph = avail_finder.GetAPINodeAvailability('fakeTabs')
207 207
208 assertEquals(True, self._branch_utility.GetChannelInfo('trunk'), 208 assertEquals(True, self._branch_utility.GetChannelInfo('master'),
209 tabs_graph.Lookup('tabs', 'properties', 'fakeTabsProperty3')) 209 tabs_graph.Lookup('tabs', 'properties', 'fakeTabsProperty3'))
210 assertEquals(True, self._branch_utility.GetChannelInfo('dev'), 210 assertEquals(True, self._branch_utility.GetChannelInfo('dev'),
211 tabs_graph.Lookup('tabs', 'events', 'onActivated', 'parameters', 211 tabs_graph.Lookup('tabs', 'events', 'onActivated', 'parameters',
212 'activeInfo', 'properties', 'windowId'), scheduled=31) 212 'activeInfo', 'properties', 'windowId'), scheduled=31)
213 assertEquals(True, self._branch_utility.GetChannelInfo('dev'), 213 assertEquals(True, self._branch_utility.GetChannelInfo('dev'),
214 tabs_graph.Lookup('tabs', 'events', 'onUpdated', 'parameters', 'tab'), 214 tabs_graph.Lookup('tabs', 'events', 'onUpdated', 'parameters', 'tab'),
215 scheduled=31) 215 scheduled=31)
216 assertEquals(True, self._branch_utility.GetChannelInfo('beta'), 216 assertEquals(True, self._branch_utility.GetChannelInfo('beta'),
217 tabs_graph.Lookup('tabs', 'events', 'onActivated'), scheduled=30) 217 tabs_graph.Lookup('tabs', 'events', 'onActivated'), scheduled=30)
218 assertEquals(True, self._branch_utility.GetChannelInfo('beta'), 218 assertEquals(True, self._branch_utility.GetChannelInfo('beta'),
219 tabs_graph.Lookup('tabs', 'functions', 'get', 'parameters', 'tabId'), 219 tabs_graph.Lookup('tabs', 'functions', 'get', 'parameters', 'tabId'),
220 scheduled=30) 220 scheduled=30)
221 assertEquals(True, self._branch_utility.GetChannelInfo('stable'), 221 assertEquals(True, self._branch_utility.GetChannelInfo('stable'),
222 tabs_graph.Lookup('tabs', 'types', 'InjectDetails', 'properties', 222 tabs_graph.Lookup('tabs', 'types', 'InjectDetails', 'properties',
223 'code')) 223 'code'))
224 assertEquals(True, self._branch_utility.GetChannelInfo('stable'), 224 assertEquals(True, self._branch_utility.GetChannelInfo('stable'),
225 tabs_graph.Lookup('tabs', 'types', 'InjectDetails', 'properties', 225 tabs_graph.Lookup('tabs', 'types', 'InjectDetails', 'properties',
226 'file')) 226 'file'))
227 assertEquals(True, self._branch_utility.GetStableChannelInfo(25), 227 assertEquals(True, self._branch_utility.GetStableChannelInfo(25),
228 tabs_graph.Lookup('tabs', 'types', 'InjectDetails')) 228 tabs_graph.Lookup('tabs', 'types', 'InjectDetails'))
229 229
230 # Test inlined type. 230 # Test inlined type.
231 assertEquals(True, self._branch_utility.GetChannelInfo('trunk'), 231 assertEquals(True, self._branch_utility.GetChannelInfo('master'),
232 tabs_graph.Lookup('tabs', 'types', 'InlinedType')) 232 tabs_graph.Lookup('tabs', 'types', 'InlinedType'))
233 233
234 # Test implicitly inlined type. 234 # Test implicitly inlined type.
235 assertEquals(True, self._branch_utility.GetStableChannelInfo(25), 235 assertEquals(True, self._branch_utility.GetStableChannelInfo(25),
236 fake_tabs_graph.Lookup('fakeTabs', 'types', 236 fake_tabs_graph.Lookup('fakeTabs', 'types',
237 'WasImplicitlyInlinedType')) 237 'WasImplicitlyInlinedType'))
238 238
239 # Test a node that was restricted to dev channel when it was introduced. 239 # Test a node that was restricted to dev channel when it was introduced.
240 assertEquals(True, self._branch_utility.GetChannelInfo('beta'), 240 assertEquals(True, self._branch_utility.GetChannelInfo('beta'),
241 tabs_graph.Lookup('tabs', 'functions', 'restrictedFunc'), 241 tabs_graph.Lookup('tabs', 'functions', 'restrictedFunc'),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 'UpdateInfo')) 286 'UpdateInfo'))
287 assertEquals(False, None, tabs_graph.Lookup('tabs', 'functions', 'get', 287 assertEquals(False, None, tabs_graph.Lookup('tabs', 'functions', 'get',
288 'parameters', 'callback', 'parameters', 'tab', 'id')) 288 'parameters', 'callback', 'parameters', 'tab', 'id'))
289 assertEquals(False, None, tabs_graph.Lookup('functions')) 289 assertEquals(False, None, tabs_graph.Lookup('functions'))
290 assertEquals(False, None, tabs_graph.Lookup('events', 'onActivated', 290 assertEquals(False, None, tabs_graph.Lookup('events', 'onActivated',
291 'parameters', 'activeInfo', 'tabId')) 291 'parameters', 'activeInfo', 'tabId'))
292 292
293 293
294 if __name__ == '__main__': 294 if __name__ == '__main__':
295 unittest.main() 295 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698