aboutsummaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py')
-rw-r--r--packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py241
1 files changed, 186 insertions, 55 deletions
diff --git a/packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py b/packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py
index 4a99dc479019..c4126a329686 100644
--- a/packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py
+++ b/packages/Python/lldbsuite/test/expression_command/formatters/TestFormatters.py
@@ -5,12 +5,12 @@ Test using LLDB data formatters with frozen objects coming from the expression p
from __future__ import print_function
-
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
+
class ExprFormattersTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@@ -22,11 +22,13 @@ class ExprFormattersTestCase(TestBase):
self.line = line_number('main.cpp',
'// Stop here')
- @skipIfFreeBSD # llvm.org/pr24691 skipping to avoid crashing the test runner
- @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr19011 Newer Clang omits C1 complete object constructor')
+ @skipIfFreeBSD # llvm.org/pr24691 skipping to avoid crashing the test runner
+ @expectedFailureAll(
+ oslist=['freebsd'],
+ bugnumber='llvm.org/pr19011 Newer Clang omits C1 complete object constructor')
@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr21765")
- @skipIfTargetAndroid() # skipping to avoid crashing the test runner
- @expectedFailureAndroid('llvm.org/pr24691') # we hit an assertion in clang
+ @skipIfTargetAndroid() # skipping to avoid crashing the test runner
+ @expectedFailureAndroid('llvm.org/pr24691') # we hit an assertion in clang
def test(self):
"""Test expr + formatters for good interoperability."""
self.build()
@@ -36,64 +38,117 @@ class ExprFormattersTestCase(TestBase):
def cleanup():
self.runCmd('type summary clear', check=False)
self.runCmd('type synthetic clear', check=False)
-
+
# Execute the cleanup function during test case tear down.
self.addTearDownHook(cleanup)
"""Test expr + formatters for good interoperability."""
self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
- lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.line, loc_exact=True)
+ lldbutil.run_break_set_by_file_and_line(
+ self, "main.cpp", self.line, loc_exact=True)
self.runCmd("run", RUN_SUCCEEDED)
self.runCmd("command script import formatters.py")
self.runCmd("command script import foosynth.py")
-
+
if self.TraceOn():
self.runCmd("frame variable foo1 --show-types")
self.runCmd("frame variable foo1.b --show-types")
self.runCmd("frame variable foo1.b.b_ref --show-types")
- self.expect("expression --show-types -- *(new foo(47))",
- substrs = ['(int) a = 47', '(bar) b = {', '(int) i = 94', '(baz) b = {', '(int) k = 99'])
+ self.expect(
+ "expression --show-types -- *(new foo(47))",
+ substrs=[
+ '(int) a = 47',
+ '(bar) b = {',
+ '(int) i = 94',
+ '(baz) b = {',
+ '(int) k = 99'])
self.runCmd("type summary add -F formatters.foo_SummaryProvider foo")
self.expect("expression new int(12)",
- substrs = ['(int *) $', ' = 0x'])
+ substrs=['(int *) $', ' = 0x'])
- self.runCmd("type summary add -s \"${var%pointer} -> ${*var%decimal}\" \"int *\"")
+ self.runCmd(
+ "type summary add -s \"${var%pointer} -> ${*var%decimal}\" \"int *\"")
self.expect("expression new int(12)",
- substrs = ['(int *) $', '= 0x', ' -> 12'])
+ substrs=['(int *) $', '= 0x', ' -> 12'])
self.expect("expression foo1.a_ptr",
- substrs = ['(int *) $', '= 0x', ' -> 13'])
-
- self.expect("expression foo1",
- substrs = ['(foo) $', ' a = 12', 'a_ptr = ', ' -> 13','i = 24','i_ptr = ', ' -> 25'])
-
- self.expect("expression --ptr-depth=1 -- new foo(47)",
- substrs = ['(foo *) $', 'a = 47','a_ptr = ', ' -> 48','i = 94','i_ptr = ', ' -> 95'])
-
- self.expect("expression foo2",
- substrs = ['(foo) $', 'a = 121','a_ptr = ', ' -> 122','i = 242','i_ptr = ', ' -> 243'])
+ substrs=['(int *) $', '= 0x', ' -> 13'])
+
+ self.expect(
+ "expression foo1",
+ substrs=[
+ '(foo) $',
+ ' a = 12',
+ 'a_ptr = ',
+ ' -> 13',
+ 'i = 24',
+ 'i_ptr = ',
+ ' -> 25'])
+
+ self.expect(
+ "expression --ptr-depth=1 -- new foo(47)",
+ substrs=[
+ '(foo *) $',
+ 'a = 47',
+ 'a_ptr = ',
+ ' -> 48',
+ 'i = 94',
+ 'i_ptr = ',
+ ' -> 95'])
+
+ self.expect(
+ "expression foo2",
+ substrs=[
+ '(foo) $',
+ 'a = 121',
+ 'a_ptr = ',
+ ' -> 122',
+ 'i = 242',
+ 'i_ptr = ',
+ ' -> 243'])
object_name = self.res.GetOutput()
object_name = object_name[7:]
object_name = object_name[0:object_name.find(' =')]
- self.expect("frame variable foo2",
- substrs = ['(foo)', 'foo2', 'a = 121','a_ptr = ', ' -> 122','i = 242','i_ptr = ', ' -> 243'])
-
- self.expect("expression $" + object_name,
- substrs = ['(foo) $', 'a = 121','a_ptr = ', ' -> 122','i = 242','i_ptr = ', ' -> 243', 'h = 245','k = 247'])
+ self.expect(
+ "frame variable foo2",
+ substrs=[
+ '(foo)',
+ 'foo2',
+ 'a = 121',
+ 'a_ptr = ',
+ ' -> 122',
+ 'i = 242',
+ 'i_ptr = ',
+ ' -> 243'])
+
+ self.expect(
+ "expression $" +
+ object_name,
+ substrs=[
+ '(foo) $',
+ 'a = 121',
+ 'a_ptr = ',
+ ' -> 122',
+ 'i = 242',
+ 'i_ptr = ',
+ ' -> 243',
+ 'h = 245',
+ 'k = 247'])
self.runCmd("type summary delete foo")
- self.runCmd("type synthetic add --python-class foosynth.FooSyntheticProvider foo")
+ self.runCmd(
+ "type synthetic add --python-class foosynth.FooSyntheticProvider foo")
self.expect("expression --show-types -- $" + object_name,
- substrs = ['(foo) $', ' = {', '(int) *i_ptr = 243'])
+ substrs=['(foo) $', ' = {', '(int) *i_ptr = 243'])
self.runCmd("n")
self.runCmd("n")
@@ -101,31 +156,61 @@ class ExprFormattersTestCase(TestBase):
self.runCmd("type synthetic delete foo")
self.runCmd("type summary add -F formatters.foo_SummaryProvider foo")
- self.expect("expression foo2",
- substrs = ['(foo) $', 'a = 7777','a_ptr = ', ' -> 122','i = 242','i_ptr = ', ' -> 8888'])
+ self.expect(
+ "expression foo2",
+ substrs=[
+ '(foo) $',
+ 'a = 7777',
+ 'a_ptr = ',
+ ' -> 122',
+ 'i = 242',
+ 'i_ptr = ',
+ ' -> 8888'])
self.expect("expression $" + object_name + '.a',
- substrs = ['7777'])
+ substrs=['7777'])
self.expect("expression *$" + object_name + '.b.i_ptr',
- substrs = ['8888'])
-
- self.expect("expression $" + object_name,
- substrs = ['(foo) $', 'a = 121', 'a_ptr = ', ' -> 122', 'i = 242', 'i_ptr = ', ' -> 8888', 'h = 245','k = 247'])
+ substrs=['8888'])
+
+ self.expect(
+ "expression $" +
+ object_name,
+ substrs=[
+ '(foo) $',
+ 'a = 121',
+ 'a_ptr = ',
+ ' -> 122',
+ 'i = 242',
+ 'i_ptr = ',
+ ' -> 8888',
+ 'h = 245',
+ 'k = 247'])
self.runCmd("type summary delete foo")
- self.runCmd("type synthetic add --python-class foosynth.FooSyntheticProvider foo")
+ self.runCmd(
+ "type synthetic add --python-class foosynth.FooSyntheticProvider foo")
self.expect("expression --show-types -- $" + object_name,
- substrs = ['(foo) $', ' = {', '(int) *i_ptr = 8888'])
+ substrs=['(foo) $', ' = {', '(int) *i_ptr = 8888'])
self.runCmd("n")
self.runCmd("type synthetic delete foo")
self.runCmd("type summary add -F formatters.foo_SummaryProvider foo")
- self.expect("expression $" + object_name,
- substrs = ['(foo) $', 'a = 121','a_ptr = ', ' -> 122','i = 242', 'i_ptr = ', ' -> 8888','k = 247'])
+ self.expect(
+ "expression $" +
+ object_name,
+ substrs=[
+ '(foo) $',
+ 'a = 121',
+ 'a_ptr = ',
+ ' -> 122',
+ 'i = 242',
+ 'i_ptr = ',
+ ' -> 8888',
+ 'k = 247'])
process = self.dbg.GetSelectedTarget().GetProcess()
thread = process.GetThreadAtIndex(0)
@@ -136,32 +221,78 @@ class ExprFormattersTestCase(TestBase):
a_data = frozen.GetPointeeData()
error = lldb.SBError()
- self.assertTrue(a_data.GetUnsignedInt32(error, 0) == 122, '*a_ptr = 122')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 0) == 122,
+ '*a_ptr = 122')
- self.runCmd("n");self.runCmd("n");self.runCmd("n");
+ self.runCmd("n")
+ self.runCmd("n")
+ self.runCmd("n")
self.expect("frame variable numbers",
- substrs = ['1','2','3','4','5'])
+ substrs=['1', '2', '3', '4', '5'])
self.expect("expression numbers",
- substrs = ['1','2','3','4','5'])
+ substrs=['1', '2', '3', '4', '5'])
frozen = frame.EvaluateExpression("&numbers")
a_data = frozen.GetPointeeData(0, 1)
- self.assertTrue(a_data.GetUnsignedInt32(error, 0) == 1, 'numbers[0] == 1')
- self.assertTrue(a_data.GetUnsignedInt32(error, 4) == 2, 'numbers[1] == 2')
- self.assertTrue(a_data.GetUnsignedInt32(error, 8) == 3, 'numbers[2] == 3')
- self.assertTrue(a_data.GetUnsignedInt32(error, 12) == 4, 'numbers[3] == 4')
- self.assertTrue(a_data.GetUnsignedInt32(error, 16) == 5, 'numbers[4] == 5')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 0) == 1,
+ 'numbers[0] == 1')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 4) == 2,
+ 'numbers[1] == 2')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 8) == 3,
+ 'numbers[2] == 3')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 12) == 4,
+ 'numbers[3] == 4')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 16) == 5,
+ 'numbers[4] == 5')
frozen = frame.EvaluateExpression("numbers")
a_data = frozen.GetData()
- self.assertTrue(a_data.GetUnsignedInt32(error, 0) == 1, 'numbers[0] == 1')
- self.assertTrue(a_data.GetUnsignedInt32(error, 4) == 2, 'numbers[1] == 2')
- self.assertTrue(a_data.GetUnsignedInt32(error, 8) == 3, 'numbers[2] == 3')
- self.assertTrue(a_data.GetUnsignedInt32(error, 12) == 4, 'numbers[3] == 4')
- self.assertTrue(a_data.GetUnsignedInt32(error, 16) == 5, 'numbers[4] == 5')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 0) == 1,
+ 'numbers[0] == 1')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 4) == 2,
+ 'numbers[1] == 2')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 8) == 3,
+ 'numbers[2] == 3')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 12) == 4,
+ 'numbers[3] == 4')
+ self.assertTrue(
+ a_data.GetUnsignedInt32(
+ error,
+ 16) == 5,
+ 'numbers[4] == 5')