| Index: chrome/common/extensions/docs/server2/availability_finder_test.py
|
| diff --git a/chrome/common/extensions/docs/server2/availability_finder_test.py b/chrome/common/extensions/docs/server2/availability_finder_test.py
|
| index abe0556beafae7696ee8efb4a66305b69a01a264..3edf7ff76aed1143f56c467637be1e679e866fca 100755
|
| --- a/chrome/common/extensions/docs/server2/availability_finder_test.py
|
| +++ b/chrome/common/extensions/docs/server2/availability_finder_test.py
|
| @@ -15,6 +15,7 @@ from fake_url_fetcher import FakeUrlFetcher
|
| from host_file_system_iterator import HostFileSystemIterator
|
| from mock_function import MockFunction
|
| from object_store_creator import ObjectStoreCreator
|
| +from platform_util import GetPlatforms
|
| from test_data.canned_data import (CANNED_API_FILE_SYSTEM_DATA, CANNED_BRANCHES)
|
| from test_data.object_level_availability.tabs import TABS_SCHEMA_BRANCHES
|
| from test_util import Server2Path
|
| @@ -24,27 +25,32 @@ TABS_UNMODIFIED_VERSIONS = (16, 20, 23, 24)
|
|
|
| class AvailabilityFinderTest(unittest.TestCase):
|
|
|
| + def _create_availability_finder(self,
|
| + host_fs_creator,
|
| + host_fs_iterator,
|
| + platform):
|
| + test_object_store = ObjectStoreCreator.ForTest()
|
| + return AvailabilityFinder(
|
| + self._branch_utility,
|
| + CompiledFileSystem.Factory(test_object_store),
|
| + host_fs_iterator,
|
| + host_fs_creator.GetTrunk(),
|
| + test_object_store,
|
| + platform)
|
| +
|
| def setUp(self):
|
| self._branch_utility = BranchUtility(
|
| os.path.join('branch_utility', 'first.json'),
|
| os.path.join('branch_utility', 'second.json'),
|
| FakeUrlFetcher(Server2Path('test_data')),
|
| ObjectStoreCreator.ForTest())
|
| - api_fs_creator = FakeHostFileSystemProvider(CANNED_API_FILE_SYSTEM_DATA)
|
| + self._api_fs_creator = FakeHostFileSystemProvider(
|
| + CANNED_API_FILE_SYSTEM_DATA)
|
| self._node_fs_creator = FakeHostFileSystemProvider(TABS_SCHEMA_BRANCHES)
|
| -
|
| - def create_availability_finder(host_fs_creator):
|
| - test_object_store = ObjectStoreCreator.ForTest()
|
| - return AvailabilityFinder(
|
| - self._branch_utility,
|
| - CompiledFileSystem.Factory(test_object_store),
|
| - HostFileSystemIterator(host_fs_creator,
|
| - self._branch_utility),
|
| - host_fs_creator.GetTrunk(),
|
| - test_object_store)
|
| -
|
| - self._avail_finder = create_availability_finder(api_fs_creator)
|
| - self._node_avail_finder = create_availability_finder(self._node_fs_creator)
|
| + self._api_fs_iterator = HostFileSystemIterator(self._api_fs_creator,
|
| + self._branch_utility)
|
| + self._node_fs_iterator = HostFileSystemIterator(self._node_fs_creator,
|
| + self._branch_utility)
|
|
|
| # Imitate the actual SVN file system by incrementing the stats for paths
|
| # where an API schema has changed.
|
| @@ -61,33 +67,36 @@ class AvailabilityFinderTest(unittest.TestCase):
|
|
|
| # Use the HostFileSystemIterator created above to change global stat values
|
| # for the TestFileSystems that it creates.
|
| - self._node_avail_finder._file_system_iterator.Ascending(
|
| + self._node_fs_iterator.Ascending(
|
| # The earliest version represented with the tabs' test data is 13.
|
| self._branch_utility.GetStableChannelInfo(13),
|
| stat_paths)
|
|
|
| def testGraphOptimization(self):
|
| - # Keep track of how many times the APISchemaGraph constructor is called.
|
| - original_constructor = api_schema_graph.APISchemaGraph
|
| - mock_constructor = MockFunction(original_constructor)
|
| - api_schema_graph.APISchemaGraph = mock_constructor
|
| -
|
| - try:
|
| - # The test data includes an extra branch where the API does not exist.
|
| - num_versions = len(TABS_SCHEMA_BRANCHES) - 1
|
| - # We expect an APISchemaGraph to be created only when an API schema file
|
| - # has different stat data from the previous version's schema file.
|
| - num_graphs_created = num_versions - len(TABS_UNMODIFIED_VERSIONS)
|
| -
|
| - # Run the logic for object-level availability for an API.
|
| - self._node_avail_finder.GetAPINodeAvailability('tabs')
|
| -
|
| - self.assertTrue(*api_schema_graph.APISchemaGraph.CheckAndReset(
|
| - num_graphs_created))
|
| - finally:
|
| - # Ensure that the APISchemaGraph constructor is reset to be the original
|
| - # constructor.
|
| - api_schema_graph.APISchemaGraph = original_constructor
|
| + for platform in GetPlatforms():
|
| + # Keep track of how many times the APISchemaGraph constructor is called.
|
| + original_constructor = api_schema_graph.APISchemaGraph
|
| + mock_constructor = MockFunction(original_constructor)
|
| + api_schema_graph.APISchemaGraph = mock_constructor
|
| +
|
| + node_avail_finder = self._create_availability_finder(
|
| + self._node_fs_creator, self._node_fs_iterator, platform)
|
| + try:
|
| + # The test data includes an extra branch where the API does not exist.
|
| + num_versions = len(TABS_SCHEMA_BRANCHES) - 1
|
| + # We expect an APISchemaGraph to be created only when an API schema file
|
| + # has different stat data from the previous version's schema file.
|
| + num_graphs_created = num_versions - len(TABS_UNMODIFIED_VERSIONS)
|
| +
|
| + # Run the logic for object-level availability for an API.
|
| + node_avail_finder.GetAPINodeAvailability('tabs')
|
| +
|
| + self.assertTrue(*api_schema_graph.APISchemaGraph.CheckAndReset(
|
| + num_graphs_created))
|
| + finally:
|
| + # Ensure that the APISchemaGraph constructor is reset to be the original
|
| + # constructor.
|
| + api_schema_graph.APISchemaGraph = original_constructor
|
|
|
| def testGetAPIAvailability(self):
|
| # Key: Using 'channel' (i.e. 'beta') to represent an availability listing
|
| @@ -95,229 +104,196 @@ class AvailabilityFinderTest(unittest.TestCase):
|
| # represent the development channel, or phase of development, where an API's
|
| # availability is being checked.
|
|
|
| + def assertGet(ch_info, api, only_on=None, scheduled=None):
|
| + for platform in GetPlatforms():
|
| + get_availability = self._create_availability_finder(
|
| + self._api_fs_creator,
|
| + self._api_fs_iterator,
|
| + platform if only_on is None else only_on).GetAPIAvailability
|
| + self.assertEqual(AvailabilityInfo(ch_info, scheduled=scheduled),
|
| + get_availability(api))
|
| +
|
| # Testing APIs with predetermined availability.
|
| - self.assertEqual(
|
| - AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')),
|
| - self._avail_finder.GetAPIAvailability('jsonTrunkAPI'))
|
| - self.assertEqual(
|
| - AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)),
|
| - self._avail_finder.GetAPIAvailability('jsonDevAPI'))
|
| - self.assertEqual(
|
| - AvailabilityInfo(ChannelInfo('beta', CANNED_BRANCHES[27], 27)),
|
| - self._avail_finder.GetAPIAvailability('jsonBetaAPI'))
|
| - self.assertEqual(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[20], 20)),
|
| - self._avail_finder.GetAPIAvailability('jsonStableAPI'))
|
| + assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'jsonTrunkAPI')
|
| + assertGet(ChannelInfo('dev', CANNED_BRANCHES[28], 28), 'jsonDevAPI')
|
| + assertGet(ChannelInfo('beta', CANNED_BRANCHES[27], 27), 'jsonBetaAPI')
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[20], 20), 'jsonStableAPI')
|
|
|
| # Testing a whitelisted API.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('beta', CANNED_BRANCHES[27], 27)),
|
| - self._avail_finder.GetAPIAvailability('declarativeWebRequest'))
|
| + assertGet(ChannelInfo('beta', CANNED_BRANCHES[27], 27),
|
| + 'declarativeWebRequest')
|
|
|
| # Testing APIs found only by checking file system existence.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[23], 23)),
|
| - self._avail_finder.GetAPIAvailability('windows'))
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[18], 18)),
|
| - self._avail_finder.GetAPIAvailability('tabs'))
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[18], 18)),
|
| - self._avail_finder.GetAPIAvailability('input.ime'))
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[23], 23), 'windows')
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[18], 18), 'tabs')
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[18], 18), 'input.ime')
|
|
|
| # Testing API channel existence for _api_features.json.
|
| # Listed as 'dev' on |beta|, 'dev' on |dev|.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)),
|
| - self._avail_finder.GetAPIAvailability('systemInfo.stuff'))
|
| + assertGet(ChannelInfo('dev', CANNED_BRANCHES[28], 28), 'systemInfo.stuff')
|
| # Listed as 'stable' on |beta|.
|
| - self.assertEquals(
|
| - AvailabilityInfo(
|
| - ChannelInfo('beta', CANNED_BRANCHES[27], 27),
|
| - scheduled=28),
|
| - self._avail_finder.GetAPIAvailability('systemInfo.cpu'))
|
| + assertGet(ChannelInfo('beta', CANNED_BRANCHES[27], 27),
|
| + 'systemInfo.cpu',
|
| + scheduled=28)
|
|
|
| # Testing API channel existence for _manifest_features.json.
|
| # Listed as 'trunk' on all channels.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')),
|
| - self._avail_finder.GetAPIAvailability('sync'))
|
| + assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'sync')
|
| # No records of API until |trunk|.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')),
|
| - self._avail_finder.GetAPIAvailability('history'))
|
| + assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'history')
|
| # Listed as 'dev' on |dev|.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)),
|
| - self._avail_finder.GetAPIAvailability('storage'))
|
| + assertGet(ChannelInfo('dev', CANNED_BRANCHES[28], 28), 'storage')
|
| # Stable in _manifest_features and into pre-18 versions.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[8], 8)),
|
| - self._avail_finder.GetAPIAvailability('pageAction'))
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[8], 8), 'pageAction')
|
|
|
| # Testing API channel existence for _permission_features.json.
|
| # Listed as 'beta' on |trunk|.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')),
|
| - self._avail_finder.GetAPIAvailability('falseBetaAPI'))
|
| + assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'falseBetaAPI')
|
| # Listed as 'trunk' on |trunk|.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')),
|
| - self._avail_finder.GetAPIAvailability('trunkAPI'))
|
| + assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'trunkAPI')
|
| # Listed as 'trunk' on all development channels.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')),
|
| - self._avail_finder.GetAPIAvailability('declarativeContent'))
|
| + assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'declarativeContent')
|
| # Listed as 'dev' on all development channels.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)),
|
| - self._avail_finder.GetAPIAvailability('bluetooth'))
|
| + assertGet(ChannelInfo('dev', CANNED_BRANCHES[28], 28), 'bluetooth')
|
| # Listed as 'dev' on |dev|.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)),
|
| - self._avail_finder.GetAPIAvailability('cookies'))
|
| + assertGet(ChannelInfo('dev', CANNED_BRANCHES[28], 28), 'cookies')
|
| # Treated as 'stable' APIs.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[24], 24)),
|
| - self._avail_finder.GetAPIAvailability('alarms'))
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[21], 21)),
|
| - self._avail_finder.GetAPIAvailability('bookmarks'))
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[24], 24), 'alarms')
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[21], 21), 'bookmarks')
|
|
|
| # Testing older API existence using extension_api.json.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[6], 6)),
|
| - self._avail_finder.GetAPIAvailability('menus'))
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[5], 5)),
|
| - self._avail_finder.GetAPIAvailability('idle'))
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[6], 6), 'menus')
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[5], 5), 'idle')
|
|
|
| # Switches between _features.json files across branches.
|
| # Listed as 'trunk' on all channels, in _api, _permission, or _manifest.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')),
|
| - self._avail_finder.GetAPIAvailability('contextMenus'))
|
| + assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'contextMenus')
|
| # Moves between _permission and _manifest as file system is traversed.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[23], 23)),
|
| - self._avail_finder.GetAPIAvailability('systemInfo.display'))
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('stable', CANNED_BRANCHES[17], 17)),
|
| - self._avail_finder.GetAPIAvailability('webRequest'))
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[23], 23),
|
| + 'systemInfo.display')
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[17], 17), 'webRequest')
|
|
|
| # Mid-upgrade cases:
|
| # Listed as 'dev' on |beta| and 'beta' on |dev|.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('dev', CANNED_BRANCHES[28], 28)),
|
| - self._avail_finder.GetAPIAvailability('notifications'))
|
| - # Listed as 'beta' on |stable|, 'dev' on |beta| ... until |stable| on trunk.
|
| - self.assertEquals(
|
| - AvailabilityInfo(ChannelInfo('trunk', 'trunk', 'trunk')),
|
| - self._avail_finder.GetAPIAvailability('events'))
|
| + assertGet(ChannelInfo('dev', CANNED_BRANCHES[28], 28), 'notifications')
|
| + # Listed as 'beta' on |stable|, 'dev' on |beta|...until |stable| on trunk.
|
| + assertGet(ChannelInfo('trunk', 'trunk', 'trunk'), 'events')
|
| +
|
| + # Check for differing availability across apps|extensions
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[26], 26),
|
| + 'appsFirst',
|
| + only_on='extensions')
|
| + assertGet(ChannelInfo('stable', CANNED_BRANCHES[25], 25),
|
| + 'appsFirst',
|
| + only_on='apps')
|
|
|
| def testGetAPINodeAvailability(self):
|
| # Allow the LookupResult constructions below to take just one line.
|
| - lookup_result = api_schema_graph.LookupResult
|
| - availability_graph = self._node_avail_finder.GetAPINodeAvailability('tabs')
|
| -
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetChannelInfo('trunk')),
|
| - availability_graph.Lookup('tabs', 'properties',
|
| - 'fakeTabsProperty3'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetChannelInfo('dev')),
|
| - availability_graph.Lookup('tabs', 'events', 'onActivated',
|
| - 'parameters', 'activeInfo', 'properties',
|
| - 'windowId'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetChannelInfo('dev')),
|
| - availability_graph.Lookup('tabs', 'events', 'onUpdated', 'parameters',
|
| - 'tab'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetChannelInfo('beta')),
|
| - availability_graph.Lookup('tabs', 'events','onActivated'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetChannelInfo('beta')),
|
| - availability_graph.Lookup('tabs', 'functions', 'get', 'parameters',
|
| - 'tabId'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetChannelInfo('stable')),
|
| - availability_graph.Lookup('tabs', 'types', 'InjectDetails',
|
| - 'properties', 'code'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetChannelInfo('stable')),
|
| - availability_graph.Lookup('tabs', 'types', 'InjectDetails',
|
| - 'properties', 'file'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(25)),
|
| - availability_graph.Lookup('tabs', 'types', 'InjectDetails'))
|
| -
|
| - # Nothing new in version 24 or 23.
|
| -
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(22)),
|
| - availability_graph.Lookup('tabs', 'types', 'Tab', 'properties',
|
| - 'windowId'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(21)),
|
| - availability_graph.Lookup('tabs', 'types', 'Tab', 'properties',
|
| - 'selected'))
|
| -
|
| - # Nothing new in version 20.
|
| -
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(19)),
|
| - availability_graph.Lookup('tabs', 'functions', 'getCurrent'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(18)),
|
| - availability_graph.Lookup('tabs', 'types', 'Tab', 'properties',
|
| - 'index'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(17)),
|
| - availability_graph.Lookup('tabs', 'events', 'onUpdated', 'parameters',
|
| - 'changeInfo'))
|
| -
|
| - # Nothing new in version 16.
|
| -
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(15)),
|
| - availability_graph.Lookup('tabs', 'properties',
|
| - 'fakeTabsProperty2'))
|
| -
|
| - # Everything else is available at the API's release, version 14 here.
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| - availability_graph.Lookup('tabs', 'types', 'Tab'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| - availability_graph.Lookup('tabs', 'types', 'Tab',
|
| - 'properties', 'url'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| - availability_graph.Lookup('tabs', 'properties',
|
| - 'fakeTabsProperty1'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| - availability_graph.Lookup('tabs', 'functions', 'get', 'parameters',
|
| - 'callback'))
|
| - self.assertEquals(
|
| - lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| - availability_graph.Lookup('tabs', 'events', 'onUpdated'))
|
| -
|
| - # Test things that aren't available.
|
| - self.assertEqual(lookup_result(False, None),
|
| - availability_graph.Lookup('tabs', 'types',
|
| - 'UpdateInfo'))
|
| - self.assertEqual(lookup_result(False, None),
|
| - availability_graph.Lookup('tabs', 'functions', 'get',
|
| - 'parameters', 'callback',
|
| - 'parameters', 'tab', 'id'))
|
| - self.assertEqual(lookup_result(False, None),
|
| - availability_graph.Lookup('functions'))
|
| - self.assertEqual(lookup_result(False, None),
|
| - availability_graph.Lookup('events', 'onActivated',
|
| - 'parameters', 'activeInfo',
|
| - 'tabId'))
|
| + for platform in GetPlatforms():
|
| + lookup_result = api_schema_graph.LookupResult
|
| + availability_graph = self._create_availability_finder(
|
| + self._node_fs_creator,
|
| + self._node_fs_iterator,
|
| + platform).GetAPINodeAvailability('tabs')
|
| +
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetChannelInfo('trunk')),
|
| + availability_graph.Lookup('tabs', 'properties',
|
| + 'fakeTabsProperty3'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetChannelInfo('dev')),
|
| + availability_graph.Lookup('tabs', 'events', 'onActivated',
|
| + 'parameters', 'activeInfo', 'properties',
|
| + 'windowId'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetChannelInfo('dev')),
|
| + availability_graph.Lookup('tabs', 'events', 'onUpdated', 'parameters',
|
| + 'tab'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetChannelInfo('beta')),
|
| + availability_graph.Lookup('tabs', 'events','onActivated'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetChannelInfo('beta')),
|
| + availability_graph.Lookup('tabs', 'functions', 'get', 'parameters',
|
| + 'tabId'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetChannelInfo('stable')),
|
| + availability_graph.Lookup('tabs', 'types', 'InjectDetails',
|
| + 'properties', 'code'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetChannelInfo('stable')),
|
| + availability_graph.Lookup('tabs', 'types', 'InjectDetails',
|
| + 'properties', 'file'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(25)),
|
| + availability_graph.Lookup('tabs', 'types', 'InjectDetails'))
|
| +
|
| + # Nothing new in version 24 or 23.
|
| +
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(22)),
|
| + availability_graph.Lookup('tabs', 'types', 'Tab', 'properties',
|
| + 'windowId'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(21)),
|
| + availability_graph.Lookup('tabs', 'types', 'Tab', 'properties',
|
| + 'selected'))
|
| +
|
| + # Nothing new in version 20.
|
| +
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(19)),
|
| + availability_graph.Lookup('tabs', 'functions', 'getCurrent'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(18)),
|
| + availability_graph.Lookup('tabs', 'types', 'Tab', 'properties',
|
| + 'index'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(17)),
|
| + availability_graph.Lookup('tabs', 'events', 'onUpdated', 'parameters',
|
| + 'changeInfo'))
|
| +
|
| + # Nothing new in version 16.
|
| +
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(15)),
|
| + availability_graph.Lookup('tabs', 'properties',
|
| + 'fakeTabsProperty2'))
|
| +
|
| + # Everything else is available at the API's release, version 14 here.
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| + availability_graph.Lookup('tabs', 'types', 'Tab'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| + availability_graph.Lookup('tabs', 'types', 'Tab',
|
| + 'properties', 'url'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| + availability_graph.Lookup('tabs', 'properties',
|
| + 'fakeTabsProperty1'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| + availability_graph.Lookup('tabs', 'functions', 'get', 'parameters',
|
| + 'callback'))
|
| + self.assertEquals(
|
| + lookup_result(True, self._branch_utility.GetStableChannelInfo(14)),
|
| + availability_graph.Lookup('tabs', 'events', 'onUpdated'))
|
| +
|
| + # Test things that aren't available.
|
| + self.assertEqual(lookup_result(False, None),
|
| + availability_graph.Lookup('tabs', 'types',
|
| + 'UpdateInfo'))
|
| + self.assertEqual(lookup_result(False, None),
|
| + availability_graph.Lookup('tabs', 'functions', 'get',
|
| + 'parameters', 'callback',
|
| + 'parameters', 'tab', 'id'))
|
| + self.assertEqual(lookup_result(False, None),
|
| + availability_graph.Lookup('functions'))
|
| + self.assertEqual(lookup_result(False, None),
|
| + availability_graph.Lookup('events', 'onActivated',
|
| + 'parameters', 'activeInfo',
|
| + 'tabId'))
|
|
|
|
|
| if __name__ == '__main__':
|
|
|