blob: 4dbd4d558fc099eea5f70c7330277b8e558cdab4 [file] [log] [blame]
// 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_runner/build_runner.dart';
import 'package:flutter_tools/src/codegen.dart';
import 'package:flutter_tools/src/compile.dart';
import 'package:mockito/mockito.dart';
import '../src/common.dart';
import '../src/context.dart';
void main() {
group(CodeGeneratingKernelCompiler, () {
final MockBuildRunner mockBuildRunner = MockBuildRunner();
final MockFileSystem mockFileSystem = MockFileSystem();
final MockFile packagesFile = MockFile();
final MockFile dillFile = MockFile();
final MockFile outputFile = MockFile();
when(mockFileSystem.file('main.app.dill')).thenReturn(dillFile);
when(mockFileSystem.file('.packages')).thenReturn(packagesFile);
when(mockFileSystem.file('output.app.dill')).thenReturn(outputFile);
when(packagesFile.exists()).thenAnswer((Invocation invocation) async => true);
when(dillFile.exists()).thenAnswer((Invocation invocation) async => true);
when(outputFile.exists()).thenAnswer((Invocation invocation) async => true);
when(dillFile.readAsBytes()).thenAnswer((Invocation invocation) async => <int>[0, 1, 2, 3]);
testUsingContext('delegates to build_runner', () async {
const CodeGeneratingKernelCompiler kernelCompiler = CodeGeneratingKernelCompiler();
when(mockBuildRunner.build(
aot: anyNamed('aot'),
extraFrontEndOptions: anyNamed('extraFrontEndOptions'),
linkPlatformKernelIn: anyNamed('linkPlatformKernelIn'),
mainPath: anyNamed('mainPath'),
targetProductVm: anyNamed('targetProductVm'),
trackWidgetCreation: anyNamed('trackWidgetCreation')
)).thenAnswer((Invocation invocation) async {
return CodeGenerationResult(fs.file('.packages'), fs.file('main.app.dill'));
});
final CompilerOutput buildResult = await kernelCompiler.compile(
outputFilePath: 'output.app.dill',
);
expect(buildResult.outputFilename, 'output.app.dill');
expect(buildResult.errorCount, 0);
verify(outputFile.writeAsBytes(<int>[0, 1, 2, 3])).called(1);
}, overrides: <Type, Generator>{
CodeGenerator: () => mockBuildRunner,
FileSystem: () => mockFileSystem,
});
});
}
class MockBuildRunner extends Mock implements BuildRunner {}
class MockFileSystem extends Mock implements FileSystem {}
class MockFile extends Mock implements File {}