Files
packages/script/tool/test/create_all_plugins_app_command_test.dart
stuartmorgan bb0a1ea161 [flutter_plugin_tools] Simplify filesystem usage (#4014)
- Replaces most explicit use of `fileSystem` with path construction using the `child*` utility methods
- Removes explicit passing of a filesystem to the commands; we're already passing a `Directory` for the
  root where the tool operates, and we should never be using a different filesystem than that directory's
  filesystem, so passing it was both redundant, and a potential source of test bugs.
2021-06-05 13:32:24 -04:00

93 lines
3.1 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.
// @dart=2.9
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', () {
CommandRunner<void> runner;
FileSystem fileSystem;
Directory testRoot;
Directory packagesDir;
Directory appDir;
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');
final CreateAllPluginsAppCommand command = CreateAllPluginsAppCommand(
packagesDir,
pluginsRoot: testRoot,
);
appDir = command.appDirectory;
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', packagesDirectory: packagesDir);
createFakePlugin('pluginb', packagesDirectory: packagesDir);
createFakePlugin('pluginc', packagesDirectory: packagesDir);
await runner.run(<String>['all-plugins-app']);
final List<String> pubspec =
appDir.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', packagesDirectory: packagesDir);
createFakePlugin('pluginb', packagesDirectory: packagesDir);
createFakePlugin('pluginc', packagesDirectory: packagesDir);
await runner.run(<String>['all-plugins-app']);
final List<String> pubspec =
appDir.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', packagesDirectory: packagesDir);
await runner.run(<String>['all-plugins-app']);
final String pubspec =
appDir.childFile('pubspec.yaml').readAsStringSync();
expect(pubspec, contains(RegExp('sdk:\\s*(?:["\']>=|[^])2\\.12\\.')));
});
});
}