OLD | NEW |
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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 api_schema_graph.APISchemaGraph = mock_constructor | 73 api_schema_graph.APISchemaGraph = mock_constructor |
74 | 74 |
75 try: | 75 try: |
76 # The test data includes an extra branch where the API does not exist. | 76 # The test data includes an extra branch where the API does not exist. |
77 num_versions = len(TABS_SCHEMA_BRANCHES) - 1 | 77 num_versions = len(TABS_SCHEMA_BRANCHES) - 1 |
78 # We expect an APISchemaGraph to be created only when an API schema file | 78 # We expect an APISchemaGraph to be created only when an API schema file |
79 # has different stat data from the previous version's schema file. | 79 # has different stat data from the previous version's schema file. |
80 num_graphs_created = num_versions - len(TABS_UNMODIFIED_VERSIONS) | 80 num_graphs_created = num_versions - len(TABS_UNMODIFIED_VERSIONS) |
81 | 81 |
82 # Run the logic for object-level availability for an API. | 82 # Run the logic for object-level availability for an API. |
83 self._node_avail_finder.GetApiNodeAvailability('tabs') | 83 self._node_avail_finder.GetAPINodeAvailability('tabs') |
84 | 84 |
85 self.assertTrue(*api_schema_graph.APISchemaGraph.CheckAndReset( | 85 self.assertTrue(*api_schema_graph.APISchemaGraph.CheckAndReset( |
86 num_graphs_created)) | 86 num_graphs_created)) |
87 finally: | 87 finally: |
88 # Ensure that the APISchemaGraph constructor is reset to be the original | 88 # Ensure that the APISchemaGraph constructor is reset to be the original |
89 # constructor. | 89 # constructor. |
90 api_schema_graph.APISchemaGraph = original_constructor | 90 api_schema_graph.APISchemaGraph = original_constructor |
91 | 91 |
92 def testGetApiAvailability(self): | 92 def testGetAPIAvailability(self): |
93 # Key: Using 'channel' (i.e. 'beta') to represent an availability listing | 93 # Key: Using 'channel' (i.e. 'beta') to represent an availability listing |
94 # for an API in a _features.json file, and using |channel| (i.e. |dev|) to | 94 # for an API in a _features.json file, and using |channel| (i.e. |dev|) to |
95 # represent the development channel, or phase of development, where an API's | 95 # represent the development channel, or phase of development, where an API's |
96 # availability is being checked. | 96 # availability is being checked. |
97 | 97 |
98 # Testing APIs with predetermined availability. | 98 # Testing APIs with predetermined availability. |
99 self.assertEqual( | 99 self.assertEqual( |
100 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), | 100 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), |
101 self._avail_finder.GetApiAvailability('jsonTrunkAPI')) | 101 self._avail_finder.GetAPIAvailability('jsonTrunkAPI')) |
102 self.assertEqual( | 102 self.assertEqual( |
103 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), | 103 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), |
104 self._avail_finder.GetApiAvailability('jsonDevAPI')) | 104 self._avail_finder.GetAPIAvailability('jsonDevAPI')) |
105 self.assertEqual( | 105 self.assertEqual( |
106 AvailabilityInfo(ChannelInfo('beta', CANNED_BRANCHES[27], 27)), | 106 AvailabilityInfo(ChannelInfo('beta', CANNED_BRANCHES[27], 27)), |
107 self._avail_finder.GetApiAvailability('jsonBetaAPI')) | 107 self._avail_finder.GetAPIAvailability('jsonBetaAPI')) |
108 self.assertEqual( | 108 self.assertEqual( |
109 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[20], 20)), | 109 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[20], 20)), |
110 self._avail_finder.GetApiAvailability('jsonStableAPI')) | 110 self._avail_finder.GetAPIAvailability('jsonStableAPI')) |
111 | 111 |
112 # Testing a whitelisted API. | 112 # Testing a whitelisted API. |
113 self.assertEquals( | 113 self.assertEquals( |
114 AvailabilityInfo(ChannelInfo('beta', CANNED_BRANCHES[27], 27)), | 114 AvailabilityInfo(ChannelInfo('beta', CANNED_BRANCHES[27], 27)), |
115 self._avail_finder.GetApiAvailability('declarativeWebRequest')) | 115 self._avail_finder.GetAPIAvailability('declarativeWebRequest')) |
116 | 116 |
117 # Testing APIs found only by checking file system existence. | 117 # Testing APIs found only by checking file system existence. |
118 self.assertEquals( | 118 self.assertEquals( |
119 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[23], 23)), | 119 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[23], 23)), |
120 self._avail_finder.GetApiAvailability('windows')) | 120 self._avail_finder.GetAPIAvailability('windows')) |
121 self.assertEquals( | 121 self.assertEquals( |
122 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[18], 18)), | 122 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[18], 18)), |
123 self._avail_finder.GetApiAvailability('tabs')) | 123 self._avail_finder.GetAPIAvailability('tabs')) |
124 self.assertEquals( | 124 self.assertEquals( |
125 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[18], 18)), | 125 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[18], 18)), |
126 self._avail_finder.GetApiAvailability('input.ime')) | 126 self._avail_finder.GetAPIAvailability('input.ime')) |
127 | 127 |
128 # Testing API channel existence for _api_features.json. | 128 # Testing API channel existence for _api_features.json. |
129 # Listed as 'dev' on |beta|, 'dev' on |dev|. | 129 # Listed as 'dev' on |beta|, 'dev' on |dev|. |
130 self.assertEquals( | 130 self.assertEquals( |
131 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), | 131 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), |
132 self._avail_finder.GetApiAvailability('systemInfo.stuff')) | 132 self._avail_finder.GetAPIAvailability('systemInfo.stuff')) |
133 # Listed as 'stable' on |beta|. | 133 # Listed as 'stable' on |beta|. |
134 self.assertEquals( | 134 self.assertEquals( |
135 AvailabilityInfo( | 135 AvailabilityInfo( |
136 ChannelInfo('beta', CANNED_BRANCHES[27], 27), | 136 ChannelInfo('beta', CANNED_BRANCHES[27], 27), |
137 scheduled=28), | 137 scheduled=28), |
138 self._avail_finder.GetApiAvailability('systemInfo.cpu')) | 138 self._avail_finder.GetAPIAvailability('systemInfo.cpu')) |
139 | 139 |
140 # Testing API channel existence for _manifest_features.json. | 140 # Testing API channel existence for _manifest_features.json. |
141 # Listed as 'trunk' on all channels. | 141 # Listed as 'trunk' on all channels. |
142 self.assertEquals( | 142 self.assertEquals( |
143 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), | 143 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), |
144 self._avail_finder.GetApiAvailability('sync')) | 144 self._avail_finder.GetAPIAvailability('sync')) |
145 # No records of API until |trunk|. | 145 # No records of API until |trunk|. |
146 self.assertEquals( | 146 self.assertEquals( |
147 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), | 147 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), |
148 self._avail_finder.GetApiAvailability('history')) | 148 self._avail_finder.GetAPIAvailability('history')) |
149 # Listed as 'dev' on |dev|. | 149 # Listed as 'dev' on |dev|. |
150 self.assertEquals( | 150 self.assertEquals( |
151 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), | 151 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), |
152 self._avail_finder.GetApiAvailability('storage')) | 152 self._avail_finder.GetAPIAvailability('storage')) |
153 # Stable in _manifest_features and into pre-18 versions. | 153 # Stable in _manifest_features and into pre-18 versions. |
154 self.assertEquals( | 154 self.assertEquals( |
155 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[8], 8)), | 155 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[8], 8)), |
156 self._avail_finder.GetApiAvailability('pageAction')) | 156 self._avail_finder.GetAPIAvailability('pageAction')) |
157 | 157 |
158 # Testing API channel existence for _permission_features.json. | 158 # Testing API channel existence for _permission_features.json. |
159 # Listed as 'beta' on |trunk|. | 159 # Listed as 'beta' on |trunk|. |
160 self.assertEquals( | 160 self.assertEquals( |
161 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), | 161 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), |
162 self._avail_finder.GetApiAvailability('falseBetaAPI')) | 162 self._avail_finder.GetAPIAvailability('falseBetaAPI')) |
163 # Listed as 'trunk' on |trunk|. | 163 # Listed as 'trunk' on |trunk|. |
164 self.assertEquals( | 164 self.assertEquals( |
165 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), | 165 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), |
166 self._avail_finder.GetApiAvailability('trunkAPI')) | 166 self._avail_finder.GetAPIAvailability('trunkAPI')) |
167 # Listed as 'trunk' on all development channels. | 167 # Listed as 'trunk' on all development channels. |
168 self.assertEquals( | 168 self.assertEquals( |
169 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), | 169 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), |
170 self._avail_finder.GetApiAvailability('declarativeContent')) | 170 self._avail_finder.GetAPIAvailability('declarativeContent')) |
171 # Listed as 'dev' on all development channels. | 171 # Listed as 'dev' on all development channels. |
172 self.assertEquals( | 172 self.assertEquals( |
173 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), | 173 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), |
174 self._avail_finder.GetApiAvailability('bluetooth')) | 174 self._avail_finder.GetAPIAvailability('bluetooth')) |
175 # Listed as 'dev' on |dev|. | 175 # Listed as 'dev' on |dev|. |
176 self.assertEquals( | 176 self.assertEquals( |
177 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), | 177 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), |
178 self._avail_finder.GetApiAvailability('cookies')) | 178 self._avail_finder.GetAPIAvailability('cookies')) |
179 # Treated as 'stable' APIs. | 179 # Treated as 'stable' APIs. |
180 self.assertEquals( | 180 self.assertEquals( |
181 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[24], 24)), | 181 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[24], 24)), |
182 self._avail_finder.GetApiAvailability('alarms')) | 182 self._avail_finder.GetAPIAvailability('alarms')) |
183 self.assertEquals( | 183 self.assertEquals( |
184 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[21], 21)), | 184 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[21], 21)), |
185 self._avail_finder.GetApiAvailability('bookmarks')) | 185 self._avail_finder.GetAPIAvailability('bookmarks')) |
186 | 186 |
187 # Testing older API existence using extension_api.json. | 187 # Testing older API existence using extension_api.json. |
188 self.assertEquals( | 188 self.assertEquals( |
189 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[6], 6)), | 189 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[6], 6)), |
190 self._avail_finder.GetApiAvailability('menus')) | 190 self._avail_finder.GetAPIAvailability('menus')) |
191 self.assertEquals( | 191 self.assertEquals( |
192 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[5], 5)), | 192 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[5], 5)), |
193 self._avail_finder.GetApiAvailability('idle')) | 193 self._avail_finder.GetAPIAvailability('idle')) |
194 | 194 |
195 # Switches between _features.json files across branches. | 195 # Switches between _features.json files across branches. |
196 # Listed as 'trunk' on all channels, in _api, _permission, or _manifest. | 196 # Listed as 'trunk' on all channels, in _api, _permission, or _manifest. |
197 self.assertEquals( | 197 self.assertEquals( |
198 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), | 198 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), |
199 self._avail_finder.GetApiAvailability('contextMenus')) | 199 self._avail_finder.GetAPIAvailability('contextMenus')) |
200 # Moves between _permission and _manifest as file system is traversed. | 200 # Moves between _permission and _manifest as file system is traversed. |
201 self.assertEquals( | 201 self.assertEquals( |
202 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[23], 23)), | 202 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[23], 23)), |
203 self._avail_finder.GetApiAvailability('systemInfo.display')) | 203 self._avail_finder.GetAPIAvailability('systemInfo.display')) |
204 self.assertEquals( | 204 self.assertEquals( |
205 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[17], 17)), | 205 AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[17], 17)), |
206 self._avail_finder.GetApiAvailability('webRequest')) | 206 self._avail_finder.GetAPIAvailability('webRequest')) |
207 | 207 |
208 # Mid-upgrade cases: | 208 # Mid-upgrade cases: |
209 # Listed as 'dev' on |beta| and 'beta' on |dev|. | 209 # Listed as 'dev' on |beta| and 'beta' on |dev|. |
210 self.assertEquals( | 210 self.assertEquals( |
211 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), | 211 AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)), |
212 self._avail_finder.GetApiAvailability('notifications')) | 212 self._avail_finder.GetAPIAvailability('notifications')) |
213 # Listed as 'beta' on |stable|, 'dev' on |beta| ... until |stable| on trunk. | 213 # Listed as 'beta' on |stable|, 'dev' on |beta| ... until |stable| on trunk. |
214 self.assertEquals( | 214 self.assertEquals( |
215 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), | 215 AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')), |
216 self._avail_finder.GetApiAvailability('events')) | 216 self._avail_finder.GetAPIAvailability('events')) |
217 | 217 |
218 def testGetApiNodeAvailability(self): | 218 def testGetAPINodeAvailability(self): |
219 # Allow the LookupResult constructions below to take just one line. | 219 # Allow the LookupResult constructions below to take just one line. |
220 lookup_result = api_schema_graph.LookupResult | 220 lookup_result = api_schema_graph.LookupResult |
221 availability_graph = self._node_avail_finder.GetApiNodeAvailability('tabs') | 221 availability_graph = self._node_avail_finder.GetAPINodeAvailability('tabs') |
222 | 222 |
223 self.assertEquals( | 223 self.assertEquals( |
224 lookup_result(True, self._branch_utility.GetChannelInfo('trunk')), | 224 lookup_result(True, self._branch_utility.GetChannelInfo('trunk')), |
225 availability_graph.Lookup('tabs', 'properties', | 225 availability_graph.Lookup('tabs', 'properties', |
226 'fakeTabsProperty3')) | 226 'fakeTabsProperty3')) |
227 self.assertEquals( | 227 self.assertEquals( |
228 lookup_result(True, self._branch_utility.GetChannelInfo('dev')), | 228 lookup_result(True, self._branch_utility.GetChannelInfo('dev')), |
229 availability_graph.Lookup('tabs', 'events', 'onActivated', | 229 availability_graph.Lookup('tabs', 'events', 'onActivated', |
230 'parameters', 'activeInfo', 'properties', | 230 'parameters', 'activeInfo', 'properties', |
231 'windowId')) | 231 'windowId')) |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 self.assertEqual(lookup_result(False, None), | 315 self.assertEqual(lookup_result(False, None), |
316 availability_graph.Lookup('functions')) | 316 availability_graph.Lookup('functions')) |
317 self.assertEqual(lookup_result(False, None), | 317 self.assertEqual(lookup_result(False, None), |
318 availability_graph.Lookup('events', 'onActivated', | 318 availability_graph.Lookup('events', 'onActivated', |
319 'parameters', 'activeInfo', | 319 'parameters', 'activeInfo', |
320 'tabId')) | 320 'tabId')) |
321 | 321 |
322 | 322 |
323 if __name__ == '__main__': | 323 if __name__ == '__main__': |
324 unittest.main() | 324 unittest.main() |
OLD | NEW |