blob: 0fa12b69716f6a73199e6ab07320450d1c566b86 [file] [log] [blame]
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// 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.
import 'dart:io';
import 'package:dds/dds.dart';
import 'package:test/test.dart';
import 'package:vm_service/vm_service_io.dart';
import 'common/test_helper.dart';
void main() {
group('DDS', () {
late Process process;
late DartDevelopmentService dds;
setUp(() async {
process =
await spawnDartProcess('external_compilation_service_script.dart');
});
tearDown(() async {
await dds.shutdown();
process.kill();
});
test('evaluate invokes client provided compileExpression RPC', () async {
dds = await DartDevelopmentService.startDartDevelopmentService(
remoteVmServiceUri,
);
expect(dds.isRunning, true);
final service = await vmServiceConnectUri(dds.wsUri.toString());
await service.registerService(
'compileExpression',
'Custom Expression Compilation',
);
bool invokedCompileExpression = false;
service.registerServiceCallback('compileExpression', (params) async {
invokedCompileExpression = true;
throw 'error';
});
final vm = await service.getVM();
final isolate = await service.getIsolate(vm.isolates!.first.id!);
try {
await service.evaluate(
isolate.id!, isolate.libraries!.first.id!, '1 + 1');
} catch (_) {
// ignore error
}
expect(invokedCompileExpression, true);
});
test('evaluateInFrame invokes client provided compileExpression RPC',
() async {
dds = await DartDevelopmentService.startDartDevelopmentService(
remoteVmServiceUri,
);
expect(dds.isRunning, true);
final service = await vmServiceConnectUri(dds.wsUri.toString());
await service.registerService(
'compileExpression',
'Custom Expression Compilation',
);
bool invokedCompileExpression = false;
service.registerServiceCallback('compileExpression', (params) async {
invokedCompileExpression = true;
throw 'error';
});
final vm = await service.getVM();
final isolate = await service.getIsolate(vm.isolates!.first.id!);
await service.resume(isolate.id!);
try {
await service.evaluateInFrame(isolate.id!, 0, '1 + 1');
} catch (e, st) {
print(e);
print(st);
// ignore error
}
expect(invokedCompileExpression, true);
});
});
}