summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py')
-rw-r--r--lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py
index 09369f43819..9c25597391d 100644
--- a/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py
+++ b/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py
@@ -26,7 +26,7 @@ class ExprCommandCallOverriddenMethod(TestBase):
# Find the line number to break for main.c.
self.line = line_number('main.cpp', '// Set breakpoint here')
- def test(self):
+ def test_call_on_base(self):
"""Test calls to overridden methods in derived classes."""
self.build()
@@ -42,14 +42,28 @@ class ExprCommandCallOverriddenMethod(TestBase):
# class method is never an override).
self.expect("expr b->foo()", substrs=["2"])
+ # Test calling the base class.
+ self.expect("expr realbase.foo()", substrs=["1"])
+
+ @skipIfLinux # Returns wrong result code on some platforms.
+ def test_call_on_derived(self):
+ """Test calls to overridden methods in derived classes."""
+ self.build()
+
+ # Set breakpoint in main and run exe
+ self.runCmd("file " + self.getBuildArtifact("a.out"),
+ CURRENT_EXECUTABLE_SET)
+ lldbutil.run_break_set_by_file_and_line(
+ self, "main.cpp", self.line, num_expected_locations=-1, loc_exact=True)
+
+ self.runCmd("run", RUN_SUCCEEDED)
+
# Test call to overridden method in derived class (this will fail if the
# overrides table is not correctly set up, as Derived::foo will be assigned
# a vtable entry that does not exist in the compiled program).
self.expect("expr d.foo()", substrs=["2"])
- # Test calling the base class.
- self.expect("expr realbase.foo()", substrs=["1"])
-
+ @skipIfLinux # Calling constructor causes SIGABRT
@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr43707")
def test_call_on_temporary(self):
"""Test calls to overridden methods in derived classes."""
OpenPOWER on IntegriCloud