blob: a75828071051efc52b44c39f60d77bc892d1286d [file]
// 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() {
group('FlutterTesterDevice', () {
Directory tempDir;
FlutterTesterDevice device;
setUp(() async {
tempDir = fs.systemTempDirectory.createTempSync('flutter_tester_device_test.');
device = new FlutterTesterDevice('flutter-tester', workingDirectory: tempDir.path);
});
tearDown(() {
tryToDelete(tempDir);
});
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(tempDir.path, '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);
});
});
}