|  | // Copyright (c) 2021, 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:async'; | 
|  | import 'dart:io'; | 
|  |  | 
|  | import 'package:dds/dds.dart'; | 
|  | import 'package:test/test.dart'; | 
|  | import 'package:vm_service/vm_service.dart'; | 
|  | import 'package:vm_service/vm_service_io.dart'; | 
|  | import 'common/test_helper.dart'; | 
|  |  | 
|  | void main() { | 
|  | late Process process; | 
|  | DartDevelopmentService? dds; | 
|  |  | 
|  | setUp(() async { | 
|  | process = await spawnDartProcess( | 
|  | 'get_cached_cpu_samples_script.dart', | 
|  | disableServiceAuthCodes: true, | 
|  | ); | 
|  | }); | 
|  |  | 
|  | tearDown(() async { | 
|  | await dds?.shutdown(); | 
|  | process.kill(); | 
|  | }); | 
|  |  | 
|  | test( | 
|  | 'DDS returns local paths with a converter', | 
|  | () async { | 
|  | Uri serviceUri = remoteVmServiceUri; | 
|  | dds = await DartDevelopmentService.startDartDevelopmentService( | 
|  | remoteVmServiceUri, | 
|  | uriConverter: (uri) => uri == 'package:test/has_local.dart' | 
|  | ? '/home/has_local.dart' | 
|  | : null, | 
|  | ); | 
|  | serviceUri = dds!.wsUri!; | 
|  | expect(dds!.isRunning, true); | 
|  | final service = await vmServiceConnectUri(serviceUri.toString()); | 
|  |  | 
|  | IsolateRef isolate; | 
|  | while (true) { | 
|  | final vm = await service.getVM(); | 
|  | if (vm.isolates!.isNotEmpty) { | 
|  | isolate = vm.isolates!.first; | 
|  | try { | 
|  | isolate = await service.getIsolate(isolate.id!); | 
|  | if ((isolate as Isolate).runnable!) { | 
|  | break; | 
|  | } | 
|  | } on SentinelException { | 
|  | // ignore | 
|  | } | 
|  | } | 
|  | await Future.delayed(const Duration(seconds: 1)); | 
|  | } | 
|  | expect(isolate, isNotNull); | 
|  |  | 
|  | final unresolvedUris = <String>[ | 
|  | 'dart:io', // dart:io -> org-dartlang-sdk:///sdk/lib/io/io.dart | 
|  | 'package:test/has_local.dart', // package:test/test.dart -> file:///has_local.dart | 
|  | 'package:does_not_exist/does_not_exist.dart', // invalid URI -> null | 
|  | ]; | 
|  | var result = await service | 
|  | .lookupResolvedPackageUris(isolate.id!, unresolvedUris, local: true); | 
|  |  | 
|  | expect(result.uris?[0], 'org-dartlang-sdk:///sdk/lib/io/io.dart'); | 
|  | expect(result.uris?[1], 'file:///home/has_local.dart'); | 
|  | expect(result.uris?[2], null); | 
|  | }, | 
|  | timeout: Timeout.none, | 
|  | ); | 
|  | } |