Skip to content

Commit

Permalink
[tool] Add command aliases (#4207)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
stuartmorgan committed Jun 16, 2023
1 parent 754405d commit 59d93d6
Show file tree
Hide file tree
Showing 17 changed files with 81 additions and 27 deletions.
2 changes: 1 addition & 1 deletion .ci/scripts/dart_unit_tests_win32.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
# found in the LICENSE file.
set -e

dart ./script/tool/bin/flutter_plugin_tools.dart test \
dart ./script/tool/bin/flutter_plugin_tools.dart dart-test \
--exclude=script/configs/windows_unit_tests_exceptions.yaml \
--packages-for-branch --log-timing
4 changes: 2 additions & 2 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -231,13 +231,13 @@ task:
CHANNEL: "master"
CHANNEL: "stable"
unit_test_script:
- ./script/tool_runner.sh test --exclude=script/configs/dart_unit_tests_exceptions.yaml
- ./script/tool_runner.sh dart-test --exclude=script/configs/dart_unit_tests_exceptions.yaml
pathified_unit_test_script:
# Run tests with path-based dependencies to ensure that publishing
# the changes won't break tests of other packages in the repository
# that depend on it.
- ./script/tool_runner.sh make-deps-path-based --target-dependencies-with-non-breaking-updates
- $PLUGIN_TOOL_COMMAND test --run-on-dirty-packages --exclude=script/configs/dart_unit_tests_exceptions.yaml
- $PLUGIN_TOOL_COMMAND dart-test --run-on-dirty-packages --exclude=script/configs/dart_unit_tests_exceptions.yaml
- name: linux-custom_package_tests
env:
PATH: $PATH:/usr/local/bin
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/custom_test_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand All @@ -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'
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/dependabot_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.';
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/federation_safety_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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 '
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/gradle_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.';
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/license_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.';
Expand Down
4 changes: 2 additions & 2 deletions script/tool/lib/src/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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';
Expand Down Expand Up @@ -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))
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/native_test_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion script/tool/lib/src/podspec_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/publish_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.';
Expand Down
7 changes: 5 additions & 2 deletions script/tool/lib/src/pubspec_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.';
Expand All @@ -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());
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/readme_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.';
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/version_check_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
3 changes: 3 additions & 0 deletions script/tool/lib/src/xcode_analyze_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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.';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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;
});

Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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;
});

Expand All @@ -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;
});

Expand All @@ -226,7 +241,7 @@ void main() {
},
);

await runCapturingPrint(runner, <String>['test']);
await runCapturingPrint(runner, <String>['dart-test']);

expect(
processRunner.recordedCalls,
Expand All @@ -249,7 +264,7 @@ void main() {
},
);

await runCapturingPrint(runner, <String>['test']);
await runCapturingPrint(runner, <String>['dart-test']);

expect(
processRunner.recordedCalls,
Expand All @@ -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,
Expand Down

0 comments on commit 59d93d6

Please sign in to comment.