From 3b44c9af8efd95aba7b4f351e5175ebf02e7b396 Mon Sep 17 00:00:00 2001 From: Michael Buch Date: Wed, 14 Sep 2022 12:31:25 -0400 Subject: [lldb][tests] Move C++ gmodules tests into new gmodules/ subdirectory This is in preparation for adding more gmodules tests. Differential Revision: https://reviews.llvm.org/D133876 --- .../cpp/gmodules/basic/TestWithModuleDebugging.py | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py (limited to 'lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py') diff --git a/lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py b/lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py new file mode 100644 index 000000000000..d79a753f7248 --- /dev/null +++ b/lldb/test/API/lang/cpp/gmodules/basic/TestWithModuleDebugging.py @@ -0,0 +1,92 @@ +import lldb +import os +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestWithGmodulesDebugInfo(TestBase): + + @skipIf(bugnumber="llvm.org/pr36146", oslist=["linux"], archs=["i386"]) + @add_test_categories(["gmodules"]) + def test_specialized_typedef_from_pch(self): + self.build() + + src_file = os.path.join(self.getSourceDir(), "main.cpp") + src_file_spec = lldb.SBFileSpec(src_file) + self.assertTrue(src_file_spec.IsValid(), "breakpoint file") + + # Get the path of the executable + exe_path = self.getBuildArtifact("a.out") + + # Load the executable + target = self.dbg.CreateTarget(exe_path) + self.assertTrue(target.IsValid(), VALID_TARGET) + + # Break on interesting line + breakpoint = target.BreakpointCreateBySourceRegex( + "break here", src_file_spec) + self.assertTrue( + breakpoint.IsValid() and breakpoint.GetNumLocations() >= 1, + VALID_BREAKPOINT) + + # Launch the process + process = target.LaunchSimple( + None, None, self.get_process_working_directory()) + self.assertTrue(process.IsValid(), PROCESS_IS_VALID) + + # Get the thread of the process + self.assertState(process.GetState(), lldb.eStateStopped) + thread = lldbutil.get_stopped_thread( + process, lldb.eStopReasonBreakpoint) + self.assertTrue( + thread.IsValid(), + "There should be a thread stopped due to breakpoint condition") + + # Get frame for current thread + frame = thread.frames[0] + + testValue = frame.EvaluateExpression("test") + self.assertTrue( + testValue.GetError().Success(), + "Test expression value invalid: %s" % + (testValue.GetError().GetCString())) + self.assertEqual( + testValue.GetTypeName(), "IntContainer", + "Test expression type incorrect") + + memberValue = testValue.GetChildMemberWithName("storage") + self.assertTrue( + memberValue.GetError().Success(), + "Member value missing or invalid: %s" % + (testValue.GetError().GetCString())) + self.assertEqual( + memberValue.GetTypeName(), "int", + "Member type incorrect") + self.assertEqual( + 42, + memberValue.GetValueAsSigned(), + "Member value incorrect") + + testValue = frame.EvaluateExpression("bar") + self.assertTrue( + testValue.GetError().Success(), + "Test expression value invalid: %s" % + (testValue.GetError().GetCString())) + self.assertEqual( + testValue.GetTypeName(), "Foo::Bar", + "Test expression type incorrect") + + memberValue = testValue.GetChildMemberWithName("i") + self.assertTrue( + memberValue.GetError().Success(), + "Member value missing or invalid: %s" % + (testValue.GetError().GetCString())) + self.assertEqual( + memberValue.GetTypeName(), "int", + "Member type incorrect") + self.assertEqual( + 123, + memberValue.GetValueAsSigned(), + "Member value incorrect") + -- cgit v1.2.3