Index: runtime/vm/debugger_test.cc |
diff --git a/runtime/vm/debugger_test.cc b/runtime/vm/debugger_test.cc |
index d9c508b23bf3dcb8dae7be5a2db9530fc10bb300..e53f291120dbf6522dfc1c22768d03cd5084418b 100644 |
--- a/runtime/vm/debugger_test.cc |
+++ b/runtime/vm/debugger_test.cc |
@@ -2,11 +2,34 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
+#include "vm/dart_api_impl.h" |
#include "vm/debugger.h" |
#include "vm/unit_test.h" |
namespace dart { |
+// Search for the formatted string in buffer. |
+// |
+// TODO(turnidge): This function obscures the line number of failing |
+// EXPECTs. Rework this. |
+static void ExpectSubstringF(const char* buff, const char* fmt, ...) { |
+ Isolate* isolate = Isolate::Current(); |
+ |
+ va_list args; |
+ va_start(args, fmt); |
+ intptr_t len = OS::VSNPrint(NULL, 0, fmt, args); |
+ va_end(args); |
+ |
+ char* buffer = isolate->current_zone()->Alloc<char>(len + 1); |
+ va_list args2; |
+ va_start(args2, fmt); |
+ OS::VSNPrint(buffer, (len + 1), fmt, args2); |
+ va_end(args2); |
+ |
+ EXPECT_SUBSTRING(buffer, buff); |
+} |
+ |
+ |
TEST_CASE(Debugger_PrintBreakpointsToJSONArray) { |
const char* kScriptChars = |
"main() {\n" |
@@ -17,6 +40,9 @@ TEST_CASE(Debugger_PrintBreakpointsToJSONArray) { |
"}\n"; |
Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
EXPECT_VALID(lib); |
+ Library& vmlib = Library::Handle(); |
+ vmlib ^= Api::UnwrapHandle(lib); |
+ EXPECT(!vmlib.IsNull()); |
Isolate* isolate = Isolate::Current(); |
Debugger* debugger = isolate->debugger(); |
@@ -41,16 +67,23 @@ TEST_CASE(Debugger_PrintBreakpointsToJSONArray) { |
JSONArray jsarr(&js); |
debugger->PrintBreakpointsToJSONArray(&jsarr); |
} |
- EXPECT_STREQ( |
- "[{\"type\":\"Breakpoint\",\"id\":2," |
- "\"enabled\":true,\"resolved\":false," |
- "\"location\":{\"type\":\"Location\"," |
- "\"script\":\"test-lib\",\"tokenPos\":14}}," |
- "{\"type\":\"Breakpoint\",\"id\":1," |
- "\"enabled\":true,\"resolved\":false," |
- "\"location\":{\"type\":\"Location\"," |
- "\"script\":\"test-lib\",\"tokenPos\":5}}]", |
- js.ToCString()); |
+ ExpectSubstringF( |
+ js.ToCString(), |
+ "[{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/2\"," |
+ "\"breakpointNumber\":2,\"enabled\":true,\"resolved\":false," |
+ "\"location\":{\"type\":\"Location\"," |
+ "\"script\":{\"type\":\"@Script\"," |
+ "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
+ "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," |
+ "\"kind\":\"script\"},\"tokenPos\":14}}," |
+ "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," |
+ "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," |
+ "\"location\":{\"type\":\"Location\"," |
+ "\"script\":{\"type\":\"@Script\"," |
+ "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
+ "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," |
+ "\"kind\":\"script\"},\"tokenPos\":5}}]", |
+ vmlib.index(), vmlib.index()); |
} |
} |