| // Copyright 2014 The Flutter 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/cache.dart'; |
| import 'package:flutter_tools/src/codegen.dart'; |
| import 'package:flutter_tools/src/commands/generate.dart'; |
| import 'package:flutter_tools/src/convert.dart'; |
| import 'package:mockito/mockito.dart'; |
| import 'package:flutter_tools/src/globals.dart' as globals; |
| |
| import '../../src/common.dart'; |
| import '../../src/context.dart'; |
| import '../../src/mocks.dart'; |
| import '../../src/testbed.dart'; |
| |
| void main() { |
| Testbed testbed; |
| MockCodeGenerator mockCodeGenerator; |
| MockCodegenDaemon mockCodegenDaemon; |
| |
| setUpAll(() { |
| Cache.disableLocking(); |
| }); |
| |
| tearDownAll(() { |
| Cache.enableLocking(); |
| }); |
| |
| setUp(() { |
| mockCodegenDaemon = MockCodegenDaemon(); |
| mockCodeGenerator = MockCodeGenerator(); |
| when(mockCodegenDaemon.buildResults).thenAnswer((Invocation invocation) { |
| return Stream<CodegenStatus>.fromIterable(<CodegenStatus>[ |
| CodegenStatus.Started, |
| CodegenStatus.Succeeded, |
| ]); |
| }); |
| when(mockCodeGenerator.daemon(any)).thenAnswer((Invocation invocation) async { |
| return mockCodegenDaemon; |
| }); |
| testbed = Testbed(overrides: <Type, Generator>{ |
| CodeGenerator: () => mockCodeGenerator, |
| }); |
| }); |
| |
| test('Outputs error information from flutter generate', () => testbed.run(() async { |
| final GenerateCommand command = GenerateCommand(); |
| applyMocksToCommand(command); |
| globals.fs.file(globals.fs.path.join('lib', 'main.dart')) |
| .createSync(recursive: true); |
| |
| globals.fs.currentDirectory |
| .childDirectory('.dart_tool') |
| .childDirectory('build') |
| .childDirectory('abcdefg') |
| .childDirectory('error_cache') |
| .childFile('foo_error') |
| ..createSync(recursive: true) |
| ..writeAsStringSync(json.encode(<dynamic>[ |
| 'foo builder', |
| <dynamic>[ |
| 'a', |
| 'b', |
| StackTrace.current.toString(), |
| ] |
| ])); |
| |
| await createTestCommandRunner(command) |
| .run(const <String>['generate']); |
| |
| expect(testLogger.errorText, contains('a')); |
| expect(testLogger.errorText, contains('b')); |
| expect(testLogger.errorText, contains('foo builder')); |
| expect(testLogger.errorText, isNot(contains('Error reading error'))); |
| })); |
| } |
| |
| class MockCodeGenerator extends Mock implements CodeGenerator { } |
| class MockCodegenDaemon extends Mock implements CodegenDaemon { } |