mirror of
https://github.com/flutter/packages.git
synced 2025-06-10 06:44:40 +08:00

Removes the `build_all_plugins_app.sh` bash script, in support of the goal of eliminating all use of bash from the repository (for maintainability, and for better Windows compatibility). - The exclusion list moves to a config file, match other recent repo changes - The exclusion logging moves into the tool itself, consistent with the tool doing more logging of skipped and excluded plugins - The bulk of the logic moves to a Cirrus task template. This was done instead of rewriting the script in Dart, even though it will mean more work for alternate CI support (e.g., bringing this up on a Windows LUCI bot), because breaking it into components makes it easier to pinpoint failures from the CI UI rather than having all the steps smashed together.
119 lines
4.0 KiB
Dart
119 lines
4.0 KiB
Dart
// Copyright 2013 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:file/file.dart';
|
|
import 'package:file/local.dart';
|
|
import 'package:flutter_plugin_tools/src/create_all_plugins_app_command.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import 'util.dart';
|
|
|
|
void main() {
|
|
group('$CreateAllPluginsAppCommand', () {
|
|
late CommandRunner<void> runner;
|
|
late CreateAllPluginsAppCommand command;
|
|
late FileSystem fileSystem;
|
|
late Directory testRoot;
|
|
late Directory packagesDir;
|
|
|
|
setUp(() {
|
|
// Since the core of this command is a call to 'flutter create', the test
|
|
// has to use the real filesystem. Put everything possible in a unique
|
|
// temporary to minimize affect on the host system.
|
|
fileSystem = const LocalFileSystem();
|
|
testRoot = fileSystem.systemTempDirectory.createTempSync();
|
|
packagesDir = testRoot.childDirectory('packages');
|
|
|
|
command = CreateAllPluginsAppCommand(
|
|
packagesDir,
|
|
pluginsRoot: testRoot,
|
|
);
|
|
runner = CommandRunner<void>(
|
|
'create_all_test', 'Test for $CreateAllPluginsAppCommand');
|
|
runner.addCommand(command);
|
|
});
|
|
|
|
tearDown(() {
|
|
testRoot.deleteSync(recursive: true);
|
|
});
|
|
|
|
test('pubspec includes all plugins', () async {
|
|
createFakePlugin('plugina', packagesDir);
|
|
createFakePlugin('pluginb', packagesDir);
|
|
createFakePlugin('pluginc', packagesDir);
|
|
|
|
await runCapturingPrint(runner, <String>['all-plugins-app']);
|
|
final List<String> pubspec =
|
|
command.appDirectory.childFile('pubspec.yaml').readAsLinesSync();
|
|
|
|
expect(
|
|
pubspec,
|
|
containsAll(<Matcher>[
|
|
contains(RegExp('path: .*/packages/plugina')),
|
|
contains(RegExp('path: .*/packages/pluginb')),
|
|
contains(RegExp('path: .*/packages/pluginc')),
|
|
]));
|
|
});
|
|
|
|
test('pubspec has overrides for all plugins', () async {
|
|
createFakePlugin('plugina', packagesDir);
|
|
createFakePlugin('pluginb', packagesDir);
|
|
createFakePlugin('pluginc', packagesDir);
|
|
|
|
await runCapturingPrint(runner, <String>['all-plugins-app']);
|
|
final List<String> pubspec =
|
|
command.appDirectory.childFile('pubspec.yaml').readAsLinesSync();
|
|
|
|
expect(
|
|
pubspec,
|
|
containsAllInOrder(<Matcher>[
|
|
contains('dependency_overrides:'),
|
|
contains(RegExp('path: .*/packages/plugina')),
|
|
contains(RegExp('path: .*/packages/pluginb')),
|
|
contains(RegExp('path: .*/packages/pluginc')),
|
|
]));
|
|
});
|
|
|
|
test('pubspec is compatible with null-safe app code', () async {
|
|
createFakePlugin('plugina', packagesDir);
|
|
|
|
await runCapturingPrint(runner, <String>['all-plugins-app']);
|
|
final String pubspec =
|
|
command.appDirectory.childFile('pubspec.yaml').readAsStringSync();
|
|
|
|
expect(pubspec, contains(RegExp('sdk:\\s*(?:["\']>=|[^])2\\.12\\.')));
|
|
});
|
|
|
|
test('handles --output-dir', () async {
|
|
createFakePlugin('plugina', packagesDir);
|
|
|
|
final Directory customOutputDir =
|
|
fileSystem.systemTempDirectory.createTempSync();
|
|
await runCapturingPrint(runner,
|
|
<String>['all-plugins-app', '--output-dir=${customOutputDir.path}']);
|
|
|
|
expect(command.appDirectory.path,
|
|
customOutputDir.childDirectory('all_plugins').path);
|
|
});
|
|
|
|
test('logs exclusions', () async {
|
|
createFakePlugin('plugina', packagesDir);
|
|
createFakePlugin('pluginb', packagesDir);
|
|
createFakePlugin('pluginc', packagesDir);
|
|
|
|
final List<String> output = await runCapturingPrint(
|
|
runner, <String>['all-plugins-app', '--exclude=pluginb,pluginc']);
|
|
|
|
expect(
|
|
output,
|
|
containsAllInOrder(<String>[
|
|
'Exluding the following plugins from the combined build:',
|
|
' pluginb',
|
|
' pluginc',
|
|
]));
|
|
});
|
|
});
|
|
}
|