Unverified Commit cf500bf6 authored by Konstantin Scheglov's avatar Konstantin Scheglov Committed by GitHub

Integration test for FlutterTesterDevice. (#16424)

parent a2951a9a
......@@ -31,7 +31,7 @@ enum Artifact {
engineDartBinary,
}
String _artifactToFileName(Artifact artifact) {
String _artifactToFileName(Artifact artifact, [TargetPlatform platform]) {
switch (artifact) {
case Artifact.dartIoEntriesTxt:
return 'dart_io_entries.txt';
......@@ -44,6 +44,9 @@ String _artifactToFileName(Artifact artifact) {
case Artifact.genSnapshot:
return 'gen_snapshot';
case Artifact.flutterTester:
if (platform == TargetPlatform.windows_x64) {
return 'flutter_tester.exe';
}
return 'flutter_tester';
case Artifact.snapshotDart:
return 'snapshot.dart';
......@@ -181,7 +184,7 @@ class CachedArtifacts extends Artifacts {
case Artifact.frontendServerSnapshotForEngineDartSdk:
final String engineArtifactsPath = cache.getArtifactDirectory('engine').path;
final String platformDirName = getNameForTargetPlatform(platform);
return fs.path.join(engineArtifactsPath, platformDirName, _artifactToFileName(artifact));
return fs.path.join(engineArtifactsPath, platformDirName, _artifactToFileName(artifact, platform));
case Artifact.engineDartSdkPath:
return dartSdkPath;
case Artifact.engineDartBinary:
......
......@@ -126,7 +126,7 @@ class FlutterTesterDevice extends Device {
}
try {
printTrace('$shellPath ${command.join(' ')}');
printTrace(command.join(' '));
_process = await processManager.start(command);
_process.stdout
......
# Integration tests
These tests are not hermetic, and use actual Flutter SDK.
While they don't require actual devices, they run `flutter_tester` to test
Dart VM and Flutter integration.
Some of these tests change the current directory for the process,
so only one test can be run at a time. Use this command to run:
```shell
../../bin/cache/dart-sdk/bin/pub run test -j1
```
// 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 'package:test/test.dart';
import '../src/context.dart';
void main() {
Directory tempDir;
Directory oldCurrentDir;
setUp(() async {
tempDir = await fs.systemTempDirectory.createTemp('flutter_tester_device');
oldCurrentDir = fs.currentDirectory;
fs.currentDirectory = tempDir;
});
tearDown(() {
fs.currentDirectory = oldCurrentDir;
try {
tempDir?.deleteSync(recursive: true);
tempDir = null;
} catch (e) {
// Ignored.
}
});
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();
_writePackages();
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.first;
expect(line, 'Hello!');
expect(await device.stopApp(null), isTrue);
});
});
}
void _writeFile(String path, String content) {
fs.file(path)
..createSync(recursive: true)
..writeAsStringSync(content);
}
void _writePackages() {
_writeFile('.packages', '''
test:${fs.path.join(fs.currentDirectory.path, 'lib')}/
''');
}
void _writePubspec() {
_writeFile('pubspec.yaml', '''
name: test
dependencies:
flutter:
sdk: flutter
''');
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment