xref: /llvm-project/lldb/test/API/sample_test/TestSampleTest.py (revision 2238dcc39358353cac21df75c3c3286ab20b8f53)
199451b44SJordan Rupprecht"""
299451b44SJordan RupprechtDescribe the purpose of the test class here.
399451b44SJordan Rupprecht"""
499451b44SJordan Rupprecht
599451b44SJordan Rupprecht
699451b44SJordan Rupprechtimport lldb
799451b44SJordan Rupprechtimport lldbsuite.test.lldbutil as lldbutil
899451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
999451b44SJordan Rupprecht
1099451b44SJordan Rupprecht
1199451b44SJordan Rupprechtclass RenameThisSampleTestTestCase(TestBase):
12c6ad6901SVenkata Ramanaiah Nalamothu    # If your test case doesn't stress debug info, then
1399451b44SJordan Rupprecht    # set this to true.  That way it won't be run once for
1499451b44SJordan Rupprecht    # each debug info format.
1599451b44SJordan Rupprecht    NO_DEBUG_INFO_TESTCASE = True
1699451b44SJordan Rupprecht
1799451b44SJordan Rupprecht    def test_sample_rename_this(self):
1899451b44SJordan Rupprecht        """There can be many tests in a test case - describe this test here."""
1999451b44SJordan Rupprecht        self.build()
2099451b44SJordan Rupprecht        self.main_source_file = lldb.SBFileSpec("main.c")
2199451b44SJordan Rupprecht        self.sample_test()
2299451b44SJordan Rupprecht
2399451b44SJordan Rupprecht    def setUp(self):
2499451b44SJordan Rupprecht        # Call super's setUp().
2599451b44SJordan Rupprecht        TestBase.setUp(self)
2699451b44SJordan Rupprecht        # Set up your test case here. If your test doesn't need any set up then
2799451b44SJordan Rupprecht        # remove this method from your TestCase class.
2899451b44SJordan Rupprecht
2999451b44SJordan Rupprecht    def sample_test(self):
3099451b44SJordan Rupprecht        """You might use the test implementation in several ways, say so here."""
3199451b44SJordan Rupprecht
3299451b44SJordan Rupprecht        # This function starts a process, "a.out" by default, sets a source
3399451b44SJordan Rupprecht        # breakpoint, runs to it, and returns the thread, process & target.
3499451b44SJordan Rupprecht        # It optionally takes an SBLaunchOption argument if you want to pass
3599451b44SJordan Rupprecht        # arguments or environment variables.
36*2238dcc3SJonas Devlieghere        (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
37*2238dcc3SJonas Devlieghere            self, "Set a breakpoint here", self.main_source_file
38*2238dcc3SJonas Devlieghere        )
3999451b44SJordan Rupprecht
4099451b44SJordan Rupprecht        frame = thread.GetFrameAtIndex(0)
4199451b44SJordan Rupprecht        test_var = frame.FindVariable("test_var")
42779bbbf2SDave Lee        self.assertSuccess(test_var.GetError(), "Failed to fetch test_var")
4399451b44SJordan Rupprecht        test_value = test_var.GetValueAsUnsigned()
4499451b44SJordan Rupprecht        self.assertEqual(test_value, 10, "Got the right value for test_var")
4599451b44SJordan Rupprecht
4654c26872SRaphael Isemann    def sample_test_no_launch(self):
4754c26872SRaphael Isemann        """Same as above but doesn't launch a process."""
4854c26872SRaphael Isemann
4954c26872SRaphael Isemann        target = self.createTestTarget()
505d7c1d8fSRaphael Isemann        self.expect_expr("global_test_var", result_value="10")
51