17b81192dSJeffrey Tan"""
27b81192dSJeffrey TanTest source text regex breakpoint hydrates module debug info
37b81192dSJeffrey Tanin symbol on-demand mode.
47b81192dSJeffrey Tan"""
57b81192dSJeffrey Tan
67b81192dSJeffrey Tan
77b81192dSJeffrey Tanimport lldb
87b81192dSJeffrey Tanfrom lldbsuite.test.decorators import *
97b81192dSJeffrey Tanfrom lldbsuite.test.lldbtest import *
107b81192dSJeffrey Tanfrom lldbsuite.test import lldbutil
117b81192dSJeffrey Tan
127b81192dSJeffrey Tan
137b81192dSJeffrey Tanclass TestSourceTextRegexBreakpoint(TestBase):
14d738d471SJeffrey Tan    @skipIfWindows
157b81192dSJeffrey Tan    def test_with_run_command(self):
167b81192dSJeffrey Tan        self.build()
177b81192dSJeffrey Tan
187b81192dSJeffrey Tan        # Load symbols on-demand
197b81192dSJeffrey Tan        self.runCmd("settings set symbols.load-on-demand true")
207b81192dSJeffrey Tan
217b81192dSJeffrey Tan        self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)
227b81192dSJeffrey Tan
23*2238dcc3SJonas Devlieghere        lldbutil.run_break_set_by_source_regexp(self, "Set break point at this line.")
247b81192dSJeffrey Tan        self.runCmd("run", RUN_SUCCEEDED)
257b81192dSJeffrey Tan
267b81192dSJeffrey Tan        # The stop reason of the thread should be breakpoint.
27*2238dcc3SJonas Devlieghere        self.expect(
28*2238dcc3SJonas Devlieghere            "thread list",
29*2238dcc3SJonas Devlieghere            STOPPED_DUE_TO_BREAKPOINT,
30*2238dcc3SJonas Devlieghere            substrs=["stopped", "stop reason = breakpoint"],
31*2238dcc3SJonas Devlieghere        )
327b81192dSJeffrey Tan
337b81192dSJeffrey Tan        frame = self.frame()
347b81192dSJeffrey Tan        self.assertTrue(frame.IsValid())
357b81192dSJeffrey Tan        self.assertEqual(frame.GetLineEntry().GetFileSpec().GetFilename(), "main.cpp")
367b81192dSJeffrey Tan        self.assertEqual(frame.GetLineEntry().GetLine(), 4)
37