"""Test the SBPlatform APIs.""" from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * class SBPlatformAPICase(TestBase): NO_DEBUG_INFO_TESTCASE = True @skipIfRemote # Remote environment not supported. def test_run(self): self.build() plat = lldb.SBPlatform.GetHostPlatform() os.environ["MY_TEST_ENV_VAR"] = "SBPlatformAPICase.test_run" def cleanup(): del os.environ["MY_TEST_ENV_VAR"] self.addTearDownHook(cleanup) cmd = lldb.SBPlatformShellCommand(self.getBuildArtifact("a.out")) self.assertSuccess(plat.Run(cmd)) self.assertIn("MY_TEST_ENV_VAR=SBPlatformAPICase.test_run", cmd.GetOutput()) def test_SetSDKRoot(self): plat = lldb.SBPlatform("remote-linux") # arbitrary choice self.assertTrue(plat) plat.SetSDKRoot(self.getBuildDir()) self.dbg.SetSelectedPlatform(plat) self.expect("platform status", substrs=["Sysroot:", self.getBuildDir()]) def test_SetCurrentPlatform_floating(self): # floating platforms cannot be referenced by name until they are # associated with a debugger floating_platform = lldb.SBPlatform("remote-netbsd") floating_platform.SetWorkingDirectory(self.getBuildDir()) self.assertSuccess(self.dbg.SetCurrentPlatform("remote-netbsd")) dbg_platform = self.dbg.GetSelectedPlatform() self.assertEqual(dbg_platform.GetName(), "remote-netbsd") self.assertIsNone(dbg_platform.GetWorkingDirectory()) def test_SetCurrentPlatform_associated(self): # associated platforms are found by name-based lookup floating_platform = lldb.SBPlatform("remote-netbsd") floating_platform.SetWorkingDirectory(self.getBuildDir()) orig_platform = self.dbg.GetSelectedPlatform() self.dbg.SetSelectedPlatform(floating_platform) self.dbg.SetSelectedPlatform(orig_platform) self.assertSuccess(self.dbg.SetCurrentPlatform("remote-netbsd")) dbg_platform = self.dbg.GetSelectedPlatform() self.assertEqual(dbg_platform.GetName(), "remote-netbsd") self.assertEqual(dbg_platform.GetWorkingDirectory(), self.getBuildDir())