| Index: runtime/vm/service_test.cc
|
| diff --git a/runtime/vm/service_test.cc b/runtime/vm/service_test.cc
|
| index 6fdb671b5fe93a3ba3e86a78895c1f99041b49b2..385c05727ba04b7ed33c56afd396534fa8b6579f 100644
|
| --- a/runtime/vm/service_test.cc
|
| +++ b/runtime/vm/service_test.cc
|
| @@ -1300,6 +1300,9 @@ TEST_CASE(Service_Scripts) {
|
| Isolate* isolate = Isolate::Current();
|
| Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL);
|
| EXPECT_VALID(h_lib);
|
| + Library& lib = Library::Handle();
|
| + lib ^= Api::UnwrapHandle(h_lib);
|
| + EXPECT(!lib.IsNull());
|
|
|
| // Build a mock message handler and wrap it in a dart port.
|
| ServiceTestMessageHandler handler;
|
| @@ -1309,16 +1312,26 @@ TEST_CASE(Service_Scripts) {
|
| EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
|
|
|
| Array& service_msg = Array::Handle();
|
| - service_msg = Eval(h_lib, "[0, port, ['scripts', 'test-lib'], [], []]");
|
| + char buf[1024];
|
| + OS::SNPrint(buf, sizeof(buf),
|
| + "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib'], [], []]",
|
| + lib.index());
|
| +
|
| + service_msg = Eval(h_lib, buf);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| - EXPECT_STREQ(
|
| - "{\"type\":\"Script\",\"id\":\"scripts\\/test-lib\","
|
| - "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
|
| - "\"kind\":\"script\","
|
| - "\"source\":\"var port;\\n\\nmain() {\\n}\","
|
| - "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}",
|
| - handler.msg());
|
| + OS::SNPrint(buf, sizeof(buf),
|
| + "{\"type\":\"Script\","
|
| + "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
|
| + "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
|
| + "\"kind\":\"script\","
|
| + "\"owning_library\":{\"type\":\"@Library\","
|
| + "\"id\":\"libraries\\/%" Pd "\",\"user_name\":\"\",\"name\":\"\","
|
| + "\"url\":\"test-lib\"},"
|
| + "\"source\":\"var port;\\n\\nmain() {\\n}\","
|
| + "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}",
|
| + lib.index(), lib.index());
|
| + EXPECT_STREQ(buf, handler.msg());
|
| }
|
|
|
|
|
| @@ -1355,16 +1368,30 @@ TEST_CASE(Service_Coverage) {
|
| service_msg = Eval(h_lib, "[0, port, ['coverage'], [], []]");
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| - EXPECT_SUBSTRING(
|
| - "{\"source\":\"test-lib\",\"script\":{"
|
| - "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
|
| +
|
| + // Look up the service id for the library containg the test-lib script.
|
| + const GrowableObjectArray& libs =
|
| + GrowableObjectArray::Handle(isolate->object_store()->libraries());
|
| + intptr_t i;
|
| + for (i = 0; i < libs.Length(); i++) {
|
| + if (libs.At(i) == lib.raw()) {
|
| + break;
|
| + }
|
| + }
|
| + ASSERT(i != libs.Length());
|
| +
|
| + char buf[1024];
|
| + OS::SNPrint(buf, sizeof(buf),
|
| + "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
|
| + "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
|
| "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
|
| "\"kind\":\"script\"},\"hits\":"
|
| - "[5,1,6,1]}", handler.msg());
|
| + "[5,1,6,1]}", i);
|
| + EXPECT_SUBSTRING(buf, handler.msg());
|
| }
|
|
|
|
|
| -TEST_CASE(Service_ScriptsCoverage) {
|
| +TEST_CASE(Service_LibrariesScriptsCoverage) {
|
| const char* kScript =
|
| "var port;\n" // Set to our mock port by C++.
|
| "\n"
|
| @@ -1391,16 +1418,22 @@ TEST_CASE(Service_ScriptsCoverage) {
|
| EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
|
|
|
| Array& service_msg = Array::Handle();
|
| - service_msg = Eval(
|
| - h_lib, "[0, port, ['scripts', 'test-lib', 'coverage'], [], []]");
|
| + char buf[1024];
|
| + OS::SNPrint(buf, sizeof(buf),
|
| + "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib', 'coverage'], "
|
| + "[], []]",
|
| + lib.index());
|
| +
|
| + service_msg = Eval(h_lib, buf);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| - EXPECT_STREQ(
|
| + OS::SNPrint(buf, sizeof(buf),
|
| "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
|
| - "{\"source\":\"test-lib\",\"script\":{"
|
| - "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
|
| + "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
|
| + "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
|
| "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
|
| - "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", handler.msg());
|
| + "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", lib.index());
|
| + EXPECT_STREQ(buf, handler.msg());
|
| }
|
|
|
|
|
| @@ -1448,12 +1481,13 @@ TEST_CASE(Service_LibrariesCoverage) {
|
| service_msg = Eval(h_lib, buf);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| - EXPECT_STREQ(
|
| + OS::SNPrint(buf, sizeof(buf),
|
| "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
|
| - "{\"source\":\"test-lib\",\"script\":{"
|
| - "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
|
| + "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
|
| + "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
|
| "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
|
| - "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", handler.msg());
|
| + "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", lib.index());
|
| + EXPECT_STREQ(buf, handler.msg());
|
| }
|
|
|
|
|
| @@ -1510,12 +1544,13 @@ TEST_CASE(Service_ClassesCoverage) {
|
| service_msg = Eval(h_lib, buf);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| - EXPECT_STREQ(
|
| + OS::SNPrint(buf, sizeof(buf),
|
| "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
|
| - "{\"source\":\"test-lib\",\"script\":{"
|
| - "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
|
| + "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
|
| + "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
|
| "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
|
| - "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", handler.msg());
|
| + "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", lib.index());
|
| + EXPECT_STREQ(buf, handler.msg());
|
| }
|
|
|
|
|
| @@ -1583,12 +1618,13 @@ TEST_CASE(Service_ClassesFunctionsCoverage) {
|
| service_msg = Eval(h_lib, buf);
|
| Service::HandleIsolateMessage(isolate, service_msg);
|
| handler.HandleNextMessage();
|
| - EXPECT_STREQ(
|
| + OS::SNPrint(buf, sizeof(buf),
|
| "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
|
| - "{\"source\":\"test-lib\",\"script\":{"
|
| - "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
|
| + "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\","
|
| + "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\","
|
| "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
|
| - "\"kind\":\"script\"},\"hits\":[7,4,8,3]}]}", handler.msg());
|
| + "\"kind\":\"script\"},\"hits\":[7,4,8,3]}]}", lib.index());
|
| + EXPECT_STREQ(buf, handler.msg());
|
| }
|
|
|
| #endif
|
|
|