Unverified Commit b45a2605 authored by Chris Bracken's avatar Chris Bracken Committed by GitHub

Make FakeGenSnapshot's outputs mutable for tests (#16976)

This simplifies tests by allowing the test author to express the outputs
they'd like the snapshotter to generate without creating a whole new
instance and context with the additional overrides.

Also sets the default set of outputs to none, setting them instead in
the setUp function for script snapshotting.
parent 2689560b
...@@ -24,14 +24,10 @@ class MockArtifacts extends Mock implements Artifacts {} ...@@ -24,14 +24,10 @@ class MockArtifacts extends Mock implements Artifacts {}
class _FakeGenSnapshot implements GenSnapshot { class _FakeGenSnapshot implements GenSnapshot {
_FakeGenSnapshot({ _FakeGenSnapshot({
this.succeed: true, this.succeed: true,
this.outputs: const <String, String>{
'output.snapshot': '',
'output.snapshot.d': 'output.snapshot.d : main.dart',
},
}); });
final bool succeed; final bool succeed;
final Map<String, String> outputs; Map<String, String> outputs = <String, String>{};
int _callCount = 0; int _callCount = 0;
SnapshotType _snapshotType; SnapshotType _snapshotType;
String _packagesPath; String _packagesPath;
...@@ -345,6 +341,10 @@ void main() { ...@@ -345,6 +341,10 @@ void main() {
fs.file(kIsolateSnapshotData).writeAsStringSync('snapshot data'); fs.file(kIsolateSnapshotData).writeAsStringSync('snapshot data');
fs.file(kVmSnapshotData).writeAsStringSync('vm data'); fs.file(kVmSnapshotData).writeAsStringSync('vm data');
genSnapshot = new _FakeGenSnapshot(); genSnapshot = new _FakeGenSnapshot();
genSnapshot.outputs = <String, String>{
'output.snapshot': '',
'output.snapshot.d': 'output.snapshot.d : main.dart',
};
mockVersion = new MockFlutterVersion(); mockVersion = new MockFlutterVersion();
when(mockVersion.frameworkRevision).thenReturn(kVersion); when(mockVersion.frameworkRevision).thenReturn(kVersion);
snapshotter = new Snapshotter(); snapshotter = new Snapshotter();
...@@ -463,41 +463,34 @@ void main() { ...@@ -463,41 +463,34 @@ void main() {
}, overrides: contextOverrides); }, overrides: contextOverrides);
testUsingContext('builds snapshot and fingerprint when main entry point changes to other dependency', () async { testUsingContext('builds snapshot and fingerprint when main entry point changes to other dependency', () async {
final _FakeGenSnapshot genSnapshot = new _FakeGenSnapshot( await fs.file('main.dart').writeAsString('import "other.dart";\nvoid main() {}');
outputs: <String, String>{ await fs.file('other.dart').writeAsString('import "main.dart";\nvoid main() {}');
'output.snapshot': '', await fs.file('output.snapshot').create();
'output.snapshot.d': 'output.snapshot : main.dart other.dart', await fs.file('output.snapshot.d').writeAsString('output.snapshot : main.dart');
}, await writeFingerprint(files: <String, String>{
'main.dart': 'bc096b33f14dde5e0ffaf93a1d03395c',
'other.dart': 'e0c35f083f0ad76b2d87100ec678b516',
'output.snapshot': 'd41d8cd98f00b204e9800998ecf8427e',
});
genSnapshot.outputs = <String, String>{
'output.snapshot': '',
'output.snapshot.d': 'output.snapshot : main.dart other.dart',
};
await snapshotter.buildScriptSnapshot(
mainPath: 'other.dart',
snapshotPath: 'output.snapshot',
depfilePath: 'output.snapshot.d',
packagesPath: '.packages',
); );
await context.run<void>( expect(genSnapshot.callCount, 1);
overrides: <Type, Generator>{GenSnapshot: () => genSnapshot}, expectFingerprintHas(
body: () async { entryPoint: 'other.dart',
await fs.file('main.dart').writeAsString('import "other.dart";\nvoid main() {}'); checksums: <String, String>{
await fs.file('other.dart').writeAsString('import "main.dart";\nvoid main() {}'); 'main.dart': 'bc096b33f14dde5e0ffaf93a1d03395c',
await fs.file('output.snapshot').create(); 'other.dart': 'e0c35f083f0ad76b2d87100ec678b516',
await fs.file('output.snapshot.d').writeAsString('output.snapshot : main.dart'); 'output.snapshot': 'd41d8cd98f00b204e9800998ecf8427e',
await writeFingerprint(files: <String, String>{
'main.dart': 'bc096b33f14dde5e0ffaf93a1d03395c',
'other.dart': 'e0c35f083f0ad76b2d87100ec678b516',
'output.snapshot': 'd41d8cd98f00b204e9800998ecf8427e',
});
await snapshotter.buildScriptSnapshot(
mainPath: 'other.dart',
snapshotPath: 'output.snapshot',
depfilePath: 'output.snapshot.d',
packagesPath: '.packages',
);
expect(genSnapshot.callCount, 1);
expectFingerprintHas(
entryPoint: 'other.dart',
checksums: <String, String>{
'main.dart': 'bc096b33f14dde5e0ffaf93a1d03395c',
'other.dart': 'e0c35f083f0ad76b2d87100ec678b516',
'output.snapshot': 'd41d8cd98f00b204e9800998ecf8427e',
},
);
}, },
); );
}, overrides: contextOverrides); }, overrides: contextOverrides);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment