diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/types/TestRecursiveTypes.py')
-rw-r--r-- | packages/Python/lldbsuite/test/types/TestRecursiveTypes.py | 51 |
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) |