================
@@ -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

Reply via email to