From 81a6f66eeeb93eaf4591a359a1a61cc5fafb6b27 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Thu, 17 Jun 2021 13:29:03 -0700 Subject: [PATCH] [flutter_plugin_tool] Refactor createFakePlugin (#4064) --- .../tool/lib/src/build_examples_command.dart | 32 +-- script/tool/lib/src/common/core.dart | 12 +- script/tool/lib/src/common/plugin_utils.dart | 26 +- .../tool/lib/src/drive_examples_command.dart | 32 +-- script/tool/lib/src/xctest_command.dart | 8 +- script/tool/test/analyze_command_test.dart | 11 +- .../test/build_examples_command_test.dart | 174 ++++++------ .../tool/test/common/plugin_command_test.dart | 18 +- .../tool/test/common/plugin_utils_test.dart | 155 ++++++----- .../test/drive_examples_command_test.dart | 248 +++++++----------- script/tool/test/firebase_test_lab_test.dart | 6 +- script/tool/test/java_test_command_test.dart | 18 +- .../tool/test/lint_podspecs_command_test.dart | 24 +- script/tool/test/list_command_test.dart | 21 +- .../tool/test/publish_check_command_test.dart | 33 +-- .../test/publish_plugin_command_test.dart | 108 +++----- .../tool/test/pubspec_check_command_test.dart | 30 +-- script/tool/test/test_command_test.dart | 81 +++--- script/tool/test/util.dart | 181 ++++++------- script/tool/test/version_check_test.dart | 149 +++++------ script/tool/test/xctest_command_test.dart | 112 +++----- 21 files changed, 649 insertions(+), 830 deletions(-) diff --git a/script/tool/lib/src/build_examples_command.dart b/script/tool/lib/src/build_examples_command.dart index 61d291d87c..aff5ecba49 100644 --- a/script/tool/lib/src/build_examples_command.dart +++ b/script/tool/lib/src/build_examples_command.dart @@ -27,10 +27,10 @@ class BuildExamplesCommand extends PluginCommand { Directory packagesDir, { ProcessRunner processRunner = const ProcessRunner(), }) : super(packagesDir, processRunner: processRunner) { - argParser.addFlag(kPlatformFlagLinux, defaultsTo: false); - argParser.addFlag(kPlatformFlagMacos, defaultsTo: false); - argParser.addFlag(kPlatformFlagWeb, defaultsTo: false); - argParser.addFlag(kPlatformFlagWindows, defaultsTo: false); + argParser.addFlag(kPlatformLinux, defaultsTo: false); + argParser.addFlag(kPlatformMacos, defaultsTo: false); + argParser.addFlag(kPlatformWeb, defaultsTo: false); + argParser.addFlag(kPlatformWindows, defaultsTo: false); argParser.addFlag(kIpa, defaultsTo: io.Platform.isMacOS); argParser.addFlag(kApk); argParser.addOption( @@ -53,10 +53,10 @@ class BuildExamplesCommand extends PluginCommand { final List platformSwitches = [ kApk, kIpa, - kPlatformFlagLinux, - kPlatformFlagMacos, - kPlatformFlagWeb, - kPlatformFlagWindows, + kPlatformLinux, + kPlatformMacos, + kPlatformWeb, + kPlatformWindows, ]; if (!platformSwitches.any((String platform) => getBoolArg(platform))) { print( @@ -75,14 +75,14 @@ class BuildExamplesCommand extends PluginCommand { final String packageName = p.relative(example.path, from: packagesDir.path); - if (getBoolArg(kPlatformFlagLinux)) { + if (getBoolArg(kPlatformLinux)) { print('\nBUILDING Linux for $packageName'); if (isLinuxPlugin(plugin)) { final int buildExitCode = await processRunner.runAndStream( flutterCommand, [ 'build', - kPlatformFlagLinux, + kPlatformLinux, if (enableExperiment.isNotEmpty) '--enable-experiment=$enableExperiment', ], @@ -95,14 +95,14 @@ class BuildExamplesCommand extends PluginCommand { } } - if (getBoolArg(kPlatformFlagMacos)) { + if (getBoolArg(kPlatformMacos)) { print('\nBUILDING macOS for $packageName'); if (isMacOsPlugin(plugin)) { final int exitCode = await processRunner.runAndStream( flutterCommand, [ 'build', - kPlatformFlagMacos, + kPlatformMacos, if (enableExperiment.isNotEmpty) '--enable-experiment=$enableExperiment', ], @@ -115,14 +115,14 @@ class BuildExamplesCommand extends PluginCommand { } } - if (getBoolArg(kPlatformFlagWeb)) { + if (getBoolArg(kPlatformWeb)) { print('\nBUILDING web for $packageName'); if (isWebPlugin(plugin)) { final int buildExitCode = await processRunner.runAndStream( flutterCommand, [ 'build', - kPlatformFlagWeb, + kPlatformWeb, if (enableExperiment.isNotEmpty) '--enable-experiment=$enableExperiment', ], @@ -135,14 +135,14 @@ class BuildExamplesCommand extends PluginCommand { } } - if (getBoolArg(kPlatformFlagWindows)) { + if (getBoolArg(kPlatformWindows)) { print('\nBUILDING Windows for $packageName'); if (isWindowsPlugin(plugin)) { final int buildExitCode = await processRunner.runAndStream( flutterCommand, [ 'build', - kPlatformFlagWindows, + kPlatformWindows, if (enableExperiment.isNotEmpty) '--enable-experiment=$enableExperiment', ], diff --git a/script/tool/lib/src/common/core.dart b/script/tool/lib/src/common/core.dart index 4788b9fa91..1da6ef7a4c 100644 --- a/script/tool/lib/src/common/core.dart +++ b/script/tool/lib/src/common/core.dart @@ -11,22 +11,22 @@ import 'package:yaml/yaml.dart'; typedef Print = void Function(Object? object); /// Key for windows platform. -const String kPlatformFlagWindows = 'windows'; +const String kPlatformWindows = 'windows'; /// Key for macos platform. -const String kPlatformFlagMacos = 'macos'; +const String kPlatformMacos = 'macos'; /// Key for linux platform. -const String kPlatformFlagLinux = 'linux'; +const String kPlatformLinux = 'linux'; /// Key for IPA (iOS) platform. -const String kPlatformFlagIos = 'ios'; +const String kPlatformIos = 'ios'; /// Key for APK (Android) platform. -const String kPlatformFlagAndroid = 'android'; +const String kPlatformAndroid = 'android'; /// Key for Web platform. -const String kPlatformFlagWeb = 'web'; +const String kPlatformWeb = 'web'; /// Key for enable experiment. const String kEnableExperiment = 'enable-experiment'; diff --git a/script/tool/lib/src/common/plugin_utils.dart b/script/tool/lib/src/common/plugin_utils.dart index b6ac433db2..0277b78d56 100644 --- a/script/tool/lib/src/common/plugin_utils.dart +++ b/script/tool/lib/src/common/plugin_utils.dart @@ -29,12 +29,12 @@ enum PlatformSupport { /// implementation in order to return true. bool pluginSupportsPlatform(String platform, FileSystemEntity entity, {PlatformSupport? requiredMode}) { - assert(platform == kPlatformFlagIos || - platform == kPlatformFlagAndroid || - platform == kPlatformFlagWeb || - platform == kPlatformFlagMacos || - platform == kPlatformFlagWindows || - platform == kPlatformFlagLinux); + assert(platform == kPlatformIos || + platform == kPlatformAndroid || + platform == kPlatformWeb || + platform == kPlatformMacos || + platform == kPlatformWindows || + platform == kPlatformLinux); if (entity is! Directory) { return false; } @@ -59,7 +59,7 @@ bool pluginSupportsPlatform(String platform, FileSystemEntity entity, return false; } if (!pluginSection.containsKey('platforms')) { - return platform == kPlatformFlagIos || platform == kPlatformFlagAndroid; + return platform == kPlatformIos || platform == kPlatformAndroid; } return false; } @@ -81,30 +81,30 @@ bool pluginSupportsPlatform(String platform, FileSystemEntity entity, /// Returns whether the given directory contains a Flutter Android plugin. bool isAndroidPlugin(FileSystemEntity entity) { - return pluginSupportsPlatform(kPlatformFlagAndroid, entity); + return pluginSupportsPlatform(kPlatformAndroid, entity); } /// Returns whether the given directory contains a Flutter iOS plugin. bool isIosPlugin(FileSystemEntity entity) { - return pluginSupportsPlatform(kPlatformFlagIos, entity); + return pluginSupportsPlatform(kPlatformIos, entity); } /// Returns whether the given directory contains a Flutter web plugin. bool isWebPlugin(FileSystemEntity entity) { - return pluginSupportsPlatform(kPlatformFlagWeb, entity); + return pluginSupportsPlatform(kPlatformWeb, entity); } /// Returns whether the given directory contains a Flutter Windows plugin. bool isWindowsPlugin(FileSystemEntity entity) { - return pluginSupportsPlatform(kPlatformFlagWindows, entity); + return pluginSupportsPlatform(kPlatformWindows, entity); } /// Returns whether the given directory contains a Flutter macOS plugin. bool isMacOsPlugin(FileSystemEntity entity) { - return pluginSupportsPlatform(kPlatformFlagMacos, entity); + return pluginSupportsPlatform(kPlatformMacos, entity); } /// Returns whether the given directory contains a Flutter linux plugin. bool isLinuxPlugin(FileSystemEntity entity) { - return pluginSupportsPlatform(kPlatformFlagLinux, entity); + return pluginSupportsPlatform(kPlatformLinux, entity); } diff --git a/script/tool/lib/src/drive_examples_command.dart b/script/tool/lib/src/drive_examples_command.dart index b6576cd13b..8a8cd6726d 100644 --- a/script/tool/lib/src/drive_examples_command.dart +++ b/script/tool/lib/src/drive_examples_command.dart @@ -18,17 +18,17 @@ class DriveExamplesCommand extends PluginCommand { Directory packagesDir, { ProcessRunner processRunner = const ProcessRunner(), }) : super(packagesDir, processRunner: processRunner) { - argParser.addFlag(kPlatformFlagAndroid, + argParser.addFlag(kPlatformAndroid, help: 'Runs the Android implementation of the examples'); - argParser.addFlag(kPlatformFlagIos, + argParser.addFlag(kPlatformIos, help: 'Runs the iOS implementation of the examples'); - argParser.addFlag(kPlatformFlagLinux, + argParser.addFlag(kPlatformLinux, help: 'Runs the Linux implementation of the examples'); - argParser.addFlag(kPlatformFlagMacos, + argParser.addFlag(kPlatformMacos, help: 'Runs the macOS implementation of the examples'); - argParser.addFlag(kPlatformFlagWeb, + argParser.addFlag(kPlatformWeb, help: 'Runs the web implementation of the examples'); - argParser.addFlag(kPlatformFlagWindows, + argParser.addFlag(kPlatformWindows, help: 'Runs the Windows implementation of the examples'); argParser.addOption( kEnableExperiment, @@ -55,10 +55,10 @@ class DriveExamplesCommand extends PluginCommand { Future run() async { final List failingTests = []; final List pluginsWithoutTests = []; - final bool isLinux = getBoolArg(kPlatformFlagLinux); - final bool isMacos = getBoolArg(kPlatformFlagMacos); - final bool isWeb = getBoolArg(kPlatformFlagWeb); - final bool isWindows = getBoolArg(kPlatformFlagWindows); + final bool isLinux = getBoolArg(kPlatformLinux); + final bool isMacos = getBoolArg(kPlatformMacos); + final bool isWeb = getBoolArg(kPlatformWeb); + final bool isWindows = getBoolArg(kPlatformWindows); await for (final Directory plugin in getPlugins()) { final String pluginName = plugin.basename; if (pluginName.endsWith('_platform_interface') && @@ -222,12 +222,12 @@ Tried searching for the following: Future _pluginSupportedOnCurrentPlatform( FileSystemEntity plugin) async { - final bool isAndroid = getBoolArg(kPlatformFlagAndroid); - final bool isIOS = getBoolArg(kPlatformFlagIos); - final bool isLinux = getBoolArg(kPlatformFlagLinux); - final bool isMacos = getBoolArg(kPlatformFlagMacos); - final bool isWeb = getBoolArg(kPlatformFlagWeb); - final bool isWindows = getBoolArg(kPlatformFlagWindows); + final bool isAndroid = getBoolArg(kPlatformAndroid); + final bool isIOS = getBoolArg(kPlatformIos); + final bool isLinux = getBoolArg(kPlatformLinux); + final bool isMacos = getBoolArg(kPlatformMacos); + final bool isWeb = getBoolArg(kPlatformWeb); + final bool isWindows = getBoolArg(kPlatformWindows); if (isAndroid) { return isAndroidPlugin(plugin); } diff --git a/script/tool/lib/src/xctest_command.dart b/script/tool/lib/src/xctest_command.dart index 77e5659df3..741aa9d728 100644 --- a/script/tool/lib/src/xctest_command.dart +++ b/script/tool/lib/src/xctest_command.dart @@ -37,8 +37,8 @@ class XCTestCommand extends PluginCommand { 'this is passed to the `-destination` argument in xcodebuild command.\n' 'See https://developer.apple.com/library/archive/technotes/tn2339/_index.html#//apple_ref/doc/uid/DTS40014588-CH1-UNIT for details on how to specify the destination.', ); - argParser.addFlag(kPlatformFlagIos, help: 'Runs the iOS tests'); - argParser.addFlag(kPlatformFlagMacos, help: 'Runs the macOS tests'); + argParser.addFlag(kPlatformIos, help: 'Runs the iOS tests'); + argParser.addFlag(kPlatformMacos, help: 'Runs the macOS tests'); } @override @@ -51,8 +51,8 @@ class XCTestCommand extends PluginCommand { @override Future run() async { - final bool testIos = getBoolArg(kPlatformFlagIos); - final bool testMacos = getBoolArg(kPlatformFlagMacos); + final bool testIos = getBoolArg(kPlatformIos); + final bool testMacos = getBoolArg(kPlatformMacos); if (!(testIos || testMacos)) { print('At least one platform flag must be provided.'); diff --git a/script/tool/test/analyze_command_test.dart b/script/tool/test/analyze_command_test.dart index 1ef4fdc44b..84e3478f78 100644 --- a/script/tool/test/analyze_command_test.dart +++ b/script/tool/test/analyze_command_test.dart @@ -53,8 +53,7 @@ void main() { }); test('skips flutter pub get for examples', () async { - final Directory plugin1Dir = - createFakePlugin('a', packagesDir, withSingleExample: true); + final Directory plugin1Dir = createFakePlugin('a', packagesDir); final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(0); @@ -121,7 +120,7 @@ void main() { group('verifies analysis settings', () { test('fails analysis_options.yaml', () async { - createFakePlugin('foo', packagesDir, withExtraFiles: >[ + createFakePlugin('foo', packagesDir, extraFiles: >[ ['analysis_options.yaml'] ]); @@ -130,7 +129,7 @@ void main() { }); test('fails .analysis_options', () async { - createFakePlugin('foo', packagesDir, withExtraFiles: >[ + createFakePlugin('foo', packagesDir, extraFiles: >[ ['.analysis_options'] ]); @@ -140,7 +139,7 @@ void main() { test('takes an allow list', () async { final Directory pluginDir = - createFakePlugin('foo', packagesDir, withExtraFiles: >[ + createFakePlugin('foo', packagesDir, extraFiles: >[ ['analysis_options.yaml'] ]); @@ -161,7 +160,7 @@ void main() { // See: https://github.com/flutter/flutter/issues/78994 test('takes an empty allow list', () async { - createFakePlugin('foo', packagesDir, withExtraFiles: >[ + createFakePlugin('foo', packagesDir, extraFiles: >[ ['analysis_options.yaml'] ]); diff --git a/script/tool/test/build_examples_command_test.dart b/script/tool/test/build_examples_command_test.dart index 2ad17b374b..d3c51cfc4e 100644 --- a/script/tool/test/build_examples_command_test.dart +++ b/script/tool/test/build_examples_command_test.dart @@ -6,6 +6,8 @@ import 'package:args/command_runner.dart'; import 'package:file/file.dart'; import 'package:file/memory.dart'; import 'package:flutter_plugin_tools/src/build_examples_command.dart'; +import 'package:flutter_plugin_tools/src/common/core.dart'; +import 'package:flutter_plugin_tools/src/common/plugin_utils.dart'; import 'package:path/path.dart' as p; import 'package:platform/platform.dart'; import 'package:test/test.dart'; @@ -35,17 +37,14 @@ void main() { test('building for iOS when plugin is not set up for iOS results in no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isLinuxPlugin: false); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ]); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--ipa', '--no-macos']); final String packageName = @@ -67,17 +66,16 @@ void main() { }); test('building for ios', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isIosPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformIos: PlatformSupport.inline + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'build-examples', '--ipa', @@ -114,17 +112,14 @@ void main() { test( 'building for Linux when plugin is not set up for Linux results in no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isLinuxPlugin: false); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ]); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--no-ipa', '--linux']); final String packageName = @@ -146,17 +141,16 @@ void main() { }); test('building for Linux', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isLinuxPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformLinux: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--no-ipa', '--linux']); final String packageName = @@ -181,16 +175,14 @@ void main() { test('building for macos with no implementation results in no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ]); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ]); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--no-ipa', '--macos']); final String packageName = @@ -212,18 +204,17 @@ void main() { }); test('building for macos', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ['example', 'macos', 'macos.swift'], - ], - isMacOsPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ['example', 'macos', 'macos.swift'], + ], platformSupport: { + kPlatformMacos: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--no-ipa', '--macos']); final String packageName = @@ -247,16 +238,14 @@ void main() { }); test('building for web with no implementation results in no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ]); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ]); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--no-ipa', '--web']); final String packageName = @@ -278,18 +267,17 @@ void main() { }); test('building for web', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ['example', 'web', 'index.html'], - ], - isWebPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ['example', 'web', 'index.html'], + ], platformSupport: { + kPlatformWeb: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--no-ipa', '--web']); final String packageName = @@ -315,17 +303,14 @@ void main() { test( 'building for Windows when plugin is not set up for Windows results in no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isWindowsPlugin: false); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ]); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--no-ipa', '--windows']); final String packageName = @@ -347,17 +332,16 @@ void main() { }); test('building for windows', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isWindowsPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformWindows: PlatformSupport.inline + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--no-ipa', '--windows']); final String packageName = @@ -383,17 +367,14 @@ void main() { test( 'building for Android when plugin is not set up for Android results in no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isLinuxPlugin: false); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ]); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint( runner, ['build-examples', '--apk', '--no-ipa']); final String packageName = @@ -415,17 +396,16 @@ void main() { }); test('building for android', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isAndroidPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformAndroid: PlatformSupport.inline + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'build-examples', '--apk', @@ -453,17 +433,16 @@ void main() { }); test('enable-experiment flag for Android', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isAndroidPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformAndroid: PlatformSupport.inline + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - await runCapturingPrint(runner, [ 'build-examples', '--apk', @@ -483,17 +462,16 @@ void main() { }); test('enable-experiment flag for ios', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isIosPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformIos: PlatformSupport.inline + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - await runCapturingPrint(runner, [ 'build-examples', '--ipa', diff --git a/script/tool/test/common/plugin_command_test.dart b/script/tool/test/common/plugin_command_test.dart index 58d202e199..deb8e4f56e 100644 --- a/script/tool/test/common/plugin_command_test.dart +++ b/script/tool/test/common/plugin_command_test.dart @@ -95,8 +95,7 @@ void main() { }); test('exclude federated plugins when plugins flag is specified', () async { - createFakePlugin('plugin1', packagesDir, - parentDirectoryName: 'federated'); + createFakePlugin('plugin1', packagesDir.childDirectory('federated')); final Directory plugin2 = createFakePlugin('plugin2', packagesDir); await runner.run([ 'sample', @@ -108,8 +107,7 @@ void main() { test('exclude entire federated plugins when plugins flag is specified', () async { - createFakePlugin('plugin1', packagesDir, - parentDirectoryName: 'federated'); + createFakePlugin('plugin1', packagesDir.childDirectory('federated')); final Directory plugin2 = createFakePlugin('plugin2', packagesDir); await runner.run([ 'sample', @@ -303,8 +301,8 @@ packages/plugin1/plugin1/plugin1.dart packages/plugin1/plugin1_platform_interface/plugin1_platform_interface.dart packages/plugin1/plugin1_web/plugin1_web.dart '''; - final Directory plugin1 = createFakePlugin('plugin1', packagesDir, - parentDirectoryName: 'plugin1'); + final Directory plugin1 = + createFakePlugin('plugin1', packagesDir.childDirectory('plugin1')); createFakePlugin('plugin2', packagesDir); createFakePlugin('plugin3', packagesDir); await runner.run([ @@ -323,8 +321,8 @@ packages/plugin1/plugin1.dart packages/plugin2/ios/plugin2.m packages/plugin3/plugin3.dart '''; - final Directory plugin1 = createFakePlugin('plugin1', packagesDir, - parentDirectoryName: 'plugin1'); + final Directory plugin1 = + createFakePlugin('plugin1', packagesDir.childDirectory('plugin1')); final Directory plugin2 = createFakePlugin('plugin2', packagesDir); createFakePlugin('plugin3', packagesDir); await runner.run([ @@ -343,8 +341,8 @@ packages/plugin1/plugin1.dart packages/plugin2/ios/plugin2.m packages/plugin3/plugin3.dart '''; - final Directory plugin1 = createFakePlugin('plugin1', packagesDir, - parentDirectoryName: 'plugin1'); + final Directory plugin1 = + createFakePlugin('plugin1', packagesDir.childDirectory('plugin1')); createFakePlugin('plugin2', packagesDir); createFakePlugin('plugin3', packagesDir); await runner.run([ diff --git a/script/tool/test/common/plugin_utils_test.dart b/script/tool/test/common/plugin_utils_test.dart index aaa850155d..c32c3f8e02 100644 --- a/script/tool/test/common/plugin_utils_test.dart +++ b/script/tool/test/common/plugin_utils_test.dart @@ -4,6 +4,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:test/test.dart'; @@ -22,113 +23,112 @@ void main() { test('no platforms', () async { final Directory plugin = createFakePlugin('plugin', packagesDir); - expect(pluginSupportsPlatform('android', plugin), isFalse); - expect(pluginSupportsPlatform('ios', plugin), isFalse); - expect(pluginSupportsPlatform('linux', plugin), isFalse); - expect(pluginSupportsPlatform('macos', plugin), isFalse); - expect(pluginSupportsPlatform('web', plugin), isFalse); - expect(pluginSupportsPlatform('windows', plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformAndroid, plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformIos, plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformLinux, plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformMacos, plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformWeb, plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformWindows, plugin), isFalse); }); test('all platforms', () async { - final Directory plugin = createFakePlugin( - 'plugin', - packagesDir, - isAndroidPlugin: true, - isIosPlugin: true, - isLinuxPlugin: true, - isMacOsPlugin: true, - isWebPlugin: true, - isWindowsPlugin: true, - ); + final Directory plugin = createFakePlugin('plugin', packagesDir, + platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformIos: PlatformSupport.inline, + kPlatformLinux: PlatformSupport.inline, + kPlatformMacos: PlatformSupport.inline, + kPlatformWeb: PlatformSupport.inline, + kPlatformWindows: PlatformSupport.inline, + }); - expect(pluginSupportsPlatform('android', plugin), isTrue); - expect(pluginSupportsPlatform('ios', plugin), isTrue); - expect(pluginSupportsPlatform('linux', plugin), isTrue); - expect(pluginSupportsPlatform('macos', plugin), isTrue); - expect(pluginSupportsPlatform('web', plugin), isTrue); - expect(pluginSupportsPlatform('windows', plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformAndroid, plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformIos, plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformLinux, plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformMacos, plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformWeb, plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformWindows, plugin), isTrue); }); test('some platforms', () async { final Directory plugin = createFakePlugin( 'plugin', packagesDir, - isAndroidPlugin: true, - isIosPlugin: false, - isLinuxPlugin: true, - isMacOsPlugin: false, - isWebPlugin: true, - isWindowsPlugin: false, + platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformLinux: PlatformSupport.inline, + kPlatformWeb: PlatformSupport.inline, + }, ); - expect(pluginSupportsPlatform('android', plugin), isTrue); - expect(pluginSupportsPlatform('ios', plugin), isFalse); - expect(pluginSupportsPlatform('linux', plugin), isTrue); - expect(pluginSupportsPlatform('macos', plugin), isFalse); - expect(pluginSupportsPlatform('web', plugin), isTrue); - expect(pluginSupportsPlatform('windows', plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformAndroid, plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformIos, plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformLinux, plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformMacos, plugin), isFalse); + expect(pluginSupportsPlatform(kPlatformWeb, plugin), isTrue); + expect(pluginSupportsPlatform(kPlatformWindows, plugin), isFalse); }); test('inline plugins are only detected as inline', () async { - // createFakePlugin makes non-federated pubspec entries. final Directory plugin = createFakePlugin( 'plugin', packagesDir, - isAndroidPlugin: true, - isIosPlugin: true, - isLinuxPlugin: true, - isMacOsPlugin: true, - isWebPlugin: true, - isWindowsPlugin: true, + platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformIos: PlatformSupport.inline, + kPlatformLinux: PlatformSupport.inline, + kPlatformMacos: PlatformSupport.inline, + kPlatformWeb: PlatformSupport.inline, + kPlatformWindows: PlatformSupport.inline, + }, ); expect( - pluginSupportsPlatform('android', plugin, + pluginSupportsPlatform(kPlatformAndroid, plugin, requiredMode: PlatformSupport.inline), isTrue); expect( - pluginSupportsPlatform('android', plugin, + pluginSupportsPlatform(kPlatformAndroid, plugin, requiredMode: PlatformSupport.federated), isFalse); expect( - pluginSupportsPlatform('ios', plugin, + pluginSupportsPlatform(kPlatformIos, plugin, requiredMode: PlatformSupport.inline), isTrue); expect( - pluginSupportsPlatform('ios', plugin, + pluginSupportsPlatform(kPlatformIos, plugin, requiredMode: PlatformSupport.federated), isFalse); expect( - pluginSupportsPlatform('linux', plugin, + pluginSupportsPlatform(kPlatformLinux, plugin, requiredMode: PlatformSupport.inline), isTrue); expect( - pluginSupportsPlatform('linux', plugin, + pluginSupportsPlatform(kPlatformLinux, plugin, requiredMode: PlatformSupport.federated), isFalse); expect( - pluginSupportsPlatform('macos', plugin, + pluginSupportsPlatform(kPlatformMacos, plugin, requiredMode: PlatformSupport.inline), isTrue); expect( - pluginSupportsPlatform('macos', plugin, + pluginSupportsPlatform(kPlatformMacos, plugin, requiredMode: PlatformSupport.federated), isFalse); expect( - pluginSupportsPlatform('web', plugin, + pluginSupportsPlatform(kPlatformWeb, plugin, requiredMode: PlatformSupport.inline), isTrue); expect( - pluginSupportsPlatform('web', plugin, + pluginSupportsPlatform(kPlatformWeb, plugin, requiredMode: PlatformSupport.federated), isFalse); expect( - pluginSupportsPlatform('windows', plugin, + pluginSupportsPlatform(kPlatformWindows, plugin, requiredMode: PlatformSupport.inline), isTrue); expect( - pluginSupportsPlatform('windows', plugin, + pluginSupportsPlatform(kPlatformWindows, plugin, requiredMode: PlatformSupport.federated), isFalse); }); @@ -138,71 +138,62 @@ void main() { final Directory plugin = createFakePlugin( pluginName, packagesDir, - isAndroidPlugin: true, - isIosPlugin: true, - isLinuxPlugin: true, - isMacOsPlugin: true, - isWebPlugin: true, - isWindowsPlugin: true, - ); - - createFakePubspec( - plugin, - name: pluginName, - androidSupport: PlatformSupport.federated, - iosSupport: PlatformSupport.federated, - linuxSupport: PlatformSupport.federated, - macosSupport: PlatformSupport.federated, - webSupport: PlatformSupport.federated, - windowsSupport: PlatformSupport.federated, + platformSupport: { + kPlatformAndroid: PlatformSupport.federated, + kPlatformIos: PlatformSupport.federated, + kPlatformLinux: PlatformSupport.federated, + kPlatformMacos: PlatformSupport.federated, + kPlatformWeb: PlatformSupport.federated, + kPlatformWindows: PlatformSupport.federated, + }, ); expect( - pluginSupportsPlatform('android', plugin, + pluginSupportsPlatform(kPlatformAndroid, plugin, requiredMode: PlatformSupport.federated), isTrue); expect( - pluginSupportsPlatform('android', plugin, + pluginSupportsPlatform(kPlatformAndroid, plugin, requiredMode: PlatformSupport.inline), isFalse); expect( - pluginSupportsPlatform('ios', plugin, + pluginSupportsPlatform(kPlatformIos, plugin, requiredMode: PlatformSupport.federated), isTrue); expect( - pluginSupportsPlatform('ios', plugin, + pluginSupportsPlatform(kPlatformIos, plugin, requiredMode: PlatformSupport.inline), isFalse); expect( - pluginSupportsPlatform('linux', plugin, + pluginSupportsPlatform(kPlatformLinux, plugin, requiredMode: PlatformSupport.federated), isTrue); expect( - pluginSupportsPlatform('linux', plugin, + pluginSupportsPlatform(kPlatformLinux, plugin, requiredMode: PlatformSupport.inline), isFalse); expect( - pluginSupportsPlatform('macos', plugin, + pluginSupportsPlatform(kPlatformMacos, plugin, requiredMode: PlatformSupport.federated), isTrue); expect( - pluginSupportsPlatform('macos', plugin, + pluginSupportsPlatform(kPlatformMacos, plugin, requiredMode: PlatformSupport.inline), isFalse); expect( - pluginSupportsPlatform('web', plugin, + pluginSupportsPlatform(kPlatformWeb, plugin, requiredMode: PlatformSupport.federated), isTrue); expect( - pluginSupportsPlatform('web', plugin, + pluginSupportsPlatform(kPlatformWeb, plugin, requiredMode: PlatformSupport.inline), isFalse); expect( - pluginSupportsPlatform('windows', plugin, + pluginSupportsPlatform(kPlatformWindows, plugin, requiredMode: PlatformSupport.federated), isTrue); expect( - pluginSupportsPlatform('windows', plugin, + pluginSupportsPlatform(kPlatformWindows, plugin, requiredMode: PlatformSupport.inline), isFalse); }); diff --git a/script/tool/test/drive_examples_command_test.dart b/script/tool/test/drive_examples_command_test.dart index 9c5bd18cfb..8893110d12 100644 --- a/script/tool/test/drive_examples_command_test.dart +++ b/script/tool/test/drive_examples_command_test.dart @@ -6,6 +6,7 @@ import 'package:args/command_runner.dart'; 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/drive_examples_command.dart'; import 'package:path/path.dart' as p; import 'package:platform/platform.dart'; @@ -35,19 +36,18 @@ void main() { }); test('driving under folder "test"', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test', 'plugin.dart'], - ], - isIosPlugin: true, - isAndroidPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test', 'plugin.dart'], + ], platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformIos: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'drive-examples', ]); @@ -80,19 +80,18 @@ void main() { }); test('driving under folder "test_driver"', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ], - isAndroidPlugin: true, - isIosPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ], platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformIos: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'drive-examples', ]); @@ -126,17 +125,12 @@ void main() { test('driving under folder "test_driver" when test files are missing"', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ], - isAndroidPlugin: true, - isIosPlugin: true); - - final Directory pluginExampleDirectory = - pluginDirectory.childDirectory('example'); - - createFakePubspec(pluginExampleDirectory, isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ], platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformIos: PlatformSupport.inline, + }); await expectLater( () => runCapturingPrint(runner, ['drive-examples']), @@ -145,17 +139,12 @@ void main() { test('a plugin without any integration test files is reported as an error', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'lib', 'main.dart'], - ], - isAndroidPlugin: true, - isIosPlugin: true); - - final Directory pluginExampleDirectory = - pluginDirectory.childDirectory('example'); - - createFakePubspec(pluginExampleDirectory, isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'lib', 'main.dart'], + ], platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformIos: PlatformSupport.inline, + }); await expectLater( () => runCapturingPrint(runner, ['drive-examples']), @@ -165,21 +154,20 @@ void main() { test( 'driving under folder "test_driver" when targets are under "integration_test"', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'integration_test.dart'], - ['example', 'integration_test', 'bar_test.dart'], - ['example', 'integration_test', 'foo_test.dart'], - ['example', 'integration_test', 'ignore_me.dart'], - ], - isAndroidPlugin: true, - isIosPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'integration_test.dart'], + ['example', 'integration_test', 'bar_test.dart'], + ['example', 'integration_test', 'foo_test.dart'], + ['example', 'integration_test', 'ignore_me.dart'], + ], platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformIos: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'drive-examples', ]); @@ -222,17 +210,10 @@ void main() { }); test('driving when plugin does not support Linux is a no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ], - isMacOsPlugin: false); - - final Directory pluginExampleDirectory = - pluginDirectory.childDirectory('example'); - - createFakePubspec(pluginExampleDirectory, isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ]); final List output = await runCapturingPrint(runner, [ 'drive-examples', @@ -255,18 +236,17 @@ void main() { }); test('driving on a Linux plugin', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ], - isLinuxPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ], platformSupport: { + kPlatformLinux: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'drive-examples', '--linux', @@ -302,16 +282,10 @@ void main() { }); test('driving when plugin does not suppport macOS is a no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ]); - - final Directory pluginExampleDirectory = - pluginDirectory.childDirectory('example'); - - createFakePubspec(pluginExampleDirectory, isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ]); final List output = await runCapturingPrint(runner, [ 'drive-examples', @@ -333,19 +307,18 @@ void main() { expect(processRunner.recordedCalls, []); }); test('driving on a macOS plugin', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ['example', 'macos', 'macos.swift'], - ], - isMacOsPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ['example', 'macos', 'macos.swift'], + ], platformSupport: { + kPlatformMacos: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'drive-examples', '--macos', @@ -381,17 +354,10 @@ void main() { }); test('driving when plugin does not suppport web is a no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ], - isWebPlugin: false); - - final Directory pluginExampleDirectory = - pluginDirectory.childDirectory('example'); - - createFakePubspec(pluginExampleDirectory, isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ]); final List output = await runCapturingPrint(runner, [ 'drive-examples', @@ -414,18 +380,17 @@ void main() { }); test('driving a web plugin', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ], - isWebPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ], platformSupport: { + kPlatformWeb: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'drive-examples', '--web', @@ -463,17 +428,10 @@ void main() { }); test('driving when plugin does not suppport Windows is a no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ], - isWindowsPlugin: false); - - final Directory pluginExampleDirectory = - pluginDirectory.childDirectory('example'); - - createFakePubspec(pluginExampleDirectory, isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ]); final List output = await runCapturingPrint(runner, [ 'drive-examples', @@ -496,18 +454,17 @@ void main() { }); test('driving on a Windows plugin', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ], - isWindowsPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ], platformSupport: { + kPlatformWindows: PlatformSupport.inline + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final List output = await runCapturingPrint(runner, [ 'drive-examples', '--windows', @@ -543,17 +500,12 @@ void main() { }); test('driving when plugin does not support mobile is no-op', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test_driver', 'plugin.dart'], - ], - isMacOsPlugin: true); - - final Directory pluginExampleDirectory = - pluginDirectory.childDirectory('example'); - - createFakePubspec(pluginExampleDirectory, isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test_driver', 'plugin.dart'], + ], platformSupport: { + kPlatformMacos: PlatformSupport.inline, + }); final List output = await runCapturingPrint(runner, [ 'drive-examples', @@ -575,7 +527,8 @@ void main() { }); test('platform interface plugins are silently skipped', () async { - createFakePlugin('aplugin_platform_interface', packagesDir); + createFakePlugin('aplugin_platform_interface', packagesDir, + examples: []); final List output = await runCapturingPrint(runner, [ 'drive-examples', @@ -595,19 +548,18 @@ void main() { }); test('enable-experiment flag', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test_driver', 'plugin_test.dart'], - ['example', 'test', 'plugin.dart'], - ], - isIosPlugin: true, - isAndroidPlugin: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test_driver', 'plugin_test.dart'], + ['example', 'test', 'plugin.dart'], + ], platformSupport: { + kPlatformAndroid: PlatformSupport.inline, + kPlatformIos: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - await runCapturingPrint(runner, [ 'drive-examples', '--enable-experiment=exp1', diff --git a/script/tool/test/firebase_test_lab_test.dart b/script/tool/test/firebase_test_lab_test.dart index 0bc8f1e197..8c39b8cf70 100644 --- a/script/tool/test/firebase_test_lab_test.dart +++ b/script/tool/test/firebase_test_lab_test.dart @@ -40,7 +40,7 @@ void main() { final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(1); processRunner.processToReturn = mockProcess; - createFakePlugin('plugin', packagesDir, withExtraFiles: >[ + createFakePlugin('plugin', packagesDir, extraFiles: >[ ['lib/test/should_not_run_e2e.dart'], ['example', 'test_driver', 'plugin_e2e.dart'], ['example', 'test_driver', 'plugin_e2e_test.dart'], @@ -65,7 +65,7 @@ void main() { }); test('runs e2e tests', () async { - createFakePlugin('plugin', packagesDir, withExtraFiles: >[ + createFakePlugin('plugin', packagesDir, extraFiles: >[ ['test', 'plugin_test.dart'], ['test', 'plugin_e2e.dart'], ['should_not_run_e2e.dart'], @@ -168,7 +168,7 @@ void main() { }); test('experimental flag', () async { - createFakePlugin('plugin', packagesDir, withExtraFiles: >[ + createFakePlugin('plugin', packagesDir, extraFiles: >[ ['test', 'plugin_test.dart'], ['test', 'plugin_e2e.dart'], ['should_not_run_e2e.dart'], diff --git a/script/tool/test/java_test_command_test.dart b/script/tool/test/java_test_command_test.dart index a1c2d3b864..3c6319ed44 100644 --- a/script/tool/test/java_test_command_test.dart +++ b/script/tool/test/java_test_command_test.dart @@ -5,6 +5,8 @@ import 'package:args/command_runner.dart'; 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/java_test_command.dart'; import 'package:path/path.dart' as p; import 'package:test/test.dart'; @@ -34,10 +36,10 @@ void main() { final Directory plugin = createFakePlugin( 'plugin1', packagesDir, - isAndroidPlugin: true, - isFlutter: true, - withSingleExample: true, - withExtraFiles: >[ + platformSupport: { + kPlatformAndroid: PlatformSupport.inline + }, + extraFiles: >[ ['example/android', 'gradlew'], ['android/src/test', 'example_test.java'], ], @@ -61,10 +63,10 @@ void main() { final Directory plugin = createFakePlugin( 'plugin1', packagesDir, - isAndroidPlugin: true, - isFlutter: true, - withSingleExample: true, - withExtraFiles: >[ + platformSupport: { + kPlatformAndroid: PlatformSupport.inline + }, + extraFiles: >[ ['example/android', 'gradlew'], ['example/android/app/src/test', 'example_test.java'], ], diff --git a/script/tool/test/lint_podspecs_command_test.dart b/script/tool/test/lint_podspecs_command_test.dart index 0183704f72..45dc92e699 100644 --- a/script/tool/test/lint_podspecs_command_test.dart +++ b/script/tool/test/lint_podspecs_command_test.dart @@ -45,7 +45,7 @@ void main() { }); test('only runs on macOS', () async { - createFakePlugin('plugin1', packagesDir, withExtraFiles: >[ + createFakePlugin('plugin1', packagesDir, extraFiles: >[ ['plugin1.podspec'], ]); @@ -59,11 +59,11 @@ void main() { }); test('runs pod lib lint on a podspec', () async { - final Directory plugin1Dir = createFakePlugin('plugin1', packagesDir, - withExtraFiles: >[ - ['ios', 'plugin1.podspec'], - ['bogus.dart'], // Ignore non-podspecs. - ]); + final Directory plugin1Dir = + createFakePlugin('plugin1', packagesDir, extraFiles: >[ + ['ios', 'plugin1.podspec'], + ['bogus.dart'], // Ignore non-podspecs. + ]); processRunner.resultStdout = 'Foo'; processRunner.resultStderr = 'Bar'; @@ -106,10 +106,10 @@ void main() { }); test('skips podspecs with known issues', () async { - createFakePlugin('plugin1', packagesDir, withExtraFiles: >[ + createFakePlugin('plugin1', packagesDir, extraFiles: >[ ['plugin1.podspec'] ]); - createFakePlugin('plugin2', packagesDir, withExtraFiles: >[ + createFakePlugin('plugin2', packagesDir, extraFiles: >[ ['plugin2.podspec'] ]); @@ -125,10 +125,10 @@ void main() { }); test('allow warnings for podspecs with known warnings', () async { - final Directory plugin1Dir = createFakePlugin('plugin1', packagesDir, - withExtraFiles: >[ - ['plugin1.podspec'], - ]); + final Directory plugin1Dir = + createFakePlugin('plugin1', packagesDir, extraFiles: >[ + ['plugin1.podspec'], + ]); await runner.run(['podspecs', '--ignore-warnings=plugin1']); diff --git a/script/tool/test/list_command_test.dart b/script/tool/test/list_command_test.dart index 02b898c5c3..22f00ea046 100644 --- a/script/tool/test/list_command_test.dart +++ b/script/tool/test/list_command_test.dart @@ -42,10 +42,10 @@ void main() { }); test('lists examples', () async { - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + createFakePlugin('plugin1', packagesDir); createFakePlugin('plugin2', packagesDir, - withExamples: ['example1', 'example2']); - createFakePlugin('plugin3', packagesDir); + examples: ['example1', 'example2']); + createFakePlugin('plugin3', packagesDir, examples: []); final List examples = await runCapturingPrint(runner, ['list', '--type=example']); @@ -61,10 +61,10 @@ void main() { }); test('lists packages', () async { - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + createFakePlugin('plugin1', packagesDir); createFakePlugin('plugin2', packagesDir, - withExamples: ['example1', 'example2']); - createFakePlugin('plugin3', packagesDir); + examples: ['example1', 'example2']); + createFakePlugin('plugin3', packagesDir, examples: []); final List packages = await runCapturingPrint(runner, ['list', '--type=package']); @@ -83,10 +83,10 @@ void main() { }); test('lists files', () async { - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + createFakePlugin('plugin1', packagesDir); createFakePlugin('plugin2', packagesDir, - withExamples: ['example1', 'example2']); - createFakePlugin('plugin3', packagesDir); + examples: ['example1', 'example2']); + createFakePlugin('plugin3', packagesDir, examples: []); final List examples = await runCapturingPrint(runner, ['list', '--type=file']); @@ -95,11 +95,14 @@ void main() { examples, unorderedEquals([ '/packages/plugin1/pubspec.yaml', + '/packages/plugin1/CHANGELOG.md', '/packages/plugin1/example/pubspec.yaml', '/packages/plugin2/pubspec.yaml', + '/packages/plugin2/CHANGELOG.md', '/packages/plugin2/example/example1/pubspec.yaml', '/packages/plugin2/example/example2/pubspec.yaml', '/packages/plugin3/pubspec.yaml', + '/packages/plugin3/CHANGELOG.md', ]), ); }); diff --git a/script/tool/test/publish_check_command_test.dart b/script/tool/test/publish_check_command_test.dart index c0ccd2989c..26938cc927 100644 --- a/script/tool/test/publish_check_command_test.dart +++ b/script/tool/test/publish_check_command_test.dart @@ -40,8 +40,10 @@ void main() { }); test('publish check all packages', () async { - final Directory plugin1Dir = createFakePlugin('a', packagesDir); - final Directory plugin2Dir = createFakePlugin('b', packagesDir); + final Directory plugin1Dir = + createFakePlugin('plugin_tools_test_package_a', packagesDir); + final Directory plugin2Dir = + createFakePlugin('plugin_tools_test_package_b', packagesDir); processRunner.processesToReturn.add( MockProcess()..exitCodeCompleter.complete(0), @@ -66,7 +68,7 @@ void main() { }); test('fail on negative test', () async { - createFakePlugin('a', packagesDir); + createFakePlugin('plugin_tools_test_package_a', packagesDir); final MockProcess process = MockProcess(); process.stdoutController.close(); // ignore: unawaited_futures @@ -186,13 +188,8 @@ void main() { ); runner.addCommand(command); - final Directory plugin1Dir = - createFakePlugin('no_publish_a', packagesDir, includeVersion: true); - final Directory plugin2Dir = - createFakePlugin('no_publish_b', packagesDir, includeVersion: true); - - createFakePubspec(plugin1Dir, name: 'no_publish_a', version: '0.1.0'); - createFakePubspec(plugin2Dir, name: 'no_publish_b', version: '0.2.0'); + createFakePlugin('no_publish_a', packagesDir, version: '0.1.0'); + createFakePlugin('no_publish_b', packagesDir, version: '0.2.0'); processRunner.processesToReturn.add( MockProcess()..exitCodeCompleter.complete(0), @@ -250,13 +247,8 @@ void main() { ); runner.addCommand(command); - final Directory plugin1Dir = - createFakePlugin('no_publish_a', packagesDir, includeVersion: true); - final Directory plugin2Dir = - createFakePlugin('no_publish_b', packagesDir, includeVersion: true); - - createFakePubspec(plugin1Dir, name: 'no_publish_a', version: '0.1.0'); - createFakePubspec(plugin2Dir, name: 'no_publish_b', version: '0.2.0'); + createFakePlugin('no_publish_a', packagesDir, version: '0.1.0'); + createFakePlugin('no_publish_b', packagesDir, version: '0.2.0'); processRunner.processesToReturn.add( MockProcess()..exitCodeCompleter.complete(0), @@ -318,12 +310,9 @@ void main() { runner.addCommand(command); final Directory plugin1Dir = - createFakePlugin('no_publish_a', packagesDir, includeVersion: true); - final Directory plugin2Dir = - createFakePlugin('no_publish_b', packagesDir, includeVersion: true); + createFakePlugin('no_publish_a', packagesDir, version: '0.1.0'); + createFakePlugin('no_publish_b', packagesDir, version: '0.2.0'); - createFakePubspec(plugin1Dir, name: 'no_publish_a', version: '0.1.0'); - createFakePubspec(plugin2Dir, name: 'no_publish_b', version: '0.2.0'); await plugin1Dir.childFile('pubspec.yaml').writeAsString('bad-yaml'); processRunner.processesToReturn.add( diff --git a/script/tool/test/publish_plugin_command_test.dart b/script/tool/test/publish_plugin_command_test.dart index ef682bfe61..a2ea9816ea 100644 --- a/script/tool/test/publish_plugin_command_test.dart +++ b/script/tool/test/publish_plugin_command_test.dart @@ -50,9 +50,8 @@ void main() { testRoot = fileSystem.directory(testRoot.resolveSymbolicLinksSync()); packagesDir = createPackagesDirectory(parentDir: testRoot); pluginDir = - createFakePlugin(testPluginName, packagesDir, withSingleExample: false); + createFakePlugin(testPluginName, packagesDir, examples: []); assert(pluginDir != null && pluginDir.existsSync()); - createFakePubspec(pluginDir, version: '0.0.1'); io.Process.runSync('git', ['init'], workingDirectory: testRoot.path); gitDir = await GitDir.fromExisting(testRoot.path); @@ -138,7 +137,8 @@ void main() { }); test('can publish non-flutter package', () async { - createFakePubspec(pluginDir, version: '0.0.1', isFlutter: false); + const String packageName = 'a_package'; + createFakePackage(packageName, packagesDir); io.Process.runSync('git', ['init'], workingDirectory: testRoot.path); gitDir = await GitDir.fromExisting(testRoot.path); @@ -149,7 +149,7 @@ void main() { await commandRunner.run([ 'publish-plugin', '--package', - testPluginName, + packageName, '--no-push-tags', '--no-tag-release' ]); @@ -284,9 +284,9 @@ void main() { '--no-push-tags', ]); - final String? tag = - (await gitDir.runCommand(['show-ref', 'fake_package-v0.0.1'])) - .stdout as String?; + final String? tag = (await gitDir + .runCommand(['show-ref', '$testPluginName-v0.0.1'])) + .stdout as String?; expect(tag, isNotEmpty); }); @@ -303,7 +303,7 @@ void main() { expect(printedMessages, contains('Publish foo failed.')); final String? tag = (await gitDir.runCommand( - ['show-ref', 'fake_package-v0.0.1'], + ['show-ref', '$testPluginName-v0.0.1'], throwOnError: false)) .stdout as String?; expect(tag, isEmpty); @@ -342,7 +342,7 @@ void main() { expect(processRunner.pushTagsArgs.isNotEmpty, isTrue); expect(processRunner.pushTagsArgs[1], 'upstream'); - expect(processRunner.pushTagsArgs[2], 'fake_package-v0.0.1'); + expect(processRunner.pushTagsArgs[2], '$testPluginName-v0.0.1'); expect(printedMessages.last, 'Done!'); }); @@ -360,7 +360,7 @@ void main() { expect(processRunner.pushTagsArgs.isNotEmpty, isTrue); expect(processRunner.pushTagsArgs[1], 'upstream'); - expect(processRunner.pushTagsArgs[2], 'fake_package-v0.0.1'); + expect(processRunner.pushTagsArgs[2], '$testPluginName-v0.0.1'); expect(printedMessages.last, 'Done!'); }); @@ -378,7 +378,7 @@ void main() { containsAllInOrder([ '=============== DRY RUN ===============', 'Running `pub publish ` in ${pluginDir.path}...\n', - 'Tagging release fake_package-v0.0.1...', + 'Tagging release $testPluginName-v0.0.1...', 'Pushing tag to upstream...', 'Done!' ])); @@ -399,7 +399,7 @@ void main() { expect(processRunner.pushTagsArgs.isNotEmpty, isTrue); expect(processRunner.pushTagsArgs[1], 'origin'); - expect(processRunner.pushTagsArgs[2], 'fake_package-v0.0.1'); + expect(processRunner.pushTagsArgs[2], '$testPluginName-v0.0.1'); expect(printedMessages.last, 'Done!'); }); @@ -428,15 +428,12 @@ void main() { test('can release newly created plugins', () async { // Non-federated - final Directory pluginDir1 = - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + final Directory pluginDir1 = createFakePlugin('plugin1', packagesDir); // federated - final Directory pluginDir2 = createFakePlugin('plugin2', packagesDir, - withSingleExample: true, parentDirectoryName: 'plugin2'); - createFakePubspec(pluginDir1, - name: 'plugin1', isFlutter: false, version: '0.0.1'); - createFakePubspec(pluginDir2, - name: 'plugin2', isFlutter: false, version: '0.0.1'); + final Directory pluginDir2 = createFakePlugin( + 'plugin2', + packagesDir.childDirectory('plugin2'), + ); await gitDir.runCommand(['add', '-A']); await gitDir.runCommand(['commit', '-m', 'Add plugins']); // Immediately return 0 when running `pub publish`. @@ -467,10 +464,7 @@ void main() { test('can release newly created plugins, while there are existing plugins', () async { // Prepare an exiting plugin and tag it - final Directory pluginDir0 = - createFakePlugin('plugin0', packagesDir, withSingleExample: true); - createFakePubspec(pluginDir0, - name: 'plugin0', isFlutter: false, version: '0.0.1'); + createFakePlugin('plugin0', packagesDir); await gitDir.runCommand(['add', '-A']); await gitDir.runCommand(['commit', '-m', 'Add plugins']); // Immediately return 0 when running `pub publish`. @@ -481,15 +475,10 @@ void main() { processRunner.pushTagsArgs.clear(); // Non-federated - final Directory pluginDir1 = - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + final Directory pluginDir1 = createFakePlugin('plugin1', packagesDir); // federated - final Directory pluginDir2 = createFakePlugin('plugin2', packagesDir, - withSingleExample: true, parentDirectoryName: 'plugin2'); - createFakePubspec(pluginDir1, - name: 'plugin1', isFlutter: false, version: '0.0.1'); - createFakePubspec(pluginDir2, - name: 'plugin2', isFlutter: false, version: '0.0.1'); + final Directory pluginDir2 = + createFakePlugin('plugin2', packagesDir.childDirectory('plugin2')); await gitDir.runCommand(['add', '-A']); await gitDir.runCommand(['commit', '-m', 'Add plugins']); // Immediately return 0 when running `pub publish`. @@ -517,15 +506,10 @@ void main() { test('can release newly created plugins, dry run', () async { // Non-federated - final Directory pluginDir1 = - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + final Directory pluginDir1 = createFakePlugin('plugin1', packagesDir); // federated - final Directory pluginDir2 = createFakePlugin('plugin2', packagesDir, - withSingleExample: true, parentDirectoryName: 'plugin2'); - createFakePubspec(pluginDir1, - name: 'plugin1', isFlutter: false, version: '0.0.1'); - createFakePubspec(pluginDir2, - name: 'plugin2', isFlutter: false, version: '0.0.1'); + final Directory pluginDir2 = + createFakePlugin('plugin2', packagesDir.childDirectory('plugin2')); await gitDir.runCommand(['add', '-A']); await gitDir.runCommand(['commit', '-m', 'Add plugins']); // Immediately return 1 when running `pub publish`. If dry-run does not work, test should throw. @@ -558,15 +542,10 @@ void main() { test('version change triggers releases.', () async { // Non-federated - final Directory pluginDir1 = - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + final Directory pluginDir1 = createFakePlugin('plugin1', packagesDir); // federated - final Directory pluginDir2 = createFakePlugin('plugin2', packagesDir, - withSingleExample: true, parentDirectoryName: 'plugin2'); - createFakePubspec(pluginDir1, - name: 'plugin1', isFlutter: false, version: '0.0.1'); - createFakePubspec(pluginDir2, - name: 'plugin2', isFlutter: false, version: '0.0.1'); + final Directory pluginDir2 = + createFakePlugin('plugin2', packagesDir.childDirectory('plugin2')); await gitDir.runCommand(['add', '-A']); await gitDir.runCommand(['commit', '-m', 'Add plugins']); // Immediately return 0 when running `pub publish`. @@ -641,15 +620,10 @@ void main() { 'delete package will not trigger publish but exit the command successfully.', () async { // Non-federated - final Directory pluginDir1 = - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + final Directory pluginDir1 = createFakePlugin('plugin1', packagesDir); // federated - final Directory pluginDir2 = createFakePlugin('plugin2', packagesDir, - withSingleExample: true, parentDirectoryName: 'plugin2'); - createFakePubspec(pluginDir1, - name: 'plugin1', isFlutter: false, version: '0.0.1'); - createFakePubspec(pluginDir2, - name: 'plugin2', isFlutter: false, version: '0.0.1'); + final Directory pluginDir2 = + createFakePlugin('plugin2', packagesDir.childDirectory('plugin2')); await gitDir.runCommand(['add', '-A']); await gitDir.runCommand(['commit', '-m', 'Add plugins']); // Immediately return 0 when running `pub publish`. @@ -722,14 +696,11 @@ void main() { () async { // Non-federated final Directory pluginDir1 = - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + createFakePlugin('plugin1', packagesDir, version: '0.0.2'); // federated - final Directory pluginDir2 = createFakePlugin('plugin2', packagesDir, - withSingleExample: true, parentDirectoryName: 'plugin2'); - createFakePubspec(pluginDir1, - name: 'plugin1', isFlutter: false, version: '0.0.2'); - createFakePubspec(pluginDir2, - name: 'plugin2', isFlutter: false, version: '0.0.2'); + final Directory pluginDir2 = createFakePlugin( + 'plugin2', packagesDir.childDirectory('plugin2'), + version: '0.0.2'); await gitDir.runCommand(['add', '-A']); await gitDir.runCommand(['commit', '-m', 'Add plugins']); // Immediately return 0 when running `pub publish`. @@ -795,15 +766,10 @@ void main() { test('No version change does not release any plugins', () async { // Non-federated - final Directory pluginDir1 = - createFakePlugin('plugin1', packagesDir, withSingleExample: true); + final Directory pluginDir1 = createFakePlugin('plugin1', packagesDir); // federated - final Directory pluginDir2 = createFakePlugin('plugin2', packagesDir, - withSingleExample: true, parentDirectoryName: 'plugin2'); - createFakePubspec(pluginDir1, - name: 'plugin1', isFlutter: false, version: '0.0.1'); - createFakePubspec(pluginDir2, - name: 'plugin2', isFlutter: false, version: '0.0.1'); + final Directory pluginDir2 = + createFakePlugin('plugin2', packagesDir.childDirectory('plugin2')); io.Process.runSync('git', ['init'], workingDirectory: testRoot.path); diff --git a/script/tool/test/pubspec_check_command_test.dart b/script/tool/test/pubspec_check_command_test.dart index f5fe6aef84..af27ac5bd2 100644 --- a/script/tool/test/pubspec_check_command_test.dart +++ b/script/tool/test/pubspec_check_command_test.dart @@ -88,8 +88,7 @@ dev_dependencies: } test('passes for a plugin following conventions', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true)} @@ -114,8 +113,7 @@ ${devDependenciesSection()} }); test('passes for a Flutter package following conventions', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin')} @@ -163,8 +161,7 @@ ${dependenciesSection()} }); test('fails when homepage is included', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true, includeHomepage: true)} @@ -184,8 +181,7 @@ ${devDependenciesSection()} }); test('fails when repository is missing', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true, includeRepository: false)} @@ -205,8 +201,7 @@ ${devDependenciesSection()} }); test('fails when homepage is given instead of repository', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true, includeHomepage: true, includeRepository: false)} @@ -226,8 +221,7 @@ ${devDependenciesSection()} }); test('fails when issue tracker is missing', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true, includeIssueTracker: false)} @@ -247,8 +241,7 @@ ${devDependenciesSection()} }); test('fails when environment section is out of order', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true)} @@ -268,8 +261,7 @@ ${environmentSection()} }); test('fails when flutter section is out of order', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true)} @@ -289,8 +281,7 @@ ${devDependenciesSection()} }); test('fails when dependencies section is out of order', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true)} @@ -310,8 +301,7 @@ ${dependenciesSection()} }); test('fails when devDependencies section is out of order', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, withSingleExample: true); + final Directory pluginDirectory = createFakePlugin('plugin', packagesDir); pluginDirectory.childFile('pubspec.yaml').writeAsStringSync(''' ${headerSection('plugin', isPlugin: true)} diff --git a/script/tool/test/test_command_test.dart b/script/tool/test/test_command_test.dart index 5cbbdf5b8d..b2f663f1e9 100644 --- a/script/tool/test/test_command_test.dart +++ b/script/tool/test/test_command_test.dart @@ -5,6 +5,8 @@ import 'package:args/command_runner.dart'; 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:test/test.dart'; @@ -29,14 +31,14 @@ void main() { }); test('runs flutter test on each plugin', () async { - final Directory plugin1Dir = createFakePlugin('plugin1', packagesDir, - withExtraFiles: >[ - ['test', 'empty_test.dart'], - ]); - final Directory plugin2Dir = createFakePlugin('plugin2', packagesDir, - withExtraFiles: >[ - ['test', 'empty_test.dart'], - ]); + final Directory plugin1Dir = + createFakePlugin('plugin1', packagesDir, extraFiles: >[ + ['test', 'empty_test.dart'], + ]); + final Directory plugin2Dir = + createFakePlugin('plugin2', packagesDir, extraFiles: >[ + ['test', 'empty_test.dart'], + ]); await runner.run(['test']); @@ -53,10 +55,10 @@ void main() { test('skips testing plugins without test directory', () async { createFakePlugin('plugin1', packagesDir); - final Directory plugin2Dir = createFakePlugin('plugin2', packagesDir, - withExtraFiles: >[ - ['test', 'empty_test.dart'], - ]); + final Directory plugin2Dir = + createFakePlugin('plugin2', packagesDir, extraFiles: >[ + ['test', 'empty_test.dart'], + ]); await runner.run(['test']); @@ -70,16 +72,14 @@ void main() { }); test('runs pub run test on non-Flutter packages', () async { - final Directory plugin1Dir = createFakePlugin('plugin1', packagesDir, - isFlutter: true, - withExtraFiles: >[ - ['test', 'empty_test.dart'], - ]); - final Directory plugin2Dir = createFakePlugin('plugin2', packagesDir, - isFlutter: false, - withExtraFiles: >[ - ['test', 'empty_test.dart'], - ]); + final Directory pluginDir = + createFakePlugin('a', packagesDir, extraFiles: >[ + ['test', 'empty_test.dart'], + ]); + final Directory packageDir = + createFakePackage('b', packagesDir, extraFiles: >[ + ['test', 'empty_test.dart'], + ]); await runner.run(['test', '--enable-experiment=exp1']); @@ -89,12 +89,12 @@ void main() { ProcessCall( 'flutter', const ['test', '--color', '--enable-experiment=exp1'], - plugin1Dir.path), - ProcessCall('dart', const ['pub', 'get'], plugin2Dir.path), + pluginDir.path), + ProcessCall('dart', const ['pub', 'get'], packageDir.path), ProcessCall( 'dart', const ['pub', 'run', '--enable-experiment=exp1', 'test'], - plugin2Dir.path), + packageDir.path), ]), ); }); @@ -103,11 +103,12 @@ void main() { final Directory pluginDir = createFakePlugin( 'plugin', packagesDir, - withExtraFiles: >[ + extraFiles: >[ ['test', 'empty_test.dart'], ], - isFlutter: true, - isWebPlugin: true, + platformSupport: { + kPlatformWeb: PlatformSupport.inline, + }, ); await runner.run(['test']); @@ -124,16 +125,14 @@ void main() { }); test('enable-experiment flag', () async { - final Directory plugin1Dir = createFakePlugin('plugin1', packagesDir, - isFlutter: true, - withExtraFiles: >[ - ['test', 'empty_test.dart'], - ]); - final Directory plugin2Dir = createFakePlugin('plugin2', packagesDir, - isFlutter: false, - withExtraFiles: >[ - ['test', 'empty_test.dart'], - ]); + final Directory pluginDir = + createFakePlugin('a', packagesDir, extraFiles: >[ + ['test', 'empty_test.dart'], + ]); + final Directory packageDir = + createFakePackage('b', packagesDir, extraFiles: >[ + ['test', 'empty_test.dart'], + ]); await runner.run(['test', '--enable-experiment=exp1']); @@ -143,12 +142,12 @@ void main() { ProcessCall( 'flutter', const ['test', '--color', '--enable-experiment=exp1'], - plugin1Dir.path), - ProcessCall('dart', const ['pub', 'get'], plugin2Dir.path), + pluginDir.path), + ProcessCall('dart', const ['pub', 'get'], packageDir.path), ProcessCall( 'dart', const ['pub', 'run', '--enable-experiment=exp1', 'test'], - plugin2Dir.path), + packageDir.path), ]), ); }); diff --git a/script/tool/test/util.dart b/script/tool/test/util.dart index 79c46fcc50..4ced4eb483 100644 --- a/script/tool/test/util.dart +++ b/script/tool/test/util.dart @@ -9,6 +9,7 @@ import 'dart:io' as io; import 'package:args/command_runner.dart'; 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/common/process_runner.dart'; import 'package:meta/meta.dart'; @@ -32,70 +33,35 @@ Directory createPackagesDirectory( } /// Creates a plugin package with the given [name] in [packagesDirectory]. +/// +/// [platformSupport] is a map of platform string to the support details for +/// that platform. Directory createFakePlugin( String name, - Directory packagesDirectory, { - bool withSingleExample = false, - List withExamples = const [], - List> withExtraFiles = const >[], - bool isFlutter = true, - // TODO(stuartmorgan): Change these platform switches to support type enums. - bool isAndroidPlugin = false, - bool isIosPlugin = false, - bool isWebPlugin = false, - bool isLinuxPlugin = false, - bool isMacOsPlugin = false, - bool isWindowsPlugin = false, - bool includeChangeLog = false, - bool includeVersion = false, - String version = '0.0.1', - String parentDirectoryName = '', + Directory parentDirectory, { + List examples = const ['example'], + List> extraFiles = const >[], + Map platformSupport = + const {}, + String? version = '0.0.1', }) { - assert(!(withSingleExample && withExamples.isNotEmpty), - 'cannot pass withSingleExample and withExamples simultaneously'); + final Directory pluginDirectory = createFakePackage(name, parentDirectory, + isFlutter: true, + examples: examples, + extraFiles: extraFiles, + version: version); - Directory parentDirectory = packagesDirectory; - if (parentDirectoryName != '') { - parentDirectory = parentDirectory.childDirectory(parentDirectoryName); - } - final Directory pluginDirectory = parentDirectory.childDirectory(name); - pluginDirectory.createSync(recursive: true); - - createFakePubspec(pluginDirectory, - name: name, - isFlutter: isFlutter, - androidSupport: isAndroidPlugin ? PlatformSupport.inline : null, - iosSupport: isIosPlugin ? PlatformSupport.inline : null, - webSupport: isWebPlugin ? PlatformSupport.inline : null, - linuxSupport: isLinuxPlugin ? PlatformSupport.inline : null, - macosSupport: isMacOsPlugin ? PlatformSupport.inline : null, - windowsSupport: isWindowsPlugin ? PlatformSupport.inline : null, - version: includeVersion ? version : null); - if (includeChangeLog) { - createFakeCHANGELOG(pluginDirectory, ''' -## 0.0.1 - * Some changes. - '''); - } - - if (withSingleExample) { - final Directory exampleDir = pluginDirectory.childDirectory('example') - ..createSync(); - createFakePubspec(exampleDir, - name: '${name}_example', isFlutter: isFlutter, publishTo: 'none'); - } else if (withExamples.isNotEmpty) { - final Directory exampleDir = pluginDirectory.childDirectory('example') - ..createSync(); - for (final String example in withExamples) { - final Directory currentExample = exampleDir.childDirectory(example) - ..createSync(); - createFakePubspec(currentExample, - name: example, isFlutter: isFlutter, publishTo: 'none'); - } - } + createFakePubspec( + pluginDirectory, + name: name, + isFlutter: true, + isPlugin: true, + platformSupport: platformSupport, + version: version, + ); final FileSystem fileSystem = pluginDirectory.fileSystem; - for (final List file in withExtraFiles) { + for (final List file in extraFiles) { final List newFilePath = [pluginDirectory.path, ...file]; final File newFile = fileSystem.file(fileSystem.path.joinAll(newFilePath)); newFile.createSync(recursive: true); @@ -104,51 +70,88 @@ Directory createFakePlugin( return pluginDirectory; } +/// Creates a plugin package with the given [name] in [packagesDirectory]. +Directory createFakePackage( + String name, + Directory parentDirectory, { + List examples = const ['example'], + List> extraFiles = const >[], + bool isFlutter = false, + String? version = '0.0.1', +}) { + final Directory packageDirectory = parentDirectory.childDirectory(name); + packageDirectory.createSync(recursive: true); + + createFakePubspec(packageDirectory, name: name, isFlutter: isFlutter); + createFakeCHANGELOG(packageDirectory, ''' +## $version + * Some changes. + '''); + + if (examples.length == 1) { + final Directory exampleDir = packageDirectory.childDirectory(examples.first) + ..createSync(); + createFakePubspec(exampleDir, + name: '${name}_example', isFlutter: isFlutter, publishTo: 'none'); + } else if (examples.isNotEmpty) { + final Directory exampleDir = packageDirectory.childDirectory('example') + ..createSync(); + for (final String example in examples) { + final Directory currentExample = exampleDir.childDirectory(example) + ..createSync(); + createFakePubspec(currentExample, + name: example, isFlutter: isFlutter, publishTo: 'none'); + } + } + + final FileSystem fileSystem = packageDirectory.fileSystem; + for (final List file in extraFiles) { + final List newFilePath = [packageDirectory.path, ...file]; + final File newFile = fileSystem.file(fileSystem.path.joinAll(newFilePath)); + newFile.createSync(recursive: true); + } + + return packageDirectory; +} + void createFakeCHANGELOG(Directory parent, String texts) { parent.childFile('CHANGELOG.md').createSync(); parent.childFile('CHANGELOG.md').writeAsStringSync(texts); } /// Creates a `pubspec.yaml` file with a flutter dependency. +/// +/// [platformSupport] is a map of platform string to the support details for +/// that platform. If empty, no `plugin` entry will be created unless `isPlugin` +/// is set to `true`. void createFakePubspec( Directory parent, { String name = 'fake_package', bool isFlutter = true, - PlatformSupport? androidSupport, - PlatformSupport? iosSupport, - PlatformSupport? linuxSupport, - PlatformSupport? macosSupport, - PlatformSupport? webSupport, - PlatformSupport? windowsSupport, + bool isPlugin = false, + Map platformSupport = + const {}, String publishTo = 'http://no_pub_server.com', String? version, }) { + isPlugin |= platformSupport.isNotEmpty; parent.childFile('pubspec.yaml').createSync(); String yaml = ''' name: $name +'''; + if (isFlutter) { + if (isPlugin) { + yaml += ''' flutter: plugin: platforms: '''; - if (androidSupport != null) { - yaml += _pluginPlatformSection('android', androidSupport, name); - } - if (iosSupport != null) { - yaml += _pluginPlatformSection('ios', iosSupport, name); - } - if (webSupport != null) { - yaml += _pluginPlatformSection('web', webSupport, name); - } - if (linuxSupport != null) { - yaml += _pluginPlatformSection('linux', linuxSupport, name); - } - if (macosSupport != null) { - yaml += _pluginPlatformSection('macos', macosSupport, name); - } - if (windowsSupport != null) { - yaml += _pluginPlatformSection('windows', windowsSupport, name); - } - if (isFlutter) { + for (final MapEntry platform + in platformSupport.entries) { + yaml += _pluginPlatformSection(platform.key, platform.value, name); + } + } + yaml += ''' dependencies: flutter: @@ -177,34 +180,34 @@ String _pluginPlatformSection( '''; } switch (platform) { - case 'android': + case kPlatformAndroid: return ''' android: package: io.flutter.plugins.fake pluginClass: FakePlugin '''; - case 'ios': + case kPlatformIos: return ''' ios: pluginClass: FLTFakePlugin '''; - case 'linux': + case kPlatformLinux: return ''' linux: pluginClass: FakePlugin '''; - case 'macos': + case kPlatformMacos: return ''' macos: pluginClass: FakePlugin '''; - case 'web': + case kPlatformWeb: return ''' web: pluginClass: FakePlugin fileName: ${packageName}_web.dart '''; - case 'windows': + case kPlatformWindows: return ''' windows: pluginClass: FakePlugin diff --git a/script/tool/test/version_check_test.dart b/script/tool/test/version_check_test.dart index a8e7e20bad..6035360a22 100644 --- a/script/tool/test/version_check_test.dart +++ b/script/tool/test/version_check_test.dart @@ -100,12 +100,12 @@ void main() { }); test('allows valid version', () async { - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '2.0.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'master:packages/plugin/pubspec.yaml': 'version: 1.0.0', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 2.0.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final List output = await runCapturingPrint( runner, ['version-check', '--base-sha=master']); @@ -127,12 +127,12 @@ void main() { }); test('denies invalid version', () async { - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '0.2.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'master:packages/plugin/pubspec.yaml': 'version: 0.0.1', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 0.2.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final Future> result = runCapturingPrint( runner, ['version-check', '--base-sha=master']); @@ -152,12 +152,12 @@ void main() { }); test('allows valid version without explicit base-sha', () async { - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '2.0.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'abc123:packages/plugin/pubspec.yaml': 'version: 1.0.0', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 2.0.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final List output = await runCapturingPrint(runner, ['version-check']); @@ -171,11 +171,11 @@ void main() { }); test('allows valid version for new package.', () async { - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '1.0.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { - 'HEAD:packages/plugin/pubspec.yaml': 'version: 1.0.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final List output = await runCapturingPrint(runner, ['version-check']); @@ -190,12 +190,12 @@ void main() { }); test('allows likely reverts.', () async { - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '0.6.1'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'abc123:packages/plugin/pubspec.yaml': 'version: 0.6.2', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 0.6.1', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final List output = await runCapturingPrint(runner, ['version-check']); @@ -209,12 +209,12 @@ void main() { }); test('denies lower version that could not be a simple revert', () async { - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '0.5.1'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'abc123:packages/plugin/pubspec.yaml': 'version: 0.6.2', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 0.5.1', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final Future> result = runCapturingPrint(runner, ['version-check']); @@ -226,12 +226,12 @@ void main() { }); test('denies invalid version without explicit base-sha', () async { - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '0.2.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'abc123:packages/plugin/pubspec.yaml': 'version: 0.0.1', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 0.2.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final Future> result = runCapturingPrint(runner, ['version-check']); @@ -243,8 +243,8 @@ void main() { }); test('gracefully handles missing pubspec.yaml', () async { - final Directory pluginDir = createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + final Directory pluginDir = + createFakePlugin('plugin', packagesDir, examples: []); gitDiffResponse = 'packages/plugin/pubspec.yaml'; pluginDir.childFile('pubspec.yaml').deleteSync(); final List output = await runCapturingPrint( @@ -265,14 +265,15 @@ void main() { }); test('allows minor changes to platform interfaces', () async { + const String newVersion = '1.1.0'; createFakePlugin('plugin_platform_interface', packagesDir, - includeChangeLog: true, includeVersion: true); + version: newVersion); gitDiffResponse = 'packages/plugin_platform_interface/pubspec.yaml'; gitShowResponses = { 'master:packages/plugin_platform_interface/pubspec.yaml': 'version: 1.0.0', 'HEAD:packages/plugin_platform_interface/pubspec.yaml': - 'version: 1.1.0', + 'version: $newVersion', }; final List output = await runCapturingPrint( runner, ['version-check', '--base-sha=master']); @@ -299,14 +300,15 @@ void main() { }); test('disallows breaking changes to platform interfaces', () async { + const String newVersion = '2.0.0'; createFakePlugin('plugin_platform_interface', packagesDir, - includeChangeLog: true, includeVersion: true); + version: newVersion); gitDiffResponse = 'packages/plugin_platform_interface/pubspec.yaml'; gitShowResponses = { 'master:packages/plugin_platform_interface/pubspec.yaml': 'version: 1.0.0', 'HEAD:packages/plugin_platform_interface/pubspec.yaml': - 'version: 2.0.0', + 'version: $newVersion', }; final Future> output = runCapturingPrint( runner, ['version-check', '--base-sha=master']); @@ -332,16 +334,11 @@ void main() { test('Allow empty lines in front of the first version in CHANGELOG', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); - - createFakePubspec(pluginDirectory, isFlutter: true, version: '1.0.1'); + const String version = '1.0.1'; + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, version: version); const String changelog = ''' - - - -## 1.0.1 - +## $version * Some changes. '''; createFakeCHANGELOG(pluginDirectory, changelog); @@ -358,13 +355,10 @@ void main() { }); test('Throws if versions in changelog and pubspec do not match', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); - - createFakePubspec(pluginDirectory, isFlutter: true, version: '1.0.1'); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, version: '1.0.1'); const String changelog = ''' ## 1.0.2 - * Some changes. '''; createFakeCHANGELOG(pluginDirectory, changelog); @@ -392,13 +386,12 @@ The first version listed in CHANGELOG.md is 1.0.2. }); test('Success if CHANGELOG and pubspec versions match', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String version = '1.0.1'; + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, version: version); - createFakePubspec(pluginDirectory, isFlutter: true, version: '1.0.1'); const String changelog = ''' -## 1.0.1 - +## $version * Some changes. '''; createFakeCHANGELOG(pluginDirectory, changelog); @@ -417,17 +410,13 @@ The first version listed in CHANGELOG.md is 1.0.2. test( 'Fail if pubspec version only matches an older version listed in CHANGELOG', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, version: '1.0.0'); - createFakePubspec(pluginDirectory, isFlutter: true, version: '1.0.0'); const String changelog = ''' ## 1.0.1 - * Some changes. - ## 1.0.0 - * Some other changes. '''; createFakeCHANGELOG(pluginDirectory, changelog); @@ -458,17 +447,14 @@ The first version listed in CHANGELOG.md is 1.0.1. test('Allow NEXT as a placeholder for gathering CHANGELOG entries', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String version = '1.0.0'; + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, version: version); - createFakePubspec(pluginDirectory, isFlutter: true, version: '1.0.0'); const String changelog = ''' ## NEXT - * Some changes that won't be published until the next time there's a release. - -## 1.0.0 - +## $version * Some other changes. '''; createFakeCHANGELOG(pluginDirectory, changelog); @@ -486,21 +472,16 @@ The first version listed in CHANGELOG.md is 1.0.1. test('Fail if NEXT is left in the CHANGELOG when adding a version bump', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String version = '1.0.1'; + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, version: version); - createFakePubspec(pluginDirectory, isFlutter: true, version: '1.0.1'); const String changelog = ''' -## 1.0.1 - +## $version * Some changes. - ## NEXT - * Some changes that should have been folded in 1.0.1. - ## 1.0.0 - * Some other changes. '''; createFakeCHANGELOG(pluginDirectory, changelog); @@ -529,17 +510,13 @@ into the new version's release notes. }); test('Fail if the version changes without replacing NEXT', () async { - final Directory pluginDirectory = createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + final Directory pluginDirectory = + createFakePlugin('plugin', packagesDir, version: '1.0.1'); - createFakePubspec(pluginDirectory, isFlutter: true, version: '1.0.1'); const String changelog = ''' ## NEXT - * Some changes that should be listed as part of 1.0.1. - ## 1.0.0 - * Some other changes. '''; createFakeCHANGELOG(pluginDirectory, changelog); @@ -588,12 +565,12 @@ The first version listed in CHANGELOG.md is 1.0.0. 'version_check_command', 'Test for $VersionCheckCommand'); runner.addCommand(command); - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '2.0.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'master:packages/plugin/pubspec.yaml': 'version: 1.0.0', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 2.0.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final List output = await runCapturingPrint(runner, ['version-check', '--base-sha=master', '--against-pub']); @@ -625,12 +602,12 @@ The first version listed in CHANGELOG.md is 1.0.0. 'version_check_command', 'Test for $VersionCheckCommand'); runner.addCommand(command); - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '2.0.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'master:packages/plugin/pubspec.yaml': 'version: 1.0.0', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 2.0.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; bool hasError = false; @@ -670,12 +647,12 @@ ${indentation}Allowed versions: {1.0.0: NextVersionType.BREAKING_MAJOR, 0.1.0: N 'version_check_command', 'Test for $VersionCheckCommand'); runner.addCommand(command); - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '2.0.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'master:packages/plugin/pubspec.yaml': 'version: 1.0.0', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 2.0.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; bool hasError = false; final List result = await runCapturingPrint(runner, [ @@ -714,12 +691,12 @@ ${indentation}HTTP response: xx 'version_check_command', 'Test for $VersionCheckCommand'); runner.addCommand(command); - createFakePlugin('plugin', packagesDir, - includeChangeLog: true, includeVersion: true); + const String newVersion = '2.0.0'; + createFakePlugin('plugin', packagesDir, version: newVersion); gitDiffResponse = 'packages/plugin/pubspec.yaml'; gitShowResponses = { 'master:packages/plugin/pubspec.yaml': 'version: 1.0.0', - 'HEAD:packages/plugin/pubspec.yaml': 'version: 2.0.0', + 'HEAD:packages/plugin/pubspec.yaml': 'version: $newVersion', }; final List result = await runCapturingPrint(runner, ['version-check', '--base-sha=master', '--against-pub']); diff --git a/script/tool/test/xctest_command_test.dart b/script/tool/test/xctest_command_test.dart index c0bd6b5dee..050a4d4da7 100644 --- a/script/tool/test/xctest_command_test.dart +++ b/script/tool/test/xctest_command_test.dart @@ -113,16 +113,11 @@ void main() { group('iOS', () { test('skip if iOS is not supported', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isIosPlugin: false, - isMacOsPlugin: true); - - createFakePubspec(pluginDirectory.childDirectory('example'), - isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformMacos: PlatformSupport.inline, + }); final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(0); @@ -135,17 +130,11 @@ void main() { }); test('skip if iOS is implemented in a federated package', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isIosPlugin: true); - createFakePubspec(pluginDirectory, - iosSupport: PlatformSupport.federated); - - createFakePubspec(pluginDirectory.childDirectory('example'), - isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformIos: PlatformSupport.federated + }); final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(0); @@ -158,25 +147,20 @@ void main() { }); test('running with correct destination, exclude 1 plugin', () async { - final Directory pluginDirectory1 = - createFakePlugin('plugin1', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isIosPlugin: true); + createFakePlugin('plugin1', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformIos: PlatformSupport.inline + }); final Directory pluginDirectory2 = - createFakePlugin('plugin2', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isIosPlugin: true); + createFakePlugin('plugin2', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformIos: PlatformSupport.inline + }); - final Directory pluginExampleDirectory1 = - pluginDirectory1.childDirectory('example'); - createFakePubspec(pluginExampleDirectory1, isFlutter: true); final Directory pluginExampleDirectory2 = pluginDirectory2.childDirectory('example'); - createFakePubspec(pluginExampleDirectory2, isFlutter: true); final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(0); @@ -223,17 +207,15 @@ void main() { test('Not specifying --ios-destination assigns an available simulator', () async { final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isIosPlugin: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformIos: PlatformSupport.inline + }); final Directory pluginExampleDirectory = pluginDirectory.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); - final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(0); processRunner.processToReturn = mockProcess; @@ -276,16 +258,13 @@ void main() { group('macOS', () { test('skip if macOS is not supported', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isIosPlugin: true, - isMacOsPlugin: false); - - createFakePubspec(pluginDirectory.childDirectory('example'), - isFlutter: true); + createFakePlugin( + 'plugin', + packagesDir, + extraFiles: >[ + ['example', 'test'], + ], + ); final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(0); @@ -298,17 +277,11 @@ void main() { }); test('skip if macOS is implemented in a federated package', () async { - final Directory pluginDirectory = - createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isMacOsPlugin: true); - createFakePubspec(pluginDirectory, - macosSupport: PlatformSupport.federated); - - createFakePubspec(pluginDirectory.childDirectory('example'), - isFlutter: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformMacos: PlatformSupport.federated, + }); final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(0); @@ -322,15 +295,14 @@ void main() { test('runs for macOS plugin', () async { final Directory pluginDirectory1 = - createFakePlugin('plugin', packagesDir, - withExtraFiles: >[ - ['example', 'test'], - ], - isMacOsPlugin: true); + createFakePlugin('plugin', packagesDir, extraFiles: >[ + ['example', 'test'], + ], platformSupport: { + kPlatformMacos: PlatformSupport.inline, + }); final Directory pluginExampleDirectory = pluginDirectory1.childDirectory('example'); - createFakePubspec(pluginExampleDirectory, isFlutter: true); final MockProcess mockProcess = MockProcess(); mockProcess.exitCodeCompleter.complete(0);