// Copyright 2018 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 'dart:async'; import 'package:file/file.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/device.dart'; import 'package:flutter_tools/src/tester/flutter_tester.dart'; import '../src/common.dart'; import '../src/context.dart'; import 'test_utils.dart'; void main() { Directory tempDir; Directory oldCurrentDir; setUp(() async { tempDir = fs.systemTempDirectory.createTempSync('flutter_tester_device_test.'); oldCurrentDir = fs.currentDirectory; fs.currentDirectory = tempDir; }); tearDown(() { fs.currentDirectory = oldCurrentDir; tryToDelete(tempDir); }); group('FlutterTesterDevice', () { FlutterTesterDevice device; setUp(() { device = new FlutterTesterDevice('flutter-tester'); }); Future<LaunchResult> start(String mainPath) async { return await device.startApp( null, mainPath: mainPath, debuggingOptions: new DebuggingOptions.enabled( const BuildInfo(BuildMode.debug, null), ), ); } testUsingContext('start', () async { writePubspec(tempDir.path); writePackages(tempDir.path); final String mainPath = fs.path.join('lib', 'main.dart'); writeFile(mainPath, r''' import 'dart:async'; void main() { new Timer.periodic(const Duration(milliseconds: 1), (Timer timer) { print('Hello!'); }); } '''); final LaunchResult result = await start(mainPath); expect(result.started, isTrue); expect(result.observatoryUri, isNotNull); final String line = await device.getLogReader().logLines.firstWhere((String line) => !line.contains('TeXGyreSchola')); expect(line, equals('Hello!')); expect(await device.stopApp(null), isTrue); }); }); }