mirror of
https://github.com/flutter/packages.git
synced 2025-06-28 13:47:29 +08:00
[tool] Add command aliases (#4207)
Adds aliases for all commands that put the verb first, since currently they are inconsistent which can make it hard to remember (in particular, I often write `check-foo` instead of `foo-check` when running locally, and it fails). Also does the long-overdue renaming of `test` to `dart-test`, since we now have `native-test`, `custom-test`, etc. `test` continues to work as an alias for individual muscle memory.
This commit is contained in:
@ -28,6 +28,9 @@ class CustomTestCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'custom-test';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['test-custom'];
|
||||
|
||||
@override
|
||||
final String description = 'Runs package-specific custom tests defined in '
|
||||
"a package's tool/$_scriptName file.\n\n"
|
||||
|
@ -12,9 +12,9 @@ import 'common/process_runner.dart';
|
||||
import 'common/repository_package.dart';
|
||||
|
||||
/// A command to run Dart unit tests for packages.
|
||||
class TestCommand extends PackageLoopingCommand {
|
||||
class DartTestCommand extends PackageLoopingCommand {
|
||||
/// Creates an instance of the test command.
|
||||
TestCommand(
|
||||
DartTestCommand(
|
||||
Directory packagesDir, {
|
||||
ProcessRunner processRunner = const ProcessRunner(),
|
||||
Platform platform = const LocalPlatform(),
|
||||
@ -30,7 +30,13 @@ class TestCommand extends PackageLoopingCommand {
|
||||
}
|
||||
|
||||
@override
|
||||
final String name = 'test';
|
||||
final String name = 'dart-test';
|
||||
|
||||
// TODO(stuartmorgan): Eventually remove 'test', which is a legacy name from
|
||||
// before there were other test commands that made it ambiguous. For now it's
|
||||
// an alias to avoid breaking people's workflows.
|
||||
@override
|
||||
List<String> get aliases => <String>['test', 'test-dart'];
|
||||
|
||||
@override
|
||||
final String description = 'Runs the Dart tests for all packages.\n\n'
|
@ -32,6 +32,9 @@ class DependabotCheckCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'dependabot-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['check-dependabot'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Checks that all packages have Dependabot coverage.';
|
||||
|
@ -52,6 +52,9 @@ class FederationSafetyCheckCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'federation-safety-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['check-federation-safety'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Checks that the change does not violate repository rules around changes '
|
||||
|
@ -23,6 +23,9 @@ class GradleCheckCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'gradle-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['check-gradle'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Checks that gradle files follow repository conventions.';
|
||||
|
@ -114,6 +114,9 @@ class LicenseCheckCommand extends PackageCommand {
|
||||
@override
|
||||
final String name = 'license-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['check-license'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Ensures that all code files have copyright/license blocks.';
|
||||
|
@ -13,6 +13,7 @@ import 'build_examples_command.dart';
|
||||
import 'common/core.dart';
|
||||
import 'create_all_packages_app_command.dart';
|
||||
import 'custom_test_command.dart';
|
||||
import 'dart_test_command.dart';
|
||||
import 'dependabot_check_command.dart';
|
||||
import 'drive_examples_command.dart';
|
||||
import 'federation_safety_check_command.dart';
|
||||
@ -31,7 +32,6 @@ import 'publish_command.dart';
|
||||
import 'pubspec_check_command.dart';
|
||||
import 'readme_check_command.dart';
|
||||
import 'remove_dev_dependencies_command.dart';
|
||||
import 'test_command.dart';
|
||||
import 'update_dependency_command.dart';
|
||||
import 'update_excerpts_command.dart';
|
||||
import 'update_min_sdk_command.dart';
|
||||
@ -80,7 +80,7 @@ void main(List<String> args) {
|
||||
..addCommand(PubspecCheckCommand(packagesDir))
|
||||
..addCommand(ReadmeCheckCommand(packagesDir))
|
||||
..addCommand(RemoveDevDependenciesCommand(packagesDir))
|
||||
..addCommand(TestCommand(packagesDir))
|
||||
..addCommand(DartTestCommand(packagesDir))
|
||||
..addCommand(UpdateDependencyCommand(packagesDir))
|
||||
..addCommand(UpdateExcerptsCommand(packagesDir))
|
||||
..addCommand(UpdateMinSdkCommand(packagesDir))
|
||||
|
@ -73,6 +73,9 @@ class NativeTestCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'native-test';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['test-native'];
|
||||
|
||||
@override
|
||||
final String description = '''
|
||||
Runs native unit tests and native integration tests.
|
||||
|
@ -31,7 +31,7 @@ class PodspecCheckCommand extends PackageLoopingCommand {
|
||||
final String name = 'podspec-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['podspec', 'podspecs'];
|
||||
List<String> get aliases => <String>['podspec', 'podspecs', 'check-podspec'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
|
@ -53,6 +53,9 @@ class PublishCheckCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'publish-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['check-publish'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Checks to make sure that a package *could* be published.';
|
||||
|
@ -89,6 +89,9 @@ class PubspecCheckCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'pubspec-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['check-pubspec'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Checks that pubspecs follow repository conventions.';
|
||||
@ -104,8 +107,8 @@ class PubspecCheckCommand extends PackageLoopingCommand {
|
||||
Future<void> initializeRun() async {
|
||||
// Find all local, published packages.
|
||||
for (final File pubspecFile in (await packagesDir.parent
|
||||
.list(recursive: true, followLinks: false)
|
||||
.toList())
|
||||
.list(recursive: true, followLinks: false)
|
||||
.toList())
|
||||
.whereType<File>()
|
||||
.where((File entity) => p.basename(entity.path) == 'pubspec.yaml')) {
|
||||
final Pubspec? pubspec = _tryParsePubspec(pubspecFile.readAsStringSync());
|
||||
|
@ -48,6 +48,9 @@ class ReadmeCheckCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'readme-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['check-readme'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Checks that READMEs follow repository conventions.';
|
||||
|
@ -171,6 +171,9 @@ class VersionCheckCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'version-check';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['check-version'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Checks if the versions of packages have been incremented per pub specification.\n'
|
||||
|
@ -42,6 +42,9 @@ class XcodeAnalyzeCommand extends PackageLoopingCommand {
|
||||
@override
|
||||
final String name = 'xcode-analyze';
|
||||
|
||||
@override
|
||||
List<String> get aliases => <String>['analyze-xcode'];
|
||||
|
||||
@override
|
||||
final String description =
|
||||
'Runs Xcode analysis on the iOS and/or macOS example apps.';
|
||||
|
@ -7,7 +7,7 @@ import 'package:file/file.dart';
|
||||
import 'package:file/memory.dart';
|
||||
import 'package:flutter_plugin_tools/src/common/core.dart';
|
||||
import 'package:flutter_plugin_tools/src/common/plugin_utils.dart';
|
||||
import 'package:flutter_plugin_tools/src/test_command.dart';
|
||||
import 'package:flutter_plugin_tools/src/dart_test_command.dart';
|
||||
import 'package:platform/platform.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
@ -27,23 +27,38 @@ void main() {
|
||||
mockPlatform = MockPlatform();
|
||||
packagesDir = createPackagesDirectory(fileSystem: fileSystem);
|
||||
processRunner = RecordingProcessRunner();
|
||||
final TestCommand command = TestCommand(
|
||||
final DartTestCommand command = DartTestCommand(
|
||||
packagesDir,
|
||||
processRunner: processRunner,
|
||||
platform: mockPlatform,
|
||||
);
|
||||
|
||||
runner = CommandRunner<void>('test_test', 'Test for $TestCommand');
|
||||
runner = CommandRunner<void>('test_test', 'Test for $DartTestCommand');
|
||||
runner.addCommand(command);
|
||||
});
|
||||
|
||||
test('legacy "test" name still works', () async {
|
||||
final RepositoryPackage plugin = createFakePlugin('a_plugin', packagesDir,
|
||||
extraFiles: <String>['test/a_test.dart']);
|
||||
|
||||
await runCapturingPrint(runner, <String>['test']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
||||
orderedEquals(<ProcessCall>[
|
||||
ProcessCall(getFlutterCommand(mockPlatform),
|
||||
const <String>['test', '--color'], plugin.path),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
test('runs flutter test on each plugin', () async {
|
||||
final RepositoryPackage plugin1 = createFakePlugin('plugin1', packagesDir,
|
||||
extraFiles: <String>['test/empty_test.dart']);
|
||||
final RepositoryPackage plugin2 = createFakePlugin('plugin2', packagesDir,
|
||||
extraFiles: <String>['test/empty_test.dart']);
|
||||
|
||||
await runCapturingPrint(runner, <String>['test']);
|
||||
await runCapturingPrint(runner, <String>['dart-test']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
||||
@ -63,7 +78,7 @@ void main() {
|
||||
'example/test/an_example_test.dart'
|
||||
]);
|
||||
|
||||
await runCapturingPrint(runner, <String>['test']);
|
||||
await runCapturingPrint(runner, <String>['dart-test']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
||||
@ -86,13 +101,13 @@ void main() {
|
||||
.mockProcessesForExecutable[getFlutterCommand(mockPlatform)] =
|
||||
<FakeProcessInfo>[
|
||||
FakeProcessInfo(
|
||||
MockProcess(exitCode: 1), <String>['test']), // plugin 1 test
|
||||
FakeProcessInfo(MockProcess(), <String>['test']), // plugin 2 test
|
||||
MockProcess(exitCode: 1), <String>['dart-test']), // plugin 1 test
|
||||
FakeProcessInfo(MockProcess(), <String>['dart-test']), // plugin 2 test
|
||||
];
|
||||
|
||||
Error? commandError;
|
||||
final List<String> output = await runCapturingPrint(
|
||||
runner, <String>['test'], errorHandler: (Error e) {
|
||||
runner, <String>['dart-test'], errorHandler: (Error e) {
|
||||
commandError = e;
|
||||
});
|
||||
|
||||
@ -110,7 +125,7 @@ void main() {
|
||||
final RepositoryPackage plugin2 = createFakePlugin('plugin2', packagesDir,
|
||||
extraFiles: <String>['test/empty_test.dart']);
|
||||
|
||||
await runCapturingPrint(runner, <String>['test']);
|
||||
await runCapturingPrint(runner, <String>['dart-test']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
||||
@ -128,7 +143,7 @@ void main() {
|
||||
extraFiles: <String>['test/empty_test.dart']);
|
||||
|
||||
await runCapturingPrint(
|
||||
runner, <String>['test', '--enable-experiment=exp1']);
|
||||
runner, <String>['dart-test', '--enable-experiment=exp1']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
||||
@ -153,7 +168,7 @@ void main() {
|
||||
'example/test/an_example_test.dart'
|
||||
]);
|
||||
|
||||
await runCapturingPrint(runner, <String>['test']);
|
||||
await runCapturingPrint(runner, <String>['dart-test']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
||||
@ -178,7 +193,7 @@ void main() {
|
||||
|
||||
Error? commandError;
|
||||
final List<String> output = await runCapturingPrint(
|
||||
runner, <String>['test'], errorHandler: (Error e) {
|
||||
runner, <String>['dart-test'], errorHandler: (Error e) {
|
||||
commandError = e;
|
||||
});
|
||||
|
||||
@ -203,7 +218,7 @@ void main() {
|
||||
|
||||
Error? commandError;
|
||||
final List<String> output = await runCapturingPrint(
|
||||
runner, <String>['test'], errorHandler: (Error e) {
|
||||
runner, <String>['dart-test'], errorHandler: (Error e) {
|
||||
commandError = e;
|
||||
});
|
||||
|
||||
@ -226,7 +241,7 @@ void main() {
|
||||
},
|
||||
);
|
||||
|
||||
await runCapturingPrint(runner, <String>['test']);
|
||||
await runCapturingPrint(runner, <String>['dart-test']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
||||
@ -249,7 +264,7 @@ void main() {
|
||||
},
|
||||
);
|
||||
|
||||
await runCapturingPrint(runner, <String>['test']);
|
||||
await runCapturingPrint(runner, <String>['dart-test']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
||||
@ -267,7 +282,7 @@ void main() {
|
||||
extraFiles: <String>['test/empty_test.dart']);
|
||||
|
||||
await runCapturingPrint(
|
||||
runner, <String>['test', '--enable-experiment=exp1']);
|
||||
runner, <String>['dart-test', '--enable-experiment=exp1']);
|
||||
|
||||
expect(
|
||||
processRunner.recordedCalls,
|
Reference in New Issue
Block a user