@@ -26,6 +26,7 @@ class TestAssetServer implements AssetReader {
26
26
// Fallback to "application/octet-stream" on null which
27
27
// makes no claims as to the structure of the data.
28
28
static const String _defaultMimeType = 'application/octet-stream' ;
29
+ final Uri _projectDirectory;
29
30
final FileSystem _fileSystem;
30
31
final HttpServer _httpServer;
31
32
final Map <String , Uint8List > _files = {};
@@ -41,6 +42,7 @@ class TestAssetServer implements AssetReader {
41
42
this ._httpServer,
42
43
this ._packageUriMapper,
43
44
this .internetAddress,
45
+ this ._projectDirectory,
44
46
this ._fileSystem,
45
47
this ._sdkLayout,
46
48
) {
@@ -65,6 +67,7 @@ class TestAssetServer implements AssetReader {
65
67
/// trace.
66
68
static Future <TestAssetServer > start (
67
69
String sdkDirectory,
70
+ Uri projectDirectory,
68
71
FileSystem fileSystem,
69
72
String index,
70
73
String hostname,
@@ -75,8 +78,8 @@ class TestAssetServer implements AssetReader {
75
78
final address = (await InternetAddress .lookup (hostname)).first;
76
79
final httpServer = await HttpServer .bind (address, port);
77
80
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);
80
83
return server;
81
84
}
82
85
@@ -94,7 +97,7 @@ class TestAssetServer implements AssetReader {
94
97
final headers = < String , String > {};
95
98
96
99
if (request.url.path.endsWith ('.html' )) {
97
- final indexFile = _fileSystem.file (index);
100
+ final indexFile = _fileSystem.file (_projectDirectory. resolve ( index) );
98
101
if (indexFile.existsSync ()) {
99
102
headers[HttpHeaders .contentTypeHeader] = 'text/html' ;
100
103
headers[HttpHeaders .contentLengthHeader] =
@@ -244,8 +247,7 @@ class TestAssetServer implements AssetReader {
244
247
// If this is a dart file, it must be on the local file system and is
245
248
// likely coming from a source map request. The tool doesn't currently
246
249
// 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));
249
251
if (dartFile.existsSync ()) {
250
252
return dartFile;
251
253
}
@@ -255,7 +257,10 @@ class TestAssetServer implements AssetReader {
255
257
// The file might have been a package file which is signaled by a
256
258
// `/packages/<package>/<path>` request.
257
259
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
+ }
259
264
final packageFile = _fileSystem.file (resolved);
260
265
if (packageFile.existsSync ()) {
261
266
return packageFile;
@@ -311,7 +316,7 @@ class TestAssetServer implements AssetReader {
311
316
}
312
317
313
318
String _parseBasePathFromIndexHtml (String index) {
314
- final file = _fileSystem.file (index);
319
+ final file = _fileSystem.file (_projectDirectory. resolve ( index) );
315
320
if (! file.existsSync ()) {
316
321
throw StateError ('Index file $index is not found' );
317
322
}
0 commit comments