| import 'package:args/command_runner.dart'; |
| import 'package:file/file.dart'; |
| import 'package:flutter_plugin_tools/src/common.dart'; |
| import 'package:test/test.dart'; |
| |
| import 'util.dart'; |
| |
| void main() { |
| RecordingProcessRunner processRunner; |
| CommandRunner runner; |
| List<String> plugins; |
| |
| setUp(() { |
| initializeFakePackages(); |
| processRunner = RecordingProcessRunner(); |
| plugins = []; |
| final SamplePluginCommand samplePluginCommand = SamplePluginCommand( |
| plugins, |
| mockPackagesDir, |
| mockFileSystem, |
| processRunner: processRunner, |
| ); |
| runner = |
| CommandRunner<Null>('common_command', 'Test for common functionality'); |
| runner.addCommand(samplePluginCommand); |
| }); |
| |
| tearDown(() { |
| mockPackagesDir.deleteSync(recursive: true); |
| }); |
| |
| test('all plugins from file system', () async { |
| final Directory plugin1 = createFakePlugin('plugin1'); |
| final Directory plugin2 = createFakePlugin('plugin2'); |
| await runner.run(<String>['sample']); |
| expect(plugins, unorderedEquals(<String>[plugin1.path, plugin2.path])); |
| }); |
| |
| test('exclude plugins when plugins flag is specified', () async { |
| createFakePlugin('plugin1'); |
| final Directory plugin2 = createFakePlugin('plugin2'); |
| await runner.run( |
| <String>['sample', '--plugins=plugin1,plugin2', '--exclude=plugin1']); |
| expect(plugins, unorderedEquals(<String>[plugin2.path])); |
| }); |
| |
| test('exclude plugins when plugins flag isn\'t specified', () async { |
| createFakePlugin('plugin1'); |
| createFakePlugin('plugin2'); |
| await runner.run(<String>['sample', '--exclude=plugin1,plugin2']); |
| expect(plugins, unorderedEquals(<String>[])); |
| }); |
| |
| test('exclude federated plugins when plugins flag is specified', () async { |
| createFakePlugin('plugin1', parentDirectoryName: 'federated'); |
| final Directory plugin2 = createFakePlugin('plugin2'); |
| await runner.run(<String>[ |
| 'sample', |
| '--plugins=federated/plugin1,plugin2', |
| '--exclude=federated/plugin1' |
| ]); |
| expect(plugins, unorderedEquals(<String>[plugin2.path])); |
| }); |
| |
| test('exclude entire federated plugins when plugins flag is specified', |
| () async { |
| createFakePlugin('plugin1', parentDirectoryName: 'federated'); |
| final Directory plugin2 = createFakePlugin('plugin2'); |
| await runner.run(<String>[ |
| 'sample', |
| '--plugins=federated/plugin1,plugin2', |
| '--exclude=federated' |
| ]); |
| expect(plugins, unorderedEquals(<String>[plugin2.path])); |
| }); |
| } |
| |
| class SamplePluginCommand extends PluginCommand { |
| SamplePluginCommand( |
| this.plugins_, |
| Directory packagesDir, |
| FileSystem fileSystem, { |
| ProcessRunner processRunner = const ProcessRunner(), |
| }) : super(packagesDir, fileSystem, processRunner: processRunner); |
| |
| List<String> plugins_; |
| |
| @override |
| final String name = 'sample'; |
| |
| @override |
| final String description = 'sample command'; |
| |
| @override |
| Future<Null> run() async { |
| await for (Directory package in getPlugins()) { |
| this.plugins_.add(package.path); |
| } |
| } |
| } |