| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/globals.h" | 5 #include "platform/globals.h" |
| 6 | 6 |
| 7 #include "include/dart_debugger_api.h" | 7 #include "include/dart_debugger_api.h" |
| 8 #include "vm/dart_api_impl.h" | 8 #include "vm/dart_api_impl.h" |
| 9 #include "vm/dart_entry.h" | 9 #include "vm/dart_entry.h" |
| 10 #include "vm/debugger.h" | 10 #include "vm/debugger.h" |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 vmlib.index()); | 285 vmlib.index()); |
| 286 Service::HandleIsolateMessage(isolate, service_msg); | 286 Service::HandleIsolateMessage(isolate, service_msg); |
| 287 handler.HandleNextMessage(); | 287 handler.HandleNextMessage(); |
| 288 ExpectSubstringF( | 288 ExpectSubstringF( |
| 289 handler.msg(), | 289 handler.msg(), |
| 290 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," | 290 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," |
| 291 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," | 291 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," |
| 292 "\"location\":{\"type\":\"Location\"," | 292 "\"location\":{\"type\":\"Location\"," |
| 293 "\"script\":{\"type\":\"@Script\"," | 293 "\"script\":{\"type\":\"@Script\"," |
| 294 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 294 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 295 "\"name\":\"test-lib\",\"user_name\":\"test-lib\",\"kind\":\"script\"}," | 295 "\"name\":\"test-lib\",\"kind\":\"script\"}," |
| 296 "\"tokenPos\":5}}", | 296 "\"tokenPos\":5}}", |
| 297 vmlib.index()); | 297 vmlib.index()); |
| 298 | 298 |
| 299 // Get the breakpoint list. | 299 // Get the breakpoint list. |
| 300 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints'], [], []]"); | 300 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints'], [], []]"); |
| 301 Service::HandleIsolateMessage(isolate, service_msg); | 301 Service::HandleIsolateMessage(isolate, service_msg); |
| 302 handler.HandleNextMessage(); | 302 handler.HandleNextMessage(); |
| 303 ExpectSubstringF( | 303 ExpectSubstringF( |
| 304 handler.msg(), | 304 handler.msg(), |
| 305 "{\"type\":\"BreakpointList\",\"id\":\"debug\\/breakpoints\"," | 305 "{\"type\":\"BreakpointList\",\"id\":\"debug\\/breakpoints\"," |
| 306 "\"breakpoints\":[" | 306 "\"breakpoints\":[" |
| 307 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," | 307 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," |
| 308 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," | 308 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," |
| 309 "\"location\":{\"type\":\"Location\"," | 309 "\"location\":{\"type\":\"Location\"," |
| 310 "\"script\":{\"type\":\"@Script\"," | 310 "\"script\":{\"type\":\"@Script\"," |
| 311 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 311 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 312 "\"name\":\"test-lib\",\"user_name\":\"test-lib\",\"kind\":\"script\"}," | 312 "\"name\":\"test-lib\",\"kind\":\"script\"}," |
| 313 "\"tokenPos\":5}}]}", | 313 "\"tokenPos\":5}}]}", |
| 314 vmlib.index()); | 314 vmlib.index()); |
| 315 | 315 |
| 316 // Lookup individual breakpoint. | 316 // Lookup individual breakpoint. |
| 317 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints', '1'], [], []]"); | 317 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints', '1'], [], []]"); |
| 318 Service::HandleIsolateMessage(isolate, service_msg); | 318 Service::HandleIsolateMessage(isolate, service_msg); |
| 319 handler.HandleNextMessage(); | 319 handler.HandleNextMessage(); |
| 320 ExpectSubstringF( | 320 ExpectSubstringF( |
| 321 handler.msg(), | 321 handler.msg(), |
| 322 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," | 322 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," |
| 323 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," | 323 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," |
| 324 "\"location\":{\"type\":\"Location\"," | 324 "\"location\":{\"type\":\"Location\"," |
| 325 "\"script\":{\"type\":\"@Script\"," | 325 "\"script\":{\"type\":\"@Script\"," |
| 326 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 326 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 327 "\"name\":\"test-lib\",\"user_name\":\"test-lib\",\"kind\":\"script\"}," | 327 "\"name\":\"test-lib\",\"kind\":\"script\"}," |
| 328 "\"tokenPos\":5}}", | 328 "\"tokenPos\":5}}", |
| 329 vmlib.index()); | 329 vmlib.index()); |
| 330 | 330 |
| 331 // Unrecognized breakpoint subcommand. | 331 // Unrecognized breakpoint subcommand. |
| 332 service_msg = | 332 service_msg = |
| 333 Eval(lib, "[0, port, ['debug', 'breakpoints', '1', 'green'], [], []]"); | 333 Eval(lib, "[0, port, ['debug', 'breakpoints', '1', 'green'], [], []]"); |
| 334 Service::HandleIsolateMessage(isolate, service_msg); | 334 Service::HandleIsolateMessage(isolate, service_msg); |
| 335 handler.HandleNextMessage(); | 335 handler.HandleNextMessage(); |
| 336 EXPECT_STREQ("{\"type\":\"Error\",\"id\":\"\"," | 336 EXPECT_STREQ("{\"type\":\"Error\",\"id\":\"\"," |
| 337 "\"message\":\"Unrecognized subcommand: green\"," | 337 "\"message\":\"Unrecognized subcommand: green\"," |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 vmlib.index()); | 461 vmlib.index()); |
| 462 Service::HandleIsolateMessage(isolate, service_msg); | 462 Service::HandleIsolateMessage(isolate, service_msg); |
| 463 handler.HandleNextMessage(); | 463 handler.HandleNextMessage(); |
| 464 ExpectSubstringF( | 464 ExpectSubstringF( |
| 465 handler.msg(), | 465 handler.msg(), |
| 466 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," | 466 "{\"type\":\"Breakpoint\",\"id\":\"debug\\/breakpoints\\/1\"," |
| 467 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," | 467 "\"breakpointNumber\":1,\"enabled\":true,\"resolved\":false," |
| 468 "\"location\":{\"type\":\"Location\"," | 468 "\"location\":{\"type\":\"Location\"," |
| 469 "\"script\":{\"type\":\"@Script\"," | 469 "\"script\":{\"type\":\"@Script\"," |
| 470 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 470 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 471 "\"name\":\"test-lib\",\"user_name\":\"test-lib\",\"kind\":\"script\"}," | 471 "\"name\":\"test-lib\",\"kind\":\"script\"}," |
| 472 "\"tokenPos\":11}}", | 472 "\"tokenPos\":11}}", |
| 473 vmlib.index()); | 473 vmlib.index()); |
| 474 | 474 |
| 475 pause_line_number = -1; | 475 pause_line_number = -1; |
| 476 Dart_SetPausedEventHandler(HandlePausedEvent); | 476 Dart_SetPausedEventHandler(HandlePausedEvent); |
| 477 | 477 |
| 478 // Run the program. | 478 // Run the program. |
| 479 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); | 479 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); |
| 480 EXPECT_VALID(result); | 480 EXPECT_VALID(result); |
| 481 | 481 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 Dart_Handle valid_id = Dart_NewInteger(arr_id); | 515 Dart_Handle valid_id = Dart_NewInteger(arr_id); |
| 516 EXPECT_VALID(valid_id); | 516 EXPECT_VALID(valid_id); |
| 517 EXPECT_VALID(Dart_SetField(lib, NewString("validId"), valid_id)); | 517 EXPECT_VALID(Dart_SetField(lib, NewString("validId"), valid_id)); |
| 518 | 518 |
| 519 Array& service_msg = Array::Handle(); | 519 Array& service_msg = Array::Handle(); |
| 520 | 520 |
| 521 // null | 521 // null |
| 522 service_msg = Eval(lib, "[0, port, ['objects', 'null'], [], []]"); | 522 service_msg = Eval(lib, "[0, port, ['objects', 'null'], [], []]"); |
| 523 Service::HandleIsolateMessage(isolate, service_msg); | 523 Service::HandleIsolateMessage(isolate, service_msg); |
| 524 handler.HandleNextMessage(); | 524 handler.HandleNextMessage(); |
| 525 handler.filterMsg("name"); | 525 handler.filterMsg("vmName"); |
| 526 EXPECT_STREQ( | 526 EXPECT_STREQ( |
| 527 "{\"type\":\"Null\",\"id\":\"objects\\/null\"," | 527 "{\"type\":\"Null\",\"id\":\"objects\\/null\"," |
| 528 "\"valueAsString\":\"null\"}", | 528 "\"valueAsString\":\"null\"}", |
| 529 handler.msg()); | 529 handler.msg()); |
| 530 | 530 |
| 531 // not initialized | 531 // not initialized |
| 532 service_msg = Eval(lib, "[0, port, ['objects', 'not-initialized'], [], []]"); | 532 service_msg = Eval(lib, "[0, port, ['objects', 'not-initialized'], [], []]"); |
| 533 Service::HandleIsolateMessage(isolate, service_msg); | 533 Service::HandleIsolateMessage(isolate, service_msg); |
| 534 handler.HandleNextMessage(); | 534 handler.HandleNextMessage(); |
| 535 handler.filterMsg("name"); | 535 handler.filterMsg("vmName"); |
| 536 EXPECT_STREQ( | 536 EXPECT_STREQ( |
| 537 "{\"type\":\"Null\",\"id\":\"objects\\/not-initialized\"," | 537 "{\"type\":\"Null\",\"id\":\"objects\\/not-initialized\"," |
| 538 "\"valueAsString\":\"<not initialized>\"}", | 538 "\"valueAsString\":\"<not initialized>\"}", |
| 539 handler.msg()); | 539 handler.msg()); |
| 540 | 540 |
| 541 // being initialized | 541 // being initialized |
| 542 service_msg = Eval(lib, | 542 service_msg = Eval(lib, |
| 543 "[0, port, ['objects', 'being-initialized'], [], []]"); | 543 "[0, port, ['objects', 'being-initialized'], [], []]"); |
| 544 Service::HandleIsolateMessage(isolate, service_msg); | 544 Service::HandleIsolateMessage(isolate, service_msg); |
| 545 handler.HandleNextMessage(); | 545 handler.HandleNextMessage(); |
| 546 handler.filterMsg("name"); | 546 handler.filterMsg("vmName"); |
| 547 EXPECT_STREQ( | 547 EXPECT_STREQ( |
| 548 "{\"type\":\"Null\",\"id\":\"objects\\/being-initialized\"," | 548 "{\"type\":\"Null\",\"id\":\"objects\\/being-initialized\"," |
| 549 "\"valueAsString\":\"<being initialized>\"}", | 549 "\"valueAsString\":\"<being initialized>\"}", |
| 550 handler.msg()); | 550 handler.msg()); |
| 551 | 551 |
| 552 // optimized out | 552 // optimized out |
| 553 service_msg = Eval(lib, "[0, port, ['objects', 'optimized-out'], [], []]"); | 553 service_msg = Eval(lib, "[0, port, ['objects', 'optimized-out'], [], []]"); |
| 554 Service::HandleIsolateMessage(isolate, service_msg); | 554 Service::HandleIsolateMessage(isolate, service_msg); |
| 555 handler.HandleNextMessage(); | 555 handler.HandleNextMessage(); |
| 556 handler.filterMsg("name"); | 556 handler.filterMsg("vmName"); |
| 557 EXPECT_STREQ( | 557 EXPECT_STREQ( |
| 558 "{\"type\":\"Null\",\"id\":\"objects\\/optimized-out\"," | 558 "{\"type\":\"Null\",\"id\":\"objects\\/optimized-out\"," |
| 559 "\"valueAsString\":\"<optimized out>\"}", | 559 "\"valueAsString\":\"<optimized out>\"}", |
| 560 handler.msg()); | 560 handler.msg()); |
| 561 | 561 |
| 562 // collected | 562 // collected |
| 563 service_msg = Eval(lib, "[0, port, ['objects', 'collected'], [], []]"); | 563 service_msg = Eval(lib, "[0, port, ['objects', 'collected'], [], []]"); |
| 564 Service::HandleIsolateMessage(isolate, service_msg); | 564 Service::HandleIsolateMessage(isolate, service_msg); |
| 565 handler.HandleNextMessage(); | 565 handler.HandleNextMessage(); |
| 566 handler.filterMsg("name"); | 566 handler.filterMsg("vmName"); |
| 567 EXPECT_STREQ( | 567 EXPECT_STREQ( |
| 568 "{\"type\":\"Null\",\"id\":\"objects\\/collected\"," | 568 "{\"type\":\"Null\",\"id\":\"objects\\/collected\"," |
| 569 "\"valueAsString\":\"<collected>\"}", | 569 "\"valueAsString\":\"<collected>\"}", |
| 570 handler.msg()); | 570 handler.msg()); |
| 571 | 571 |
| 572 // expired | 572 // expired |
| 573 service_msg = Eval(lib, "[0, port, ['objects', 'expired'], [], []]"); | 573 service_msg = Eval(lib, "[0, port, ['objects', 'expired'], [], []]"); |
| 574 Service::HandleIsolateMessage(isolate, service_msg); | 574 Service::HandleIsolateMessage(isolate, service_msg); |
| 575 handler.HandleNextMessage(); | 575 handler.HandleNextMessage(); |
| 576 handler.filterMsg("name"); | 576 handler.filterMsg("vmName"); |
| 577 EXPECT_STREQ( | 577 EXPECT_STREQ( |
| 578 "{\"type\":\"Null\",\"id\":\"objects\\/expired\"," | 578 "{\"type\":\"Null\",\"id\":\"objects\\/expired\"," |
| 579 "\"valueAsString\":\"<expired>\"}", | 579 "\"valueAsString\":\"<expired>\"}", |
| 580 handler.msg()); | 580 handler.msg()); |
| 581 | 581 |
| 582 // bool | 582 // bool |
| 583 service_msg = Eval(lib, "[0, port, ['objects', 'bool-true'], [], []]"); | 583 service_msg = Eval(lib, "[0, port, ['objects', 'bool-true'], [], []]"); |
| 584 Service::HandleIsolateMessage(isolate, service_msg); | 584 Service::HandleIsolateMessage(isolate, service_msg); |
| 585 handler.HandleNextMessage(); | 585 handler.HandleNextMessage(); |
| 586 handler.filterMsg("name"); | 586 handler.filterMsg("vmName"); |
| 587 EXPECT_STREQ( | 587 EXPECT_STREQ( |
| 588 "{\"type\":\"Bool\",\"id\":\"objects\\/bool-true\"," | 588 "{\"type\":\"Bool\",\"id\":\"objects\\/bool-true\"," |
| 589 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/46\"," | 589 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/46\"," |
| 590 "\"user_name\":\"bool\"},\"valueAsString\":\"true\"}", | 590 "\"name\":\"bool\"},\"valueAsString\":\"true\"}", |
| 591 handler.msg()); | 591 handler.msg()); |
| 592 | 592 |
| 593 // int | 593 // int |
| 594 service_msg = Eval(lib, "[0, port, ['objects', 'int-123'], [], []]"); | 594 service_msg = Eval(lib, "[0, port, ['objects', 'int-123'], [], []]"); |
| 595 Service::HandleIsolateMessage(isolate, service_msg); | 595 Service::HandleIsolateMessage(isolate, service_msg); |
| 596 handler.HandleNextMessage(); | 596 handler.HandleNextMessage(); |
| 597 handler.filterMsg("name"); | 597 handler.filterMsg("vmName"); |
| 598 EXPECT_STREQ( | 598 EXPECT_STREQ( |
| 599 "{\"type\":\"Smi\"," | 599 "{\"type\":\"Smi\"," |
| 600 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," | 600 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," |
| 601 "\"user_name\":\"_Smi\"}," | 601 "\"name\":\"_Smi\",}," |
| 602 "\"fields\":[]," | 602 "\"fields\":[]," |
| 603 "\"id\":\"objects\\/int-123\"," | 603 "\"id\":\"objects\\/int-123\"," |
| 604 "\"valueAsString\":\"123\"}", | 604 "\"valueAsString\":\"123\"}", |
| 605 handler.msg()); | 605 handler.msg()); |
| 606 | 606 |
| 607 // object id ring / valid | 607 // object id ring / valid |
| 608 service_msg = Eval(lib, "[0, port, ['objects', '$validId'], [], []]"); | 608 service_msg = Eval(lib, "[0, port, ['objects', '$validId'], [], []]"); |
| 609 Service::HandleIsolateMessage(isolate, service_msg); | 609 Service::HandleIsolateMessage(isolate, service_msg); |
| 610 handler.HandleNextMessage(); | 610 handler.HandleNextMessage(); |
| 611 handler.filterMsg("name"); | 611 handler.filterMsg("vmName"); |
| 612 handler.filterMsg("size"); | 612 handler.filterMsg("size"); |
| 613 handler.filterMsg("id"); | 613 handler.filterMsg("id"); |
| 614 EXPECT_STREQ( | 614 EXPECT_STREQ( |
| 615 "{\"type\":\"Array\"," | 615 "{\"type\":\"Array\"," |
| 616 "\"class\":{\"type\":\"@Class\",\"user_name\":\"_List\"}," | 616 "\"class\":{\"type\":\"@Class\",\"name\":\"_List\",}," |
| 617 "\"fields\":[]," | 617 "\"fields\":[]," |
| 618 "\"length\":1," | 618 "\"length\":1," |
| 619 "\"elements\":[{" | 619 "\"elements\":[{" |
| 620 "\"index\":0," | 620 "\"index\":0," |
| 621 "\"value\":{\"type\":\"@String\"," | 621 "\"value\":{\"type\":\"@String\"," |
| 622 "\"class\":{\"type\":\"@Class\",\"user_name\":\"_OneByteString\"}," | 622 "\"class\":{\"type\":\"@Class\",\"name\":\"_OneByteString\",}," |
| 623 "\"valueAsString\":\"\\\"value\\\"\"}}]}", | 623 "\"valueAsString\":\"\\\"value\\\"\"}}]}", |
| 624 handler.msg()); | 624 handler.msg()); |
| 625 | 625 |
| 626 // object id ring / invalid => expired | 626 // object id ring / invalid => expired |
| 627 service_msg = Eval(lib, "[0, port, ['objects', '99999999'], [], []]"); | 627 service_msg = Eval(lib, "[0, port, ['objects', '99999999'], [], []]"); |
| 628 Service::HandleIsolateMessage(isolate, service_msg); | 628 Service::HandleIsolateMessage(isolate, service_msg); |
| 629 handler.HandleNextMessage(); | 629 handler.HandleNextMessage(); |
| 630 handler.filterMsg("name"); | 630 handler.filterMsg("vmName"); |
| 631 EXPECT_STREQ( | 631 EXPECT_STREQ( |
| 632 "{\"type\":\"Null\",\"id\":\"objects\\/expired\"," | 632 "{\"type\":\"Null\",\"id\":\"objects\\/expired\"," |
| 633 "\"valueAsString\":\"<expired>\"}", | 633 "\"valueAsString\":\"<expired>\"}", |
| 634 handler.msg()); | 634 handler.msg()); |
| 635 | 635 |
| 636 // expired/eval => error | 636 // expired/eval => error |
| 637 service_msg = Eval(lib, "[0, port, ['objects', 'expired', 'eval'], [], []]"); | 637 service_msg = Eval(lib, "[0, port, ['objects', 'expired', 'eval'], [], []]"); |
| 638 Service::HandleIsolateMessage(isolate, service_msg); | 638 Service::HandleIsolateMessage(isolate, service_msg); |
| 639 handler.HandleNextMessage(); | 639 handler.HandleNextMessage(); |
| 640 handler.filterMsg("name"); | 640 handler.filterMsg("vmName"); |
| 641 EXPECT_STREQ( | 641 EXPECT_STREQ( |
| 642 "{\"type\":\"Error\",\"id\":\"\"," | 642 "{\"type\":\"Error\",\"id\":\"\"," |
| 643 "\"message\":\"expected at most 2 arguments but found 3\\n\"," | 643 "\"message\":\"expected at most 2 arguments but found 3\\n\"," |
| 644 "\"request\":{\"arguments\":[\"objects\",\"expired\",\"eval\"]," | 644 "\"request\":{\"arguments\":[\"objects\",\"expired\",\"eval\"]," |
| 645 "\"option_keys\":[],\"option_values\":[]}}", | 645 "\"option_keys\":[],\"option_values\":[]}}", |
| 646 handler.msg()); | 646 handler.msg()); |
| 647 | 647 |
| 648 // int/eval => good | 648 // int/eval => good |
| 649 service_msg = Eval(lib, | 649 service_msg = Eval(lib, |
| 650 "[0, port, ['objects', 'int-123', 'eval'], " | 650 "[0, port, ['objects', 'int-123', 'eval'], " |
| 651 "['expr'], ['this+99']]"); | 651 "['expr'], ['this+99']]"); |
| 652 Service::HandleIsolateMessage(isolate, service_msg); | 652 Service::HandleIsolateMessage(isolate, service_msg); |
| 653 handler.HandleNextMessage(); | 653 handler.HandleNextMessage(); |
| 654 handler.filterMsg("name"); | 654 handler.filterMsg("vmName"); |
| 655 EXPECT_STREQ( | 655 EXPECT_STREQ( |
| 656 "{\"type\":\"@Smi\"," | 656 "{\"type\":\"@Smi\"," |
| 657 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," | 657 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," |
| 658 "\"user_name\":\"_Smi\"}," | 658 "\"name\":\"_Smi\",}," |
| 659 "\"id\":\"objects\\/int-222\"," | 659 "\"id\":\"objects\\/int-222\"," |
| 660 "\"valueAsString\":\"222\"}", | 660 "\"valueAsString\":\"222\"}", |
| 661 handler.msg()); | 661 handler.msg()); |
| 662 | 662 |
| 663 // eval returning null works | 663 // eval returning null works |
| 664 service_msg = Eval(lib, | 664 service_msg = Eval(lib, |
| 665 "[0, port, ['objects', 'int-123', 'eval'], " | 665 "[0, port, ['objects', 'int-123', 'eval'], " |
| 666 "['expr'], ['null']]"); | 666 "['expr'], ['null']]"); |
| 667 Service::HandleIsolateMessage(isolate, service_msg); | 667 Service::HandleIsolateMessage(isolate, service_msg); |
| 668 handler.HandleNextMessage(); | 668 handler.HandleNextMessage(); |
| 669 handler.filterMsg("name"); | 669 handler.filterMsg("vmName"); |
| 670 EXPECT_STREQ( | 670 EXPECT_STREQ( |
| 671 "{\"type\":\"@Null\",\"id\":\"objects\\/null\"," | 671 "{\"type\":\"@Null\",\"id\":\"objects\\/null\"," |
| 672 "\"valueAsString\":\"null\"}", | 672 "\"valueAsString\":\"null\"}", |
| 673 handler.msg()); | 673 handler.msg()); |
| 674 | 674 |
| 675 // object id ring / invalid => expired | 675 // object id ring / invalid => expired |
| 676 service_msg = Eval(lib, "[0, port, ['objects', '99999999', 'eval'], " | 676 service_msg = Eval(lib, "[0, port, ['objects', '99999999', 'eval'], " |
| 677 "['expr'], ['this']]"); | 677 "['expr'], ['this']]"); |
| 678 Service::HandleIsolateMessage(isolate, service_msg); | 678 Service::HandleIsolateMessage(isolate, service_msg); |
| 679 handler.HandleNextMessage(); | 679 handler.HandleNextMessage(); |
| 680 handler.filterMsg("name"); | 680 handler.filterMsg("vmName"); |
| 681 EXPECT_STREQ( | 681 EXPECT_STREQ( |
| 682 "{\"type\":\"Error\",\"id\":\"\",\"kind\":\"EvalExpired\"," | 682 "{\"type\":\"Error\",\"id\":\"\",\"kind\":\"EvalExpired\"," |
| 683 "\"message\":\"attempt to evaluate against expired object\\n\"," | 683 "\"message\":\"attempt to evaluate against expired object\\n\"," |
| 684 "\"request\":{\"arguments\":[\"objects\",\"99999999\",\"eval\"]," | 684 "\"request\":{\"arguments\":[\"objects\",\"99999999\",\"eval\"]," |
| 685 "\"option_keys\":[\"expr\"],\"option_values\":[\"this\"]}}", | 685 "\"option_keys\":[\"expr\"],\"option_values\":[\"this\"]}}", |
| 686 handler.msg()); | 686 handler.msg()); |
| 687 | 687 |
| 688 // Extra arg to eval. | 688 // Extra arg to eval. |
| 689 service_msg = Eval(lib, | 689 service_msg = Eval(lib, |
| 690 "[0, port, ['objects', 'int-123', 'eval', 'foo'], " | 690 "[0, port, ['objects', 'int-123', 'eval', 'foo'], " |
| 691 "['expr'], ['this+99']]"); | 691 "['expr'], ['this+99']]"); |
| 692 Service::HandleIsolateMessage(isolate, service_msg); | 692 Service::HandleIsolateMessage(isolate, service_msg); |
| 693 handler.HandleNextMessage(); | 693 handler.HandleNextMessage(); |
| 694 handler.filterMsg("name"); | 694 handler.filterMsg("vmName"); |
| 695 EXPECT_STREQ( | 695 EXPECT_STREQ( |
| 696 "{\"type\":\"Error\",\"id\":\"\"," | 696 "{\"type\":\"Error\",\"id\":\"\"," |
| 697 "\"message\":\"expected at most 3 arguments but found 4\\n\"," | 697 "\"message\":\"expected at most 3 arguments but found 4\\n\"," |
| 698 "\"request\":{\"arguments\":[\"objects\",\"int-123\",\"eval\",\"foo\"]," | 698 "\"request\":{\"arguments\":[\"objects\",\"int-123\",\"eval\",\"foo\"]," |
| 699 "\"option_keys\":[\"expr\"],\"option_values\":[\"this+99\"]}}", | 699 "\"option_keys\":[\"expr\"],\"option_values\":[\"this+99\"]}}", |
| 700 handler.msg()); | 700 handler.msg()); |
| 701 | 701 |
| 702 // Retained by single instance. | 702 // Retained by single instance. |
| 703 service_msg = Eval(lib, | 703 service_msg = Eval(lib, |
| 704 "[0, port, ['objects', '$validId', 'retained'], [], []]"); | 704 "[0, port, ['objects', '$validId', 'retained'], [], []]"); |
| 705 Service::HandleIsolateMessage(isolate, service_msg); | 705 Service::HandleIsolateMessage(isolate, service_msg); |
| 706 handler.HandleNextMessage(); | 706 handler.HandleNextMessage(); |
| 707 handler.filterMsg("name"); | 707 handler.filterMsg("vmName"); |
| 708 ExpectSubstringF(handler.msg(), | 708 ExpectSubstringF(handler.msg(), |
| 709 "\"id\":\"objects\\/int-%" Pd "\"", | 709 "\"id\":\"objects\\/int-%" Pd "\"", |
| 710 arr.raw()->Size() + arr.At(0)->Size()); | 710 arr.raw()->Size() + arr.At(0)->Size()); |
| 711 | 711 |
| 712 // Retaining path to 'arr', limit 1. | 712 // Retaining path to 'arr', limit 1. |
| 713 service_msg = Eval( | 713 service_msg = Eval( |
| 714 lib, | 714 lib, |
| 715 "[0, port, ['objects', '$validId', 'retaining_path'], ['limit'], ['1']]"); | 715 "[0, port, ['objects', '$validId', 'retaining_path'], ['limit'], ['1']]"); |
| 716 Service::HandleIsolateMessage(isolate, service_msg); | 716 Service::HandleIsolateMessage(isolate, service_msg); |
| 717 handler.HandleNextMessage(); | 717 handler.HandleNextMessage(); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg()); | 890 EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg()); |
| 891 EXPECT_SUBSTRING("\"url\":\"test-lib\"", handler.msg()); | 891 EXPECT_SUBSTRING("\"url\":\"test-lib\"", handler.msg()); |
| 892 | 892 |
| 893 // Evaluate an expression from a library. | 893 // Evaluate an expression from a library. |
| 894 service_msg = EvalF(lib, | 894 service_msg = EvalF(lib, |
| 895 "[0, port, ['libraries', '%" Pd "', 'eval'], " | 895 "[0, port, ['libraries', '%" Pd "', 'eval'], " |
| 896 "['expr'], ['libVar - 1']]", | 896 "['expr'], ['libVar - 1']]", |
| 897 vmlib.index()); | 897 vmlib.index()); |
| 898 Service::HandleIsolateMessage(isolate, service_msg); | 898 Service::HandleIsolateMessage(isolate, service_msg); |
| 899 handler.HandleNextMessage(); | 899 handler.HandleNextMessage(); |
| 900 handler.filterMsg("name"); | 900 handler.filterMsg("vmName"); |
| 901 EXPECT_STREQ( | 901 EXPECT_STREQ( |
| 902 "{\"type\":\"@Smi\"," | 902 "{\"type\":\"@Smi\"," |
| 903 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," | 903 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," |
| 904 "\"user_name\":\"_Smi\"},\"id\":\"objects\\/int-54320\"," | 904 "\"name\":\"_Smi\",},\"id\":\"objects\\/int-54320\"," |
| 905 "\"valueAsString\":\"54320\"}", | 905 "\"valueAsString\":\"54320\"}", |
| 906 handler.msg()); | 906 handler.msg()); |
| 907 } | 907 } |
| 908 | 908 |
| 909 | 909 |
| 910 TEST_CASE(Service_Classes) { | 910 TEST_CASE(Service_Classes) { |
| 911 const char* kScript = | 911 const char* kScript = |
| 912 "var port;\n" // Set to our mock port by C++. | 912 "var port;\n" // Set to our mock port by C++. |
| 913 "\n" | 913 "\n" |
| 914 "class A {\n" | 914 "class A {\n" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 969 ExpectSubstringF(handler.msg(), "\"allocationStats\":"); | 969 ExpectSubstringF(handler.msg(), "\"allocationStats\":"); |
| 970 ExpectSubstringF(handler.msg(), "\"tokenPos\":"); | 970 ExpectSubstringF(handler.msg(), "\"tokenPos\":"); |
| 971 ExpectSubstringF(handler.msg(), "\"endTokenPos\":"); | 971 ExpectSubstringF(handler.msg(), "\"endTokenPos\":"); |
| 972 | 972 |
| 973 // Evaluate an expression from class A. | 973 // Evaluate an expression from class A. |
| 974 service_msg = EvalF(lib, | 974 service_msg = EvalF(lib, |
| 975 "[0, port, ['classes', '%" Pd "', 'eval'], " | 975 "[0, port, ['classes', '%" Pd "', 'eval'], " |
| 976 "['expr'], ['cobra + 100000']]", cid); | 976 "['expr'], ['cobra + 100000']]", cid); |
| 977 Service::HandleIsolateMessage(isolate, service_msg); | 977 Service::HandleIsolateMessage(isolate, service_msg); |
| 978 handler.HandleNextMessage(); | 978 handler.HandleNextMessage(); |
| 979 handler.filterMsg("name"); | 979 handler.filterMsg("vmName"); |
| 980 EXPECT_STREQ( | 980 EXPECT_STREQ( |
| 981 "{\"type\":\"@Smi\"," | 981 "{\"type\":\"@Smi\"," |
| 982 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," | 982 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," |
| 983 "\"user_name\":\"_Smi\"}," | 983 "\"name\":\"_Smi\",}," |
| 984 "\"id\":\"objects\\/int-111235\"," | 984 "\"id\":\"objects\\/int-111235\"," |
| 985 "\"valueAsString\":\"111235\"}", | 985 "\"valueAsString\":\"111235\"}", |
| 986 handler.msg()); | 986 handler.msg()); |
| 987 | 987 |
| 988 // Request function 'b' from class A. | 988 // Request function 'b' from class A. |
| 989 service_msg = EvalF(lib, | 989 service_msg = EvalF(lib, |
| 990 "[0, port, ['classes', '%" Pd "', 'functions', 'b']," | 990 "[0, port, ['classes', '%" Pd "', 'functions', 'b']," |
| 991 "[], []]", cid); | 991 "[], []]", cid); |
| 992 Service::HandleIsolateMessage(isolate, service_msg); | 992 Service::HandleIsolateMessage(isolate, service_msg); |
| 993 handler.HandleNextMessage(); | 993 handler.HandleNextMessage(); |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1444 OS::SNPrint(buf, sizeof(buf), | 1444 OS::SNPrint(buf, sizeof(buf), |
| 1445 "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib'], [], []]", | 1445 "[0, port, ['libraries', '%" Pd "', 'scripts', 'test-lib'], [], []]", |
| 1446 vmlib.index()); | 1446 vmlib.index()); |
| 1447 | 1447 |
| 1448 service_msg = Eval(lib, buf); | 1448 service_msg = Eval(lib, buf); |
| 1449 Service::HandleIsolateMessage(isolate, service_msg); | 1449 Service::HandleIsolateMessage(isolate, service_msg); |
| 1450 handler.HandleNextMessage(); | 1450 handler.HandleNextMessage(); |
| 1451 OS::SNPrint(buf, sizeof(buf), | 1451 OS::SNPrint(buf, sizeof(buf), |
| 1452 "{\"type\":\"Script\"," | 1452 "{\"type\":\"Script\"," |
| 1453 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 1453 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 1454 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," | 1454 "\"name\":\"test-lib\"," |
| 1455 "\"kind\":\"script\"," | 1455 "\"kind\":\"script\"," |
| 1456 "\"owning_library\":{\"type\":\"@Library\"," | 1456 "\"owning_library\":{\"type\":\"@Library\"," |
| 1457 "\"id\":\"libraries\\/%" Pd "\",\"user_name\":\"\",\"name\":\"\"," | 1457 "\"id\":\"libraries\\/%" Pd "\",\"name\":\"\"," |
| 1458 "\"url\":\"test-lib\"}," | 1458 "\"url\":\"test-lib\"}," |
| 1459 "\"source\":\"var port;\\n\\nmain() {\\n}\"," | 1459 "\"source\":\"var port;\\n\\nmain() {\\n}\"," |
| 1460 "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}", | 1460 "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}", |
| 1461 vmlib.index(), vmlib.index()); | 1461 vmlib.index(), vmlib.index()); |
| 1462 EXPECT_STREQ(buf, handler.msg()); | 1462 EXPECT_STREQ(buf, handler.msg()); |
| 1463 } | 1463 } |
| 1464 | 1464 |
| 1465 | 1465 |
| 1466 // TODO(zra): Remove when tests are ready to enable. | 1466 // TODO(zra): Remove when tests are ready to enable. |
| 1467 #if !defined(TARGET_ARCH_ARM64) | 1467 #if !defined(TARGET_ARCH_ARM64) |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1494 | 1494 |
| 1495 Array& service_msg = Array::Handle(); | 1495 Array& service_msg = Array::Handle(); |
| 1496 service_msg = Eval(lib, "[0, port, ['coverage'], [], []]"); | 1496 service_msg = Eval(lib, "[0, port, ['coverage'], [], []]"); |
| 1497 Service::HandleIsolateMessage(isolate, service_msg); | 1497 Service::HandleIsolateMessage(isolate, service_msg); |
| 1498 handler.HandleNextMessage(); | 1498 handler.HandleNextMessage(); |
| 1499 | 1499 |
| 1500 char buf[1024]; | 1500 char buf[1024]; |
| 1501 OS::SNPrint(buf, sizeof(buf), | 1501 OS::SNPrint(buf, sizeof(buf), |
| 1502 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," | 1502 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," |
| 1503 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 1503 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 1504 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," | 1504 "\"name\":\"test-lib\"," |
| 1505 "\"kind\":\"script\"},\"hits\":" | 1505 "\"kind\":\"script\"},\"hits\":" |
| 1506 "[5,1,6,1]}", | 1506 "[5,1,6,1]}", |
| 1507 vmlib.index()); | 1507 vmlib.index()); |
| 1508 EXPECT_SUBSTRING(buf, handler.msg()); | 1508 EXPECT_SUBSTRING(buf, handler.msg()); |
| 1509 } | 1509 } |
| 1510 | 1510 |
| 1511 | 1511 |
| 1512 TEST_CASE(Service_LibrariesScriptsCoverage) { | 1512 TEST_CASE(Service_LibrariesScriptsCoverage) { |
| 1513 const char* kScript = | 1513 const char* kScript = |
| 1514 "var port;\n" // Set to our mock port by C++. | 1514 "var port;\n" // Set to our mock port by C++. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1542 "[], []]", | 1542 "[], []]", |
| 1543 vmlib.index()); | 1543 vmlib.index()); |
| 1544 | 1544 |
| 1545 service_msg = Eval(lib, buf); | 1545 service_msg = Eval(lib, buf); |
| 1546 Service::HandleIsolateMessage(isolate, service_msg); | 1546 Service::HandleIsolateMessage(isolate, service_msg); |
| 1547 handler.HandleNextMessage(); | 1547 handler.HandleNextMessage(); |
| 1548 OS::SNPrint(buf, sizeof(buf), | 1548 OS::SNPrint(buf, sizeof(buf), |
| 1549 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" | 1549 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" |
| 1550 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," | 1550 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," |
| 1551 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 1551 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 1552 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," | 1552 "\"name\":\"test-lib\"," |
| 1553 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", vmlib.index()); | 1553 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", vmlib.index()); |
| 1554 EXPECT_STREQ(buf, handler.msg()); | 1554 EXPECT_STREQ(buf, handler.msg()); |
| 1555 } | 1555 } |
| 1556 | 1556 |
| 1557 | 1557 |
| 1558 TEST_CASE(Service_LibrariesCoverage) { | 1558 TEST_CASE(Service_LibrariesCoverage) { |
| 1559 const char* kScript = | 1559 const char* kScript = |
| 1560 "var port;\n" // Set to our mock port by C++. | 1560 "var port;\n" // Set to our mock port by C++. |
| 1561 "\n" | 1561 "\n" |
| 1562 "var x = 7;\n" | 1562 "var x = 7;\n" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1587 vmlib.index()); | 1587 vmlib.index()); |
| 1588 | 1588 |
| 1589 Array& service_msg = Array::Handle(); | 1589 Array& service_msg = Array::Handle(); |
| 1590 service_msg = Eval(lib, buf); | 1590 service_msg = Eval(lib, buf); |
| 1591 Service::HandleIsolateMessage(isolate, service_msg); | 1591 Service::HandleIsolateMessage(isolate, service_msg); |
| 1592 handler.HandleNextMessage(); | 1592 handler.HandleNextMessage(); |
| 1593 OS::SNPrint(buf, sizeof(buf), | 1593 OS::SNPrint(buf, sizeof(buf), |
| 1594 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" | 1594 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" |
| 1595 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," | 1595 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," |
| 1596 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 1596 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 1597 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," | 1597 "\"name\":\"test-lib\"," |
| 1598 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", | 1598 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", |
| 1599 vmlib.index()); | 1599 vmlib.index()); |
| 1600 EXPECT_STREQ(buf, handler.msg()); | 1600 EXPECT_STREQ(buf, handler.msg()); |
| 1601 } | 1601 } |
| 1602 | 1602 |
| 1603 | 1603 |
| 1604 TEST_CASE(Service_ClassesCoverage) { | 1604 TEST_CASE(Service_ClassesCoverage) { |
| 1605 const char* kScript = | 1605 const char* kScript = |
| 1606 "var port;\n" // Set to our mock port by C++. | 1606 "var port;\n" // Set to our mock port by C++. |
| 1607 "\n" | 1607 "\n" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1651 "[0, port, ['classes', '%" Pd "', 'coverage'], [], []]", i); | 1651 "[0, port, ['classes', '%" Pd "', 'coverage'], [], []]", i); |
| 1652 | 1652 |
| 1653 Array& service_msg = Array::Handle(); | 1653 Array& service_msg = Array::Handle(); |
| 1654 service_msg = Eval(lib, buf); | 1654 service_msg = Eval(lib, buf); |
| 1655 Service::HandleIsolateMessage(isolate, service_msg); | 1655 Service::HandleIsolateMessage(isolate, service_msg); |
| 1656 handler.HandleNextMessage(); | 1656 handler.HandleNextMessage(); |
| 1657 OS::SNPrint(buf, sizeof(buf), | 1657 OS::SNPrint(buf, sizeof(buf), |
| 1658 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" | 1658 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" |
| 1659 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," | 1659 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," |
| 1660 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 1660 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 1661 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," | 1661 "\"name\":\"test-lib\"," |
| 1662 "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", | 1662 "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", |
| 1663 vmlib.index()); | 1663 vmlib.index()); |
| 1664 EXPECT_STREQ(buf, handler.msg()); | 1664 EXPECT_STREQ(buf, handler.msg()); |
| 1665 } | 1665 } |
| 1666 | 1666 |
| 1667 | 1667 |
| 1668 TEST_CASE(Service_ClassesFunctionsCoverage) { | 1668 TEST_CASE(Service_ClassesFunctionsCoverage) { |
| 1669 const char* kScript = | 1669 const char* kScript = |
| 1670 "var port;\n" // Set to our mock port by C++. | 1670 "var port;\n" // Set to our mock port by C++. |
| 1671 "\n" | 1671 "\n" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1723 "'bar', 'coverage'], [], []]", i); | 1723 "'bar', 'coverage'], [], []]", i); |
| 1724 | 1724 |
| 1725 Array& service_msg = Array::Handle(); | 1725 Array& service_msg = Array::Handle(); |
| 1726 service_msg = Eval(lib, buf); | 1726 service_msg = Eval(lib, buf); |
| 1727 Service::HandleIsolateMessage(isolate, service_msg); | 1727 Service::HandleIsolateMessage(isolate, service_msg); |
| 1728 handler.HandleNextMessage(); | 1728 handler.HandleNextMessage(); |
| 1729 OS::SNPrint(buf, sizeof(buf), | 1729 OS::SNPrint(buf, sizeof(buf), |
| 1730 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" | 1730 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" |
| 1731 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," | 1731 "{\"source\":\"test-lib\",\"script\":{\"type\":\"@Script\"," |
| 1732 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," | 1732 "\"id\":\"libraries\\/%" Pd "\\/scripts\\/test-lib\"," |
| 1733 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," | 1733 "\"name\":\"test-lib\"," |
| 1734 "\"kind\":\"script\"},\"hits\":[7,4,8,3]}]}", vmlib.index()); | 1734 "\"kind\":\"script\"},\"hits\":[7,4,8,3]}]}", vmlib.index()); |
| 1735 EXPECT_STREQ(buf, handler.msg()); | 1735 EXPECT_STREQ(buf, handler.msg()); |
| 1736 } | 1736 } |
| 1737 | 1737 |
| 1738 #endif | 1738 #endif |
| 1739 | 1739 |
| 1740 | 1740 |
| 1741 TEST_CASE(Service_AllocationProfile) { | 1741 TEST_CASE(Service_AllocationProfile) { |
| 1742 const char* kScript = | 1742 const char* kScript = |
| 1743 "var port;\n" // Set to our mock port by C++. | 1743 "var port;\n" // Set to our mock port by C++. |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2024 service_msg = Eval(lib, "[0, port, ['profile'], ['tags'], ['hidden']]"); | 2024 service_msg = Eval(lib, "[0, port, ['profile'], ['tags'], ['hidden']]"); |
| 2025 Service::HandleIsolateMessage(isolate, service_msg); | 2025 Service::HandleIsolateMessage(isolate, service_msg); |
| 2026 handler.HandleNextMessage(); | 2026 handler.HandleNextMessage(); |
| 2027 // Expect error. | 2027 // Expect error. |
| 2028 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); | 2028 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); |
| 2029 } | 2029 } |
| 2030 | 2030 |
| 2031 #endif // !defined(TARGET_ARCH_ARM64) | 2031 #endif // !defined(TARGET_ARCH_ARM64) |
| 2032 | 2032 |
| 2033 } // namespace dart | 2033 } // namespace dart |
| OLD | NEW |