| Index: test/isolate_test.dart
|
| diff --git a/test/isolate_test.dart b/test/isolate_test.dart
|
| index b08bdd9158db4d4326739dbc8fc1e97da022cfe2..9f3beef9f38210d5969e5b04a23ff89ef4a3ebcf 100644
|
| --- a/test/isolate_test.dart
|
| +++ b/test/isolate_test.dart
|
| @@ -165,6 +165,19 @@ void main() {
|
| expect(other.onExit, completes);
|
| });
|
| });
|
| +
|
| + test("onServiceExtensionAdded fires when an extension is added", () async {
|
| + client = await runAndConnect(main: """
|
| + registerExtension('ext.test', (_, __) {});
|
| + """, flags: ["--pause-isolates-on-start"]);
|
| +
|
| + var isolate = await (await client.getVM()).isolates.first.loadRunnable();
|
| + await isolate.waitUntilPaused();
|
| + await isolate.resume();
|
| +
|
| + VMServiceExtension ext = await isolate.onServiceExtensionAdded.first;
|
| + expect(ext.method, 'ext.test');
|
| + });
|
| });
|
|
|
| group("loadRunnable", () {
|
| @@ -375,6 +388,44 @@ void main() {
|
| expect(breakpoint.number, equals(1));
|
| });
|
| });
|
| +
|
| + group("invokeExtension", () {
|
| + test("enforces ext. prefix", () async {
|
| + var client = await runAndConnect();
|
| + var isolate = await (await client.getVM()).isolates.first.loadRunnable();
|
| + expect(() => isolate.invokeExtension('noprefix'), throwsArgumentError);
|
| + });
|
| +
|
| + test("forwards to scope", () async {
|
| + var client = await runAndConnect(main: r"""
|
| + registerExtension('ext.ping', (_, __) async {
|
| + return new ServiceExtensionResponse.result('{"type": "pong"}');
|
| + });
|
| + """);
|
| +
|
| + var isolate = await (await client.getVM()).isolates.first.loadRunnable();
|
| + var response = await isolate.invokeExtension('ext.ping');
|
| + expect(response, {'type': 'pong'});
|
| + });
|
| +
|
| + test("passes parameters", () async {
|
| + var client = await runAndConnect(main: r"""
|
| + registerExtension('ext.params', (_, params) async {
|
| + return new ServiceExtensionResponse.result('''{
|
| + "foo": "${params['foo']}"
|
| + }''');
|
| + });
|
| + """);
|
| +
|
| + var isolate = await (await client.getVM()).isolates.first.loadRunnable();
|
| + var response = await isolate.invokeExtension('ext.params', {
|
| + 'foo': 'bar',
|
| + });
|
| + expect(response, {
|
| + 'foo': 'bar',
|
| + });
|
| + });
|
| + });
|
| }
|
|
|
| /// Starts a client with two unpaused empty isolates.
|
|
|