Files

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

82 lines
3.3 KiB
Python
Raw Permalink Normal View History

"""
Test the lldb platform Python API.
"""
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class PlatformPythonTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@add_test_categories(['pyapi'])
@no_debug_info_test
def test_platform_list(self):
"""Test SBDebugger::GetNumPlatforms() & GetPlatformAtIndex() API"""
# Verify the host platform is present by default.
initial_num_platforms = self.dbg.GetNumPlatforms()
self.assertGreater(initial_num_platforms, 0)
host_platform = self.dbg.GetPlatformAtIndex(0)
self.assertTrue(host_platform.IsValid() and
host_platform.GetName() == 'host',
'The host platform is present')
# Select another platform and verify that the platform is added to
# the platform list.
platform_idx = self.dbg.GetNumAvailablePlatforms() - 1
if platform_idx < 1:
self.fail('No platforms other than host are available')
platform_data = self.dbg.GetAvailablePlatformInfoAtIndex(platform_idx)
platform_name = platform_data.GetValueForKey('name').GetStringValue(100)
self.assertNotEqual(platform_name, 'host')
self.dbg.SetCurrentPlatform(platform_name)
selected_platform = self.dbg.GetSelectedPlatform()
self.assertTrue(selected_platform.IsValid())
self.assertEqual(selected_platform.GetName(), platform_name)
self.assertEqual(self.dbg.GetNumPlatforms(), initial_num_platforms + 1)
platform_found = False
for platform_idx in range(self.dbg.GetNumPlatforms()):
platform = self.dbg.GetPlatformAtIndex(platform_idx)
if platform.GetName() == platform_name:
platform_found = True
break
self.assertTrue(platform_found)
@add_test_categories(['pyapi'])
@no_debug_info_test
def test_host_is_connected(self):
# We've already tested that this one IS the host platform.
host_platform = self.dbg.GetPlatformAtIndex(0)
self.assertTrue(host_platform.IsConnected(), "The host platform is always connected")
@add_test_categories(['pyapi'])
@no_debug_info_test
def test_available_platform_list(self):
"""Test SBDebugger::GetNumAvailablePlatforms() and GetAvailablePlatformInfoAtIndex() API"""
num_platforms = self.dbg.GetNumAvailablePlatforms()
self.assertGreater(
num_platforms, 0,
'There should be at least one platform available')
for i in range(num_platforms):
platform_data = self.dbg.GetAvailablePlatformInfoAtIndex(i)
name_data = platform_data.GetValueForKey('name')
desc_data = platform_data.GetValueForKey('description')
self.assertTrue(
name_data and name_data.IsValid(),
'Platform has a name')
self.assertEqual(
name_data.GetType(), lldb.eStructuredDataTypeString,
'Platform name is a string')
self.assertTrue(
desc_data and desc_data.IsValid(),
'Platform has a description')
self.assertEqual(
desc_data.GetType(), lldb.eStructuredDataTypeString,
'Platform description is a string')