mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
81 lines
3.3 KiB
Dart
81 lines
3.3 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 'package:args/command_runner.dart';
|
|
|
|
import 'package:flutter_devicelab/framework/runner.dart';
|
|
|
|
class TestCommand extends Command<void> {
|
|
TestCommand() {
|
|
argParser.addOption('task',
|
|
abbr: 't',
|
|
help: 'The name of a task listed under bin/tasks.\n'
|
|
' Example: complex_layout__start_up.\n');
|
|
argParser.addMultiOption('task-args',
|
|
help: 'The name of a task listed under bin/tasks.\n'
|
|
'For example, "--task-args build" is passed as "bin/task/task.dart --build"');
|
|
argParser.addOption(
|
|
'device-id',
|
|
abbr: 'd',
|
|
help: 'Target device id (prefixes are allowed, names are not supported).\n'
|
|
'The option will be ignored if the test target does not run on a\n'
|
|
'mobile device. This still respects the device operating system\n'
|
|
'settings in the test case, and will results in error if no device\n'
|
|
'with given ID/ID prefix is found.',
|
|
);
|
|
argParser.addOption(
|
|
'git-branch',
|
|
help: '[Flutter infrastructure] Git branch of the current commit. LUCI\n'
|
|
'checkouts run in detached HEAD state, so the branch must be passed.',
|
|
);
|
|
argParser.addOption(
|
|
'local-engine',
|
|
help: 'Name of a build output within the engine out directory, if you\n'
|
|
'are building Flutter locally. Use this to select a specific\n'
|
|
'version of the engine if you have built multiple engine targets.\n'
|
|
'This path is relative to --local-engine-src-path/out. This option\n'
|
|
'is required when running an A/B test (see the --ab option).',
|
|
);
|
|
argParser.addOption(
|
|
'local-engine-src-path',
|
|
help: 'Path to your engine src directory, if you are building Flutter\n'
|
|
'locally. Defaults to \$FLUTTER_ENGINE if set, or tries to guess at\n'
|
|
'the location based on the value of the --flutter-root option.',
|
|
);
|
|
argParser.addOption('luci-builder', help: '[Flutter infrastructure] Name of the LUCI builder being run on.');
|
|
argParser.addOption('results-file',
|
|
help: '[Flutter infrastructure] File path for test results. If passed with\n'
|
|
'task, will write test results to the file.');
|
|
argParser.addFlag(
|
|
'silent',
|
|
negatable: true,
|
|
defaultsTo: false,
|
|
);
|
|
}
|
|
|
|
@override
|
|
String get name => 'test';
|
|
|
|
@override
|
|
String get description => 'Run Flutter DeviceLab test';
|
|
|
|
@override
|
|
Future<void> run() async {
|
|
final List<String> taskArgsRaw = argResults['task-args'] as List<String>;
|
|
// Prepend '--' to convert args to options when passed to task
|
|
final List<String> taskArgs = taskArgsRaw.map((String taskArg) => '--$taskArg').toList();
|
|
print(taskArgs);
|
|
await runTasks(
|
|
<String>[argResults['task'] as String],
|
|
deviceId: argResults['device-id'] as String,
|
|
gitBranch: argResults['git-branch'] as String,
|
|
localEngine: argResults['local-engine'] as String,
|
|
localEngineSrcPath: argResults['local-engine-src-path'] as String,
|
|
luciBuilder: argResults['luci-builder'] as String,
|
|
resultsPath: argResults['results-file'] as String,
|
|
silent: argResults['silent'] as bool,
|
|
taskArgs: taskArgs,
|
|
);
|
|
}
|
|
} |