| // 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:file/file.dart'; |
| import 'package:flutter_tools/src/base/file_system.dart'; |
| import 'package:vm_service/vm_service.dart'; |
| |
| import '../integration.shard/test_data/basic_project.dart'; |
| import '../integration.shard/test_driver.dart'; |
| import '../integration.shard/test_utils.dart'; |
| import '../src/common.dart'; |
| |
| void main() { |
| late Directory tempDir; |
| final BasicProjectWithUnaryMain project = BasicProjectWithUnaryMain(); |
| late FlutterRunTestDriver flutter; |
| |
| setUp(() async { |
| tempDir = createResolvedTempDirectorySync('run_test.'); |
| await project.setUpIn(tempDir); |
| flutter = FlutterRunTestDriver(tempDir); |
| }); |
| |
| tearDown(() async { |
| await flutter.stop(); |
| tryToDelete(tempDir); |
| }); |
| |
| Future<void> start({bool verbose = false}) async { |
| // The non-test project has a loop around its breakpoints. |
| // No need to start paused as all breakpoint would be eventually reached. |
| await flutter.run( |
| withDebugger: true, |
| chrome: true, |
| additionalCommandArgs: <String>[ |
| if (verbose) '--verbose', |
| '--web-renderer=html', |
| ]); |
| } |
| |
| Future<void> evaluate() async { |
| final ObjRef res = |
| await flutter.evaluate('package:characters/characters.dart', 'true'); |
| expect(res, isA<InstanceRef>() |
| .having((InstanceRef o) => o.kind, 'kind', 'Bool')); |
| } |
| |
| testWithoutContext('flutter run outputs info messages from dwds in verbose mode', () async { |
| final Future<dynamic> info = expectLater( |
| flutter.stdout, emitsThrough(contains('Loaded debug metadata'))); |
| await start(verbose: true); |
| await evaluate(); |
| await flutter.stop(); |
| await info; |
| }); |
| } |