aboutsummaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/types/TestRecursiveTypes.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Python/lldbsuite/test/types/TestRecursiveTypes.py')
-rw-r--r--packages/Python/lldbsuite/test/types/TestRecursiveTypes.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/types/TestRecursiveTypes.py b/packages/Python/lldbsuite/test/types/TestRecursiveTypes.py
new file mode 100644
index 000000000000..0b60b5a4d63a
--- /dev/null
+++ b/packages/Python/lldbsuite/test/types/TestRecursiveTypes.py
@@ -0,0 +1,51 @@
+"""
+Test that recursive types are handled correctly.
+"""
+
+from __future__ import print_function
+
+
+
+import lldb
+import lldbsuite.test.lldbutil as lldbutil
+import sys
+from lldbsuite.test.lldbtest import *
+
+class RecursiveTypesTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ def setUp(self):
+ # Call super's setUp().
+ TestBase.setUp(self)
+ # disable "There is a running process, kill it and restart?" prompt
+ self.runCmd("settings set auto-confirm true")
+ self.addTearDownHook(lambda: self.runCmd("settings clear auto-confirm"))
+ # Find the line number to break for main.c.
+ self.line = line_number('recursive_type_main.cpp',
+ '// Test at this line.')
+
+ self.d1 = {'CXX_SOURCES': 'recursive_type_main.cpp recursive_type_1.cpp'}
+ self.d2 = {'CXX_SOURCES': 'recursive_type_main.cpp recursive_type_2.cpp'}
+
+ def test_recursive_type_1(self):
+ """Test that recursive structs are displayed correctly."""
+ self.build(dictionary=self.d1)
+ self.setTearDownCleanup(dictionary=self.d1)
+ self.print_struct()
+
+ def test_recursive_type_2(self):
+ """Test that recursive structs are displayed correctly."""
+ self.build(dictionary=self.d2)
+ self.setTearDownCleanup(dictionary=self.d2)
+ self.print_struct()
+
+ def print_struct(self):
+ self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
+
+ lldbutil.run_break_set_by_file_and_line (self, "recursive_type_main.cpp", self.line, num_expected_locations=-1, loc_exact=True)
+
+ self.runCmd("run", RUN_SUCCEEDED)
+
+ self.expect("print tpi", RUN_SUCCEEDED)
+ self.expect("print *tpi", RUN_SUCCEEDED)