mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
73 lines
2.6 KiB
Dart
73 lines
2.6 KiB
Dart
// Copyright 2019 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'package:flutter_tools/src/base/file_system.dart';
|
|
import 'package:flutter_tools/src/build_system/build_system.dart';
|
|
import 'package:flutter_tools/src/build_system/file_hash_store.dart';
|
|
import 'package:flutter_tools/src/build_system/filecache.pb.dart' as pb;
|
|
|
|
import '../../src/common.dart';
|
|
import '../../src/testbed.dart';
|
|
|
|
void main() {
|
|
Testbed testbed;
|
|
Environment environment;
|
|
|
|
setUp(() {
|
|
testbed = Testbed(setup: () {
|
|
fs.directory('build').createSync();
|
|
environment = Environment(
|
|
outputDir: fs.currentDirectory,
|
|
projectDir: fs.currentDirectory,
|
|
);
|
|
environment.buildDir.createSync(recursive: true);
|
|
});
|
|
});
|
|
|
|
test('Initializes file cache', () => testbed.run(() {
|
|
final FileHashStore fileCache = FileHashStore(environment);
|
|
fileCache.initialize();
|
|
fileCache.persist();
|
|
|
|
expect(fs.file(fs.path.join(environment.buildDir.path, '.filecache')).existsSync(), true);
|
|
|
|
final List<int> buffer = fs.file(fs.path.join(environment.buildDir.path, '.filecache'))
|
|
.readAsBytesSync();
|
|
final pb.FileStorage fileStorage = pb.FileStorage.fromBuffer(buffer);
|
|
|
|
expect(fileStorage.files, isEmpty);
|
|
expect(fileStorage.version, 1);
|
|
}));
|
|
|
|
test('saves and restores to file cache', () => testbed.run(() {
|
|
final File file = fs.file('foo.dart')
|
|
..createSync()
|
|
..writeAsStringSync('hello');
|
|
final FileHashStore fileCache = FileHashStore(environment);
|
|
fileCache.initialize();
|
|
fileCache.hashFiles(<File>[file]);
|
|
fileCache.persist();
|
|
final String currentHash = fileCache.currentHashes[file.resolveSymbolicLinksSync()];
|
|
final List<int> buffer = fs.file(fs.path.join(environment.buildDir.path, '.filecache'))
|
|
.readAsBytesSync();
|
|
pb.FileStorage fileStorage = pb.FileStorage.fromBuffer(buffer);
|
|
|
|
expect(fileStorage.files.single.hash, currentHash);
|
|
expect(fileStorage.files.single.path, file.resolveSymbolicLinksSync());
|
|
|
|
|
|
final FileHashStore newFileCache = FileHashStore(environment);
|
|
newFileCache.initialize();
|
|
expect(newFileCache.currentHashes, isEmpty);
|
|
expect(newFileCache.previousHashes[fs.path.absolute('foo.dart')], currentHash);
|
|
newFileCache.persist();
|
|
|
|
// Still persisted correctly.
|
|
fileStorage = pb.FileStorage.fromBuffer(buffer);
|
|
|
|
expect(fileStorage.files.single.hash, currentHash);
|
|
expect(fileStorage.files.single.path, file.resolveSymbolicLinksSync());
|
|
}));
|
|
}
|