diff --git a/frontend_server_common/lib/src/asset_server.dart b/frontend_server_common/lib/src/asset_server.dart index 6e56e9478..2731d1d30 100644 --- a/frontend_server_common/lib/src/asset_server.dart +++ b/frontend_server_common/lib/src/asset_server.dart @@ -14,8 +14,7 @@ import 'package:file/file.dart'; import 'package:logging/logging.dart'; import 'package:mime/mime.dart' as mime; import 'package:shelf/shelf.dart' as shelf; - -import 'utilities.dart'; +import 'package:test_common/test_sdk_layout.dart'; class TestAssetServer implements AssetReader { late final String basePath; @@ -34,6 +33,7 @@ class TestAssetServer implements AssetReader { late String _mergedMetadata; final PackageUriMapper _packageUriMapper; final InternetAddress internetAddress; + final TestSdkLayout _sdkLayout; TestAssetServer( this.index, @@ -41,6 +41,7 @@ class TestAssetServer implements AssetReader { this._packageUriMapper, this.internetAddress, this._fileSystem, + this._sdkLayout, ) { basePath = _parseBasePathFromIndexHtml(index); } @@ -59,6 +60,7 @@ class TestAssetServer implements AssetReader { /// Unhandled exceptions will throw a exception with the error and stack /// trace. static Future start( + String sdkDirectory, FileSystem fileSystem, String index, String hostname, @@ -66,10 +68,11 @@ class TestAssetServer implements AssetReader { UrlEncoder? urlTunneler, PackageUriMapper packageUriMapper, ) async { - var address = (await InternetAddress.lookup(hostname)).first; - var httpServer = await HttpServer.bind(address, port); - var server = TestAssetServer( - index, httpServer, packageUriMapper, address, fileSystem); + final address = (await InternetAddress.lookup(hostname)).first; + final httpServer = await HttpServer.bind(address, port); + final sdkLayout = TestSdkLayout.createDefault(sdkDirectory); + final server = TestAssetServer( + index, httpServer, packageUriMapper, address, fileSystem, sdkLayout); return server; } @@ -257,7 +260,7 @@ class TestAssetServer implements AssetReader { } // Otherwise it must be a Dart SDK source. - var dartSdkParent = _fileSystem.directory(dartSdkPath).parent; + var dartSdkParent = _fileSystem.directory(_sdkLayout.sdkDirectory).parent; var dartSdkFile = _fileSystem.file( _fileSystem.path.joinAll([dartSdkParent.path, ...segments])); return dartSdkFile; diff --git a/frontend_server_common/lib/src/devfs.dart b/frontend_server_common/lib/src/devfs.dart index 9bd7c9cbc..1c1c71db5 100644 --- a/frontend_server_common/lib/src/devfs.dart +++ b/frontend_server_common/lib/src/devfs.dart @@ -43,7 +43,7 @@ class WebDevFS { fileSystem.currentDirectory = projectDirectory.toFilePath(); - assetServer = await TestAssetServer.start( + assetServer = await TestAssetServer.start(sdkLayout.sdkDirectory, fileSystem, index, hostname, port, urlTunneler, packageUriMapper); return Uri.parse('http://$hostname:$port'); } diff --git a/frontend_server_common/lib/src/frontend_server_client.dart b/frontend_server_common/lib/src/frontend_server_client.dart index 5aa733b32..3a5300d23 100644 --- a/frontend_server_common/lib/src/frontend_server_client.dart +++ b/frontend_server_common/lib/src/frontend_server_client.dart @@ -396,7 +396,7 @@ class ResidentCompiler { _logger.info(args.join(' ')); final workingDirectory = projectDirectory.toFilePath(); - _server = await Process.start(Platform.resolvedExecutable, args, + _server = await Process.start(sdkLayout.dartPath, args, workingDirectory: workingDirectory); var server = _server!; diff --git a/frontend_server_common/lib/src/resident_runner.dart b/frontend_server_common/lib/src/resident_runner.dart index 1c9af81d1..826fc6a38 100644 --- a/frontend_server_common/lib/src/resident_runner.dart +++ b/frontend_server_common/lib/src/resident_runner.dart @@ -15,7 +15,6 @@ import 'package:test_common/test_sdk_layout.dart'; import 'devfs.dart'; import 'frontend_server_client.dart'; -import 'utilities.dart'; class ResidentWebRunner { final _logger = Logger('ResidentWebRunner'); @@ -39,7 +38,7 @@ class ResidentWebRunner { : sdkLayout.weakSummaryPath); generator = ResidentCompiler( - dartSdkPath, + sdkLayout.sdkDirectory, projectDirectory: projectDirectory, packageConfigFile: packageConfigFile, useDebuggerModuleNames: packageUriMapper.useDebuggerModuleNames, diff --git a/frontend_server_common/lib/src/utilities.dart b/frontend_server_common/lib/src/utilities.dart index 1c68b52e6..eddc3b40a 100644 --- a/frontend_server_common/lib/src/utilities.dart +++ b/frontend_server_common/lib/src/utilities.dart @@ -2,21 +2,7 @@ // 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:file/file.dart' as fs; import 'package:file/local.dart'; -import 'package:path/path.dart' as p; - -/// The path to the root directory of the SDK. -final String _sdkDir = (() { - // The Dart executable is in "/path/to/sdk/bin/dart", so two levels up is - // "/path/to/sdk". - var aboveExecutable = p.dirname(p.dirname(Platform.resolvedExecutable)); - assert(FileSystemEntity.isFileSync(p.join(aboveExecutable, 'version'))); - return aboveExecutable; -})(); - -final String dartSdkPath = _sdkDir; const fs.FileSystem localFileSystem = LocalFileSystem();