parent
1bdf65c697
commit
27a6796233
@ -1241,9 +1241,11 @@ class ProjectFileInvalidator {
|
|||||||
final List<Future<void>> waitList = <Future<void>>[];
|
final List<Future<void>> waitList = <Future<void>>[];
|
||||||
for (final Uri uri in urisToScan) {
|
for (final Uri uri in urisToScan) {
|
||||||
waitList.add(pool.withResource<void>(
|
waitList.add(pool.withResource<void>(
|
||||||
() => _fileSystem
|
// Calling fs.stat() is more performant than fs.file().stat(), but
|
||||||
.file(uri)
|
// uri.toFilePath() does not work with MultiRootFileSystem.
|
||||||
.stat()
|
() => (uri.hasScheme && uri.scheme != 'file'
|
||||||
|
? _fileSystem.file(uri).stat()
|
||||||
|
: _fileSystem.stat(uri.toFilePath(windows: _platform.isWindows)))
|
||||||
.then((FileStat stat) {
|
.then((FileStat stat) {
|
||||||
final DateTime updatedAt = stat.modified;
|
final DateTime updatedAt = stat.modified;
|
||||||
if (updatedAt != null && updatedAt.isAfter(lastCompiled)) {
|
if (updatedAt != null && updatedAt.isAfter(lastCompiled)) {
|
||||||
@ -1255,7 +1257,11 @@ class ProjectFileInvalidator {
|
|||||||
await Future.wait<void>(waitList);
|
await Future.wait<void>(waitList);
|
||||||
} else {
|
} else {
|
||||||
for (final Uri uri in urisToScan) {
|
for (final Uri uri in urisToScan) {
|
||||||
final DateTime updatedAt = _fileSystem.file(uri).statSync().modified;
|
// Calling fs.statSync() is more performant than fs.file().statSync(), but
|
||||||
|
// uri.toFilePath() does not work with MultiRootFileSystem.
|
||||||
|
final DateTime updatedAt = uri.hasScheme && uri.scheme != 'file'
|
||||||
|
? _fileSystem.file(uri).statSync().modified
|
||||||
|
: _fileSystem.statSync(uri.toFilePath(windows: _platform.isWindows)).modified;
|
||||||
if (updatedAt != null && updatedAt.isAfter(lastCompiled)) {
|
if (updatedAt != null && updatedAt.isAfter(lastCompiled)) {
|
||||||
invalidatedFiles.add(uri);
|
invalidatedFiles.add(uri);
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
import 'package:file/memory.dart';
|
import 'package:file/memory.dart';
|
||||||
import 'package:flutter_tools/src/base/file_system.dart';
|
import 'package:flutter_tools/src/base/file_system.dart';
|
||||||
import 'package:flutter_tools/src/base/logger.dart';
|
import 'package:flutter_tools/src/base/logger.dart';
|
||||||
|
import 'package:flutter_tools/src/base/multi_root_file_system.dart';
|
||||||
import 'package:flutter_tools/src/base/platform.dart';
|
import 'package:flutter_tools/src/base/platform.dart';
|
||||||
import 'package:flutter_tools/src/convert.dart';
|
import 'package:flutter_tools/src/convert.dart';
|
||||||
import 'package:flutter_tools/src/run_hot.dart';
|
import 'package:flutter_tools/src/run_hot.dart';
|
||||||
@ -164,5 +165,36 @@ void main() {
|
|||||||
expect(nextInvalidationResult.packageConfig,
|
expect(nextInvalidationResult.packageConfig,
|
||||||
isNot(invalidationResult.packageConfig));
|
isNot(invalidationResult.packageConfig));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testWithoutContext('Works with MultiRootFileSystem uris, asyncScanning: $asyncScanning', () async {
|
||||||
|
final FileSystem fileSystem = MemoryFileSystem.test();
|
||||||
|
final FileSystem multiRootFileSystem = MultiRootFileSystem(
|
||||||
|
delegate: fileSystem,
|
||||||
|
scheme: 'scheme',
|
||||||
|
roots: <String>[
|
||||||
|
'/root',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
final ProjectFileInvalidator projectFileInvalidator = ProjectFileInvalidator(
|
||||||
|
fileSystem: multiRootFileSystem,
|
||||||
|
platform: FakePlatform(),
|
||||||
|
logger: BufferLogger.test(),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
(await projectFileInvalidator.findInvalidated(
|
||||||
|
lastCompiled: inFuture,
|
||||||
|
urisToMonitor: <Uri>[
|
||||||
|
Uri.parse('file1'),
|
||||||
|
Uri.parse('file:///file2'),
|
||||||
|
Uri.parse('scheme:///file3'),
|
||||||
|
],
|
||||||
|
packagesPath: '.packages',
|
||||||
|
asyncScanning: asyncScanning,
|
||||||
|
packageConfig: PackageConfig.empty,
|
||||||
|
)).uris,
|
||||||
|
isEmpty,
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user