mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

* Update project.pbxproj files to say Flutter rather than Chromium Also, the templates now have an empty organization so that we don't cause people to give their apps a Flutter copyright. * Update the copyright notice checker to require a standard notice on all files * Update copyrights on Dart files. (This was a mechanical commit.) * Fix weird license headers on Dart files that deviate from our conventions; relicense Shrine. Some were already marked "The Flutter Authors", not clear why. Their dates have been normalized. Some were missing the blank line after the license. Some were randomly different in trivial ways for no apparent reason (e.g. missing the trailing period). * Clean up the copyrights in non-Dart files. (Manual edits.) Also, make sure templates don't have copyrights. * Fix some more ORGANIZATIONNAMEs
67 lines
2.4 KiB
Dart
67 lines
2.4 KiB
Dart
// 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 'dart:async';
|
|
import 'dart:io';
|
|
|
|
import 'package:path/path.dart' as path;
|
|
|
|
import 'package:flutter_devicelab/framework/adb.dart';
|
|
import 'package:flutter_devicelab/framework/framework.dart';
|
|
import 'package:flutter_devicelab/framework/utils.dart';
|
|
|
|
final Directory flutterGalleryDir = dir(path.join(flutterDirectory.path, 'examples/hello_world'));
|
|
final File runTestSource = File(path.join(
|
|
flutterDirectory.path, 'dev', 'automated_tests', 'flutter_run_test', 'flutter_run_test.dart',
|
|
));
|
|
const Pattern passedMessageMatch = '+0: example passed';
|
|
const Pattern failedMessageMatch = '+1: example failed [E]';
|
|
const Pattern skippedMessageMatch = '+1 -1: example skipped';
|
|
const Pattern finishedMessageMatch = '+1 ~1 -1: Some tests failed.';
|
|
|
|
Future<void> main() async {
|
|
deviceOperatingSystem = DeviceOperatingSystem.android;
|
|
await task(createFlutterRunTask);
|
|
}
|
|
|
|
// verifies that the messages above are printed as a test script is executed.
|
|
Future<TaskResult> createFlutterRunTask() async {
|
|
bool passedTest = false;
|
|
bool failedTest = false;
|
|
bool skippedTest = false;
|
|
bool finishedMessage = false;
|
|
final Device device = await devices.workingDevice;
|
|
await device.unlock();
|
|
final List<String> options = <String>[
|
|
'-t', runTestSource.absolute.path, '-d', device.deviceId,
|
|
];
|
|
await inDirectory<void>(flutterGalleryDir, () async {
|
|
startProcess(
|
|
path.join(flutterDirectory.path, 'bin', 'flutter'),
|
|
flutterCommandArgs('run', options),
|
|
environment: null,
|
|
);
|
|
final Completer<void> finished = Completer<void>();
|
|
final StreamSubscription<void> subscription = device.logcat.listen((String line) {
|
|
// tests execute in order.
|
|
if (line.contains(passedMessageMatch)) {
|
|
passedTest = true;
|
|
} else if (line.contains(failedMessageMatch)) {
|
|
failedTest = true;
|
|
} else if (line.contains(skippedMessageMatch)) {
|
|
skippedTest = true;
|
|
} else if (line.contains(finishedMessageMatch)) {
|
|
finishedMessage = true;
|
|
finished.complete();
|
|
}
|
|
});
|
|
await finished.future.timeout(const Duration(minutes: 1));
|
|
subscription.cancel();
|
|
});
|
|
return passedTest && failedTest && skippedTest && finishedMessage
|
|
? TaskResult.success(<String, dynamic>{})
|
|
: TaskResult.failure('Test did not execute as expected.');
|
|
}
|
|
|