1"""Test the SBPlatform APIs.""" 2 3from lldbsuite.test.decorators import * 4from lldbsuite.test.lldbtest import * 5 6class SBPlatformAPICase(TestBase): 7 8 mydir = TestBase.compute_mydir(__file__) 9 NO_DEBUG_INFO_TESTCASE = True 10 11 @skipIfRemote # Remote environment not supported. 12 def test_run(self): 13 self.build() 14 plat = lldb.SBPlatform.GetHostPlatform() 15 16 os.environ["MY_TEST_ENV_VAR"]="SBPlatformAPICase.test_run" 17 def cleanup(): 18 del os.environ["MY_TEST_ENV_VAR"] 19 self.addTearDownHook(cleanup) 20 cmd = lldb.SBPlatformShellCommand(self.getBuildArtifact("a.out")) 21 self.assertSuccess(plat.Run(cmd)) 22 self.assertIn("MY_TEST_ENV_VAR=SBPlatformAPICase.test_run", cmd.GetOutput()) 23 24 def test_SetSDKRoot(self): 25 plat = lldb.SBPlatform("remote-linux") # arbitrary choice 26 self.assertTrue(plat) 27 plat.SetSDKRoot(self.getBuildDir()) 28 self.dbg.SetSelectedPlatform(plat) 29 self.expect("platform status", 30 substrs=["Sysroot:", self.getBuildDir()]) 31 32 def test_SetCurrentPlatform_floating(self): 33 # floating platforms cannot be referenced by name until they are 34 # associated with a debugger 35 floating_platform = lldb.SBPlatform("remote-netbsd") 36 floating_platform.SetWorkingDirectory(self.getBuildDir()) 37 self.assertSuccess(self.dbg.SetCurrentPlatform("remote-netbsd")) 38 dbg_platform = self.dbg.GetSelectedPlatform() 39 self.assertEqual(dbg_platform.GetName(), "remote-netbsd") 40 self.assertIsNone(dbg_platform.GetWorkingDirectory()) 41 42 def test_SetCurrentPlatform_associated(self): 43 # associated platforms are found by name-based lookup 44 floating_platform = lldb.SBPlatform("remote-netbsd") 45 floating_platform.SetWorkingDirectory(self.getBuildDir()) 46 orig_platform = self.dbg.GetSelectedPlatform() 47 48 self.dbg.SetSelectedPlatform(floating_platform) 49 self.dbg.SetSelectedPlatform(orig_platform) 50 self.assertSuccess(self.dbg.SetCurrentPlatform("remote-netbsd")) 51 dbg_platform = self.dbg.GetSelectedPlatform() 52 self.assertEqual(dbg_platform.GetName(), "remote-netbsd") 53 self.assertEqual(dbg_platform.GetWorkingDirectory(), self.getBuildDir()) 54