| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class DefaultSourceFileTestCase(TestBase): | |
| def test_default_source_file_is_entry_point(self): | |
| """The default file for a line breakpoint is main's file, not Foo::main's.""" | |
| self.build() | |
| target = self.dbg.CreateTarget(self.getBuildArtifact("a.out")) | |
| self.assertTrue(target, VALID_TARGET) | |
| entry_line = line_number("main.cpp", "BREAK: entry point") | |
| # "break set -l" with no file picks the default source file: the one | |
| # containing the entry point. Foo::main in other.cpp shares the base | |
| # name "main" and must not be chosen instead. | |
| lldbutil.run_break_set_by_file_and_line( | |
| self, None, entry_line, num_expected_locations=1, loc_exact=True | |
| ) | |
| bp = target.GetBreakpointAtIndex(0) | |
| loc = bp.GetLocationAtIndex(0) | |
| line_entry = loc.GetAddress().GetLineEntry() | |
| self.assertEqual(line_entry.GetFileSpec().GetFilename(), "main.cpp") | |
| self.assertEqual(line_entry.GetLine(), entry_line) |