Skip to content

Commit ff61962

Browse files
authored
Update devfs_test to use MemoryFileSystem (flutter#8811)
1 parent e271fa3 commit ff61962

File tree

4 files changed

+70
-23
lines changed

4 files changed

+70
-23
lines changed

packages/flutter_driver/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ environment:
88
sdk: '>=1.19.0 <2.0.0'
99

1010
dependencies:
11-
file: 2.3.1
11+
file: 2.3.2
1212
json_rpc_2: '^2.0.0'
1313
matcher: '>=0.12.0 <1.0.0'
1414
meta: ^1.0.4

packages/flutter_tools/lib/src/devfs.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ class DevFS {
551551

552552
for (String packageName in packageMap.map.keys) {
553553
final Uri packageUri = packageMap.map[packageName];
554-
final String packagePath = packageUri.toFilePath();
554+
final String packagePath = fs.path.fromUri(packageUri);
555555
final Directory packageDirectory = fs.directory(packageUri);
556556
Uri directoryUriOnDevice = fs.path.toUri(fs.path.join('packages', packageName) + fs.path.separator);
557557
bool packageExists;

packages/flutter_tools/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ dependencies:
1212
args: ^0.13.4
1313
coverage: ^0.8.0
1414
crypto: '>=1.1.1 <3.0.0'
15-
file: 2.3.1
15+
file: 2.3.2
1616
http: ^0.11.3+12
1717
intl: '>=0.14.0 <0.15.0'
1818
json_rpc_2: ^2.0.0

packages/flutter_tools/test/devfs_test.dart

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'dart:async';
66
import 'dart:convert';
77

8+
import 'package:file/file.dart';
9+
import 'package:file/memory.dart';
810
import 'package:flutter_tools/src/asset.dart';
911
import 'package:flutter_tools/src/base/io.dart';
1012
import 'package:flutter_tools/src/build_info.dart';
1113
import 'package:flutter_tools/src/devfs.dart';
12-
import 'package:flutter_tools/src/base/file_system.dart';
1314
import 'package:flutter_tools/src/vmservice.dart';
1415
import 'package:test/test.dart';
1516

@@ -18,13 +19,20 @@ import 'src/context.dart';
1819
import 'src/mocks.dart';
1920

2021
void main() {
21-
final String filePath = fs.path.join('lib', 'foo.txt');
22-
final String filePath2 = fs.path.join('foo', 'bar.txt');
22+
FileSystem fs;
23+
String filePath;
24+
String filePath2;
2325
Directory tempDir;
2426
String basePath;
2527
DevFS devFS;
2628
final AssetBundle assetBundle = new AssetBundle();
2729

30+
setUpAll(() {
31+
fs = new MemoryFileSystem();
32+
filePath = fs.path.join('lib', 'foo.txt');
33+
filePath2 = fs.path.join('foo', 'bar.txt');
34+
});
35+
2836
group('DevFSContent', () {
2937
test('bytes', () {
3038
final DevFSByteContent content = new DevFSByteContent(<int>[4, 5, 6]);
@@ -59,7 +67,7 @@ void main() {
5967
final MockDevFSOperations devFSOperations = new MockDevFSOperations();
6068

6169
setUpAll(() {
62-
tempDir = _newTempDir();
70+
tempDir = _newTempDir(fs);
6371
basePath = tempDir.path;
6472
});
6573
tearDownAll(_cleanupTempDirs);
@@ -72,7 +80,7 @@ void main() {
7280
_packages['my_project'] = fs.path.toUri('lib');
7381

7482
// simulate package
75-
await _createPackage('somepkg', 'somefile.txt');
83+
await _createPackage(fs, 'somepkg', 'somefile.txt');
7684

7785
devFS = new DevFS.operations(devFSOperations, 'test', tempDir);
7886
await devFS.create();
@@ -95,7 +103,10 @@ void main() {
95103
);
96104

97105
expect(bytes, 48);
106+
}, overrides: <Type, Generator>{
107+
FileSystem: () => fs,
98108
});
109+
99110
testUsingContext('add new file to local file system', () async {
100111
final File file = fs.file(fs.path.join(basePath, filePath2));
101112
await file.parent.create(recursive: true);
@@ -106,7 +117,10 @@ void main() {
106117
]);
107118
expect(devFS.assetPathsToEvict, isEmpty);
108119
expect(bytes, 7);
120+
}, overrides: <Type, Generator>{
121+
FileSystem: () => fs,
109122
});
123+
110124
testUsingContext('modify existing file on local file system', () async {
111125
await devFS.update();
112126
final File file = fs.file(fs.path.join(basePath, filePath));
@@ -124,7 +138,10 @@ void main() {
124138
]);
125139
expect(devFS.assetPathsToEvict, isEmpty);
126140
expect(bytes, 6);
141+
}, overrides: <Type, Generator>{
142+
FileSystem: () => fs,
127143
});
144+
128145
testUsingContext('delete a file from the local file system', () async {
129146
final File file = fs.file(fs.path.join(basePath, filePath));
130147
await file.delete();
@@ -134,20 +151,26 @@ void main() {
134151
]);
135152
expect(devFS.assetPathsToEvict, isEmpty);
136153
expect(bytes, 0);
154+
}, overrides: <Type, Generator>{
155+
FileSystem: () => fs,
137156
});
157+
138158
testUsingContext('add new package', () async {
139-
await _createPackage('newpkg', 'anotherfile.txt');
159+
await _createPackage(fs, 'newpkg', 'anotherfile.txt');
140160
final int bytes = await devFS.update();
141161
devFSOperations.expectMessages(<String>[
142162
'writeFile test .packages',
143163
'writeFile test packages/newpkg/anotherfile.txt',
144164
]);
145165
expect(devFS.assetPathsToEvict, isEmpty);
146166
expect(bytes, 69);
167+
}, overrides: <Type, Generator>{
168+
FileSystem: () => fs,
147169
});
170+
148171
testUsingContext('add new package with double slashes in URI', () async {
149172
final String packageName = 'doubleslashpkg';
150-
await _createPackage(packageName, 'somefile.txt', doubleSlash: true);
173+
await _createPackage(fs, packageName, 'somefile.txt', doubleSlash: true);
151174

152175
final Set<String> fileFilter = new Set<String>();
153176
final List<Uri> pkgUris = <Uri>[fs.path.toUri(basePath)]..addAll(_packages.values);
@@ -169,76 +192,96 @@ void main() {
169192
]);
170193
expect(devFS.assetPathsToEvict, isEmpty);
171194
expect(bytes, 109);
195+
}, overrides: <Type, Generator>{
196+
FileSystem: () => fs,
172197
});
198+
173199
testUsingContext('add an asset bundle', () async {
174200
assetBundle.entries['a.txt'] = new DevFSStringContent('abc');
175201
final int bytes = await devFS.update(bundle: assetBundle, bundleDirty: true);
176202
devFSOperations.expectMessages(<String>[
177-
'writeFile test ${_inAssetBuildDirectory('a.txt')}',
203+
'writeFile test ${_inAssetBuildDirectory(fs, 'a.txt')}',
178204
]);
179205
expect(devFS.assetPathsToEvict, unorderedMatches(<String>['a.txt']));
180206
devFS.assetPathsToEvict.clear();
181207
expect(bytes, 3);
208+
}, overrides: <Type, Generator>{
209+
FileSystem: () => fs,
182210
});
211+
183212
testUsingContext('add a file to the asset bundle - bundleDirty', () async {
184213
assetBundle.entries['b.txt'] = new DevFSStringContent('abcd');
185214
final int bytes = await devFS.update(bundle: assetBundle, bundleDirty: true);
186215
// Expect entire asset bundle written because bundleDirty is true
187216
devFSOperations.expectMessages(<String>[
188-
'writeFile test ${_inAssetBuildDirectory('a.txt')}',
189-
'writeFile test ${_inAssetBuildDirectory('b.txt')}',
217+
'writeFile test ${_inAssetBuildDirectory(fs, 'a.txt')}',
218+
'writeFile test ${_inAssetBuildDirectory(fs, 'b.txt')}',
190219
]);
191220
expect(devFS.assetPathsToEvict, unorderedMatches(<String>[
192221
'a.txt', 'b.txt']));
193222
devFS.assetPathsToEvict.clear();
194223
expect(bytes, 7);
224+
}, overrides: <Type, Generator>{
225+
FileSystem: () => fs,
195226
});
227+
196228
testUsingContext('add a file to the asset bundle', () async {
197229
assetBundle.entries['c.txt'] = new DevFSStringContent('12');
198230
final int bytes = await devFS.update(bundle: assetBundle);
199231
devFSOperations.expectMessages(<String>[
200-
'writeFile test ${_inAssetBuildDirectory('c.txt')}',
232+
'writeFile test ${_inAssetBuildDirectory(fs, 'c.txt')}',
201233
]);
202234
expect(devFS.assetPathsToEvict, unorderedMatches(<String>[
203235
'c.txt']));
204236
devFS.assetPathsToEvict.clear();
205237
expect(bytes, 2);
238+
}, overrides: <Type, Generator>{
239+
FileSystem: () => fs,
206240
});
241+
207242
testUsingContext('delete a file from the asset bundle', () async {
208243
assetBundle.entries.remove('c.txt');
209244
final int bytes = await devFS.update(bundle: assetBundle);
210245
devFSOperations.expectMessages(<String>[
211-
'deleteFile test ${_inAssetBuildDirectory('c.txt')}',
246+
'deleteFile test ${_inAssetBuildDirectory(fs, 'c.txt')}',
212247
]);
213248
expect(devFS.assetPathsToEvict, unorderedMatches(<String>['c.txt']));
214249
devFS.assetPathsToEvict.clear();
215250
expect(bytes, 0);
251+
}, overrides: <Type, Generator>{
252+
FileSystem: () => fs,
216253
});
254+
217255
testUsingContext('delete all files from the asset bundle', () async {
218256
assetBundle.entries.clear();
219257
final int bytes = await devFS.update(bundle: assetBundle, bundleDirty: true);
220258
devFSOperations.expectMessages(<String>[
221-
'deleteFile test ${_inAssetBuildDirectory('a.txt')}',
222-
'deleteFile test ${_inAssetBuildDirectory('b.txt')}',
259+
'deleteFile test ${_inAssetBuildDirectory(fs, 'a.txt')}',
260+
'deleteFile test ${_inAssetBuildDirectory(fs, 'b.txt')}',
223261
]);
224262
expect(devFS.assetPathsToEvict, unorderedMatches(<String>[
225263
'a.txt', 'b.txt'
226264
]));
227265
devFS.assetPathsToEvict.clear();
228266
expect(bytes, 0);
267+
}, overrides: <Type, Generator>{
268+
FileSystem: () => fs,
229269
});
270+
230271
testUsingContext('delete dev file system', () async {
231272
await devFS.destroy();
232273
devFSOperations.expectMessages(<String>['destroy test']);
233274
expect(devFS.assetPathsToEvict, isEmpty);
275+
}, overrides: <Type, Generator>{
276+
FileSystem: () => fs,
234277
});
235278
});
236279

237280
group('devfs remote', () {
238281
MockVMService vmService;
239282

240283
setUpAll(() async {
241-
tempDir = _newTempDir();
284+
tempDir = _newTempDir(fs);
242285
basePath = tempDir.path;
243286
vmService = new MockVMService();
244287
await vmService.setUp();
@@ -255,7 +298,7 @@ void main() {
255298
file.writeAsBytesSync(<int>[1, 2, 3]);
256299

257300
// simulate package
258-
await _createPackage('somepkg', 'somefile.txt');
301+
await _createPackage(fs, 'somepkg', 'somefile.txt');
259302

260303
devFS = new DevFS(vmService, 'test', tempDir);
261304
await devFS.create();
@@ -270,13 +313,17 @@ void main() {
270313
]);
271314
expect(devFS.assetPathsToEvict, isEmpty);
272315
expect(bytes, 48);
316+
}, overrides: <Type, Generator>{
317+
FileSystem: () => fs,
273318
});
274319

275320
testUsingContext('delete dev file system', () async {
276321
expect(vmService.messages, isEmpty, reason: 'prior test timeout');
277322
await devFS.destroy();
278323
vmService.expectMessages(<String>['_deleteDevFS {fsName: test}']);
279324
expect(devFS.assetPathsToEvict, isEmpty);
325+
}, overrides: <Type, Generator>{
326+
FileSystem: () => fs,
280327
});
281328
});
282329
}
@@ -349,7 +396,7 @@ class MockVM implements VM {
349396
final List<Directory> _tempDirs = <Directory>[];
350397
final Map <String, Uri> _packages = <String, Uri>{};
351398

352-
Directory _newTempDir() {
399+
Directory _newTempDir(FileSystem fs) {
353400
final Directory tempDir = fs.systemTempDirectory.createTempSync('devfs${_tempDirs.length}');
354401
_tempDirs.add(tempDir);
355402
return tempDir;
@@ -361,8 +408,8 @@ void _cleanupTempDirs() {
361408
}
362409
}
363410

364-
Future<Null> _createPackage(String pkgName, String pkgFileName, { bool doubleSlash: false }) async {
365-
final Directory pkgTempDir = _newTempDir();
411+
Future<Null> _createPackage(FileSystem fs, String pkgName, String pkgFileName, { bool doubleSlash: false }) async {
412+
final Directory pkgTempDir = _newTempDir(fs);
366413
String pkgFilePath = fs.path.join(pkgTempDir.path, pkgName, 'lib', pkgFileName);
367414
if (doubleSlash) {
368415
// Force two separators into the path.
@@ -380,6 +427,6 @@ Future<Null> _createPackage(String pkgName, String pkgFileName, { bool doubleSla
380427
fs.file(fs.path.join(_tempDirs[0].path, '.packages')).writeAsStringSync(sb.toString());
381428
}
382429

383-
String _inAssetBuildDirectory(String filename) {
430+
String _inAssetBuildDirectory(FileSystem fs, String filename) {
384431
return '${fs.path.toUri(getAssetBuildDirectory()).path}/$filename';
385432
}

0 commit comments

Comments
 (0)