================
@@ -1,7 +1,55 @@
-from lldbsuite.test import lldbinline
-from lldbsuite.test import decorators
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
-lldbinline.MakeInlineTest(
- __file__,
- globals(),
-)
+
+class TestStringPrinter(TestBase):
+ def test(self):
+ self.build()
+
+ self.addTearDownHook(
+ lambda x: x.runCmd("setting set escape-non-printables true")
+ )
+
+ lldbutil.run_to_source_breakpoint(
+ self, "Break here", lldb.SBFileSpec("main.cpp", False)
+ )
+
+ self.expect_var_path(
+ "charwithtabs",
+ summary='"Hello\\t\\tWorld\\nI am here\\t\\tto say hello\\n"',
+ )
+ self.expect_var_path("a.data", summary='"FOOB"')
+ self.expect_var_path("b.data", summary=r'"FO\0B"')
+ self.expect_var_path("c.data", summary=r'"F\0O"')
+ self.expect_var_path("manytrailingnuls", summary=r'"F\0OO\0BA\0R"')
+
+ for c in ["", "const"]:
+ for v in ["", "volatile"]:
+ for s in ["", "unsigned"]:
+ summary = '"' + c + v + s + 'char"'
+ self.expect_var_path(c + v + s + "chararray",
summary=summary)
+ # These should be printed normally
+ self.expect_var_path(c + v + s + "charstar",
summary=summary)
+
+ Schar5 = self.expect_var_path(
+ "Schar5", children=[ValueCheck(name="x", value="0")]
+ )
+ self.assertIsNone(Schar5.GetSummary())
+ Scharstar = self.expect_var_path(
+ "Scharstar", children=[ValueCheck(name="x", value="0")]
+ )
+ self.assertIsNone(Scharstar.GetSummary())
+
+ self.runCmd("setting set escape-non-printables false")
+ self.expect_var_path(
+ "charwithtabs", summary='"Hello\t\tWorld\nI am here\t\tto say
hello\n"'
+ )
+ self.assertTrue(
+
self.frame().FindVariable("longconstcharstar").GetSummary().endswith('"...')
+ )
+
+ # FIXME: make "b.data" and "c.data" work sanely
+
+ self.expect("frame variable ref", substrs=['&ref = "Hello"'])
----------------
Michael137 wrote:
We should also assert that `GetSummary` is now `None` (or a valid summary,
depending on fix). And also we should do a `ValueCheck` on the child.
https://github.com/llvm/llvm-project/pull/174398
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits