labath created this revision.
labath added a reviewer: clayborg.
labath added subscribers: zturner, lldb-commits.

using stdio in tests does not work on windows, and it is not completely 
reliable on linux.
Avoid using stdio in this test, as it is not necessary for this purpose.

http://reviews.llvm.org/D20567

Files:
  packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py
  packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp

Index: packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp
===================================================================
--- packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp
+++ packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp
@@ -1,5 +1,4 @@
-#include <stdio.h>
-#include <stdint.h>
+#include <string>
 
 class A
 {
@@ -84,18 +83,19 @@
     C *c_as_C = new C();
     A *c_as_A = c_as_C;
 
-    printf ("a_as_A->a() = '%s'\n", a_as_A->a());
-    printf ("a_as_A->b() = '%s'\n", a_as_A->b());
-    printf ("a_as_A->c() = '%s'\n", a_as_A->c());
-    printf ("b_as_A->a() = '%s'\n", b_as_A->a());
-    printf ("b_as_A->b() = '%s'\n", b_as_A->b());
-    printf ("b_as_A->c() = '%s'\n", b_as_A->c());
-    printf ("b_as_B->aa() = '%s'\n", b_as_B->aa());
-    printf ("c_as_A->a() = '%s'\n", c_as_A->a());
-    printf ("c_as_A->b() = '%s'\n", c_as_A->b());
-    printf ("c_as_A->c() = '%s'\n", c_as_A->c());
-    printf ("c_as_C->aa() = '%s'\n", c_as_C->aa());
-    puts("");// Set first breakpoint here.
+    std::string golden;
+    golden += std::string("a_as_A->a() = '") + a_as_A->a() + "'\n";
+    golden += std::string("a_as_A->b() = '") + a_as_A->b() + "'\n";
+    golden += std::string("a_as_A->c() = '") + a_as_A->c() + "'\n";
+    golden += std::string("b_as_A->a() = '") + b_as_A->a() + "'\n";
+    golden += std::string("b_as_A->b() = '") + b_as_A->b() + "'\n";
+    golden += std::string("b_as_A->c() = '") + b_as_A->c() + "'\n";
+    golden += std::string("b_as_B->aa() = '") + b_as_B->aa() + "'\n";
+    golden += std::string("c_as_A->a() = '") + c_as_A->a() + "'\n";
+    golden += std::string("c_as_A->b() = '") + c_as_A->b() + "'\n";
+    golden += std::string("c_as_A->c() = '") + c_as_A->c() + "'\n";
+    golden += std::string("c_as_C->aa() = '") + c_as_C->aa() + "'\n";
+    return 0;// Set first breakpoint here.
     // then evaluate:
     // expression a_as_A->a()
     // expression a_as_A->b()
@@ -108,6 +108,4 @@
     // expression c_as_A->b()
     // expression c_as_A->c()
     // expression c_as_C->aa()
-    
-    return 0;
 }
Index: packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py
===================================================================
--- packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py
+++ packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py
@@ -58,11 +58,11 @@
         thread = lldbutil.get_stopped_thread(process, 
lldb.eStopReasonBreakpoint)
         self.assertTrue(thread.IsValid(), "There should be a thread stopped 
due to breakpoint condition")
 
-        # First, capture the golden output from the program itself from the
-        # series of printf statements.
-        stdout = process.GetSTDOUT(1024)
-        
-        self.assertIsNotNone(stdout, "Encountered an error reading the 
process's output")
+        # First, capture the golden output from the program itself.
+        golden = thread.GetFrameAtIndex(0).FindVariable("golden")
+        self.assertTrue(golden.IsValid(), "Encountered an error reading the 
process's golden variable")
+        golden_str = str(golden)
+        self.assertTrue("c_as_C" in golden_str)
 
         # This golden list contains a list of "my_expr = 'value' pairs 
extracted
         # from the golden output.
@@ -72,7 +72,7 @@
         #
         #     my_expr = 'value'
         #
-        for line in stdout.split(os.linesep):
+        for line in golden_str.split(os.linesep):
             match = self.pattern.search(line)
             if match:
                 my_expr, val = match.group(1), match.group(2)


Index: packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp
===================================================================
--- packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp
+++ packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp
@@ -1,5 +1,4 @@
-#include <stdio.h>
-#include <stdint.h>
+#include <string>
 
 class A
 {
@@ -84,18 +83,19 @@
     C *c_as_C = new C();
     A *c_as_A = c_as_C;
 
-    printf ("a_as_A->a() = '%s'\n", a_as_A->a());
-    printf ("a_as_A->b() = '%s'\n", a_as_A->b());
-    printf ("a_as_A->c() = '%s'\n", a_as_A->c());
-    printf ("b_as_A->a() = '%s'\n", b_as_A->a());
-    printf ("b_as_A->b() = '%s'\n", b_as_A->b());
-    printf ("b_as_A->c() = '%s'\n", b_as_A->c());
-    printf ("b_as_B->aa() = '%s'\n", b_as_B->aa());
-    printf ("c_as_A->a() = '%s'\n", c_as_A->a());
-    printf ("c_as_A->b() = '%s'\n", c_as_A->b());
-    printf ("c_as_A->c() = '%s'\n", c_as_A->c());
-    printf ("c_as_C->aa() = '%s'\n", c_as_C->aa());
-    puts("");// Set first breakpoint here.
+    std::string golden;
+    golden += std::string("a_as_A->a() = '") + a_as_A->a() + "'\n";
+    golden += std::string("a_as_A->b() = '") + a_as_A->b() + "'\n";
+    golden += std::string("a_as_A->c() = '") + a_as_A->c() + "'\n";
+    golden += std::string("b_as_A->a() = '") + b_as_A->a() + "'\n";
+    golden += std::string("b_as_A->b() = '") + b_as_A->b() + "'\n";
+    golden += std::string("b_as_A->c() = '") + b_as_A->c() + "'\n";
+    golden += std::string("b_as_B->aa() = '") + b_as_B->aa() + "'\n";
+    golden += std::string("c_as_A->a() = '") + c_as_A->a() + "'\n";
+    golden += std::string("c_as_A->b() = '") + c_as_A->b() + "'\n";
+    golden += std::string("c_as_A->c() = '") + c_as_A->c() + "'\n";
+    golden += std::string("c_as_C->aa() = '") + c_as_C->aa() + "'\n";
+    return 0;// Set first breakpoint here.
     // then evaluate:
     // expression a_as_A->a()
     // expression a_as_A->b()
@@ -108,6 +108,4 @@
     // expression c_as_A->b()
     // expression c_as_A->c()
     // expression c_as_C->aa()
-    
-    return 0;
 }
Index: packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py
===================================================================
--- packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py
+++ packages/Python/lldbsuite/test/lang/cpp/virtual/TestVirtual.py
@@ -58,11 +58,11 @@
         thread = lldbutil.get_stopped_thread(process, lldb.eStopReasonBreakpoint)
         self.assertTrue(thread.IsValid(), "There should be a thread stopped due to breakpoint condition")
 
-        # First, capture the golden output from the program itself from the
-        # series of printf statements.
-        stdout = process.GetSTDOUT(1024)
-        
-        self.assertIsNotNone(stdout, "Encountered an error reading the process's output")
+        # First, capture the golden output from the program itself.
+        golden = thread.GetFrameAtIndex(0).FindVariable("golden")
+        self.assertTrue(golden.IsValid(), "Encountered an error reading the process's golden variable")
+        golden_str = str(golden)
+        self.assertTrue("c_as_C" in golden_str)
 
         # This golden list contains a list of "my_expr = 'value' pairs extracted
         # from the golden output.
@@ -72,7 +72,7 @@
         #
         #     my_expr = 'value'
         #
-        for line in stdout.split(os.linesep):
+        for line in golden_str.split(os.linesep):
             match = self.pattern.search(line)
             if match:
                 my_expr, val = match.group(1), match.group(2)
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to