@@ -26,6 +26,7 @@ class TestAssetServer implements AssetReader {
2626 // Fallback to "application/octet-stream" on null which
2727 // makes no claims as to the structure of the data.
2828 static const String _defaultMimeType = 'application/octet-stream' ;
29+ final Uri _projectDirectory;
2930 final FileSystem _fileSystem;
3031 final HttpServer _httpServer;
3132 final Map <String , Uint8List > _files = {};
@@ -41,6 +42,7 @@ class TestAssetServer implements AssetReader {
4142 this ._httpServer,
4243 this ._packageUriMapper,
4344 this .internetAddress,
45+ this ._projectDirectory,
4446 this ._fileSystem,
4547 this ._sdkLayout,
4648 ) {
@@ -65,6 +67,7 @@ class TestAssetServer implements AssetReader {
6567 /// trace.
6668 static Future <TestAssetServer > start (
6769 String sdkDirectory,
70+ Uri projectDirectory,
6871 FileSystem fileSystem,
6972 String index,
7073 String hostname,
@@ -75,8 +78,8 @@ class TestAssetServer implements AssetReader {
7578 final address = (await InternetAddress .lookup (hostname)).first;
7679 final httpServer = await HttpServer .bind (address, port);
7780 final sdkLayout = TestSdkLayout .createDefault (sdkDirectory);
78- final server = TestAssetServer (
79- index, httpServer, packageUriMapper, address , fileSystem, sdkLayout);
81+ final server = TestAssetServer (index, httpServer, packageUriMapper, address,
82+ projectDirectory , fileSystem, sdkLayout);
8083 return server;
8184 }
8285
@@ -94,7 +97,7 @@ class TestAssetServer implements AssetReader {
9497 final headers = < String , String > {};
9598
9699 if (request.url.path.endsWith ('.html' )) {
97- final indexFile = _fileSystem.file (index);
100+ final indexFile = _fileSystem.file (_projectDirectory. resolve ( index) );
98101 if (indexFile.existsSync ()) {
99102 headers[HttpHeaders .contentTypeHeader] = 'text/html' ;
100103 headers[HttpHeaders .contentLengthHeader] =
@@ -244,8 +247,7 @@ class TestAssetServer implements AssetReader {
244247 // If this is a dart file, it must be on the local file system and is
245248 // likely coming from a source map request. The tool doesn't currently
246249 // consider the case of Dart files as assets.
247- final dartFile =
248- _fileSystem.file (_fileSystem.currentDirectory.uri.resolve (path));
250+ final dartFile = _fileSystem.file (_projectDirectory.resolve (path));
249251 if (dartFile.existsSync ()) {
250252 return dartFile;
251253 }
@@ -255,7 +257,10 @@ class TestAssetServer implements AssetReader {
255257 // The file might have been a package file which is signaled by a
256258 // `/packages/<package>/<path>` request.
257259 if (segments.first == 'packages' ) {
258- final resolved = _packageUriMapper.serverPathToResolvedUri (path);
260+ var resolved = _packageUriMapper.serverPathToResolvedUri (path);
261+ if (resolved != null ) {
262+ resolved = _projectDirectory.resolveUri (resolved);
263+ }
259264 final packageFile = _fileSystem.file (resolved);
260265 if (packageFile.existsSync ()) {
261266 return packageFile;
@@ -311,7 +316,7 @@ class TestAssetServer implements AssetReader {
311316 }
312317
313318 String _parseBasePathFromIndexHtml (String index) {
314- final file = _fileSystem.file (index);
319+ final file = _fileSystem.file (_projectDirectory. resolve ( index) );
315320 if (! file.existsSync ()) {
316321 throw StateError ('Index file $index is not found' );
317322 }
0 commit comments