From 48fab86c6ecbae682a1072d9d5e451c31def8242 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Thu, 30 Jul 2020 13:49:15 -0700 Subject: [PATCH] [flutter_tools] update pubspec .yaml message should not be displayed when creating a new plugin (#62599) * update pubspec message should not be displayed when creating a new plugin * formatting * revikew * review * cleanup --- .../lib/src/commands/create.dart | 4 ++- .../commands.shard/permeable/create_test.dart | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) mode change 100644 => 100755 packages/flutter_tools/test/commands.shard/permeable/create_test.dart diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart index 76aeb17d3f..94ab4bc969 100644 --- a/packages/flutter_tools/lib/src/commands/create.dart +++ b/packages/flutter_tools/lib/src/commands/create.dart @@ -612,7 +612,9 @@ To edit platform code in an IDE see https://flutter.dev/developing-packages/#edi ); } - if (willAddPlatforms) { + final bool addPlatformsToExistingPlugin = willAddPlatforms && existingPlatforms.isNotEmpty; + + if (addPlatformsToExistingPlugin) { // If adding new platforms to an existing plugin project, prints // a help message containing the platforms maps need to be added to the `platforms` key in the pubspec. platformsToAdd.removeWhere(existingPlatforms.contains); diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart old mode 100644 new mode 100755 index 9c83481ba7..888ad72253 --- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart @@ -10,6 +10,7 @@ import 'package:args/command_runner.dart'; import 'package:flutter_tools/src/artifacts.dart'; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/io.dart'; +import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/net.dart'; import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/build_info.dart'; @@ -47,6 +48,7 @@ void main() { Directory projectDir; FlutterVersion mockFlutterVersion; LoggingProcessManager loggingProcessManager; + BufferLogger logger; setUpAll(() async { Cache.disableLocking(); @@ -55,6 +57,7 @@ void main() { setUp(() { loggingProcessManager = LoggingProcessManager(); + logger = BufferLogger.test(); tempDir = globals.fs.systemTempDirectory.createTempSync('flutter_tools_create_test.'); projectDir = tempDir.childDirectory('flutter_project'); mockFlutterVersion = MockFlutterVersion(); @@ -1935,6 +1938,34 @@ void main() { FeatureFlags: () => TestFeatureFlags(isMacOSEnabled: true), }); + testUsingContext('flutter create -t plugin in an empty folder should not show pubspec.yaml updating suggestion', () async { + Cache.flutterRoot = '../..'; + when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision); + when(mockFlutterVersion.channel).thenReturn(frameworkChannel); + + final CreateCommand command = CreateCommand(); + final CommandRunner runner = createTestCommandRunner(command); + await runner.run(['create', '--no-pub', '--template=plugin', '--platforms=android', projectDir.path]); + expect(logger.statusText, isNot(contains('The `pubspec.yaml` under the project directory must be updated to support'))); + }, overrides: { + Logger: () => logger, + }); + + testUsingContext('flutter create -t plugin in an existing plugin should show pubspec.yaml updating suggestion', () async { + Cache.flutterRoot = '../..'; + when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision); + when(mockFlutterVersion.channel).thenReturn(frameworkChannel); + + final CreateCommand command = CreateCommand(); + final CommandRunner runner = createTestCommandRunner(command); + await runner.run(['create', '--no-pub', '--template=plugin', '--platforms=ios', projectDir.path]); + expect(logger.statusText, isNot(contains('The `pubspec.yaml` under the project directory must be updated to support'))); + await runner.run(['create', '--no-pub', '--template=plugin', '--platforms=android', projectDir.path]); + expect(logger.statusText, contains('The `pubspec.yaml` under the project directory must be updated to support')); + }, overrides: { + Logger: () => logger, + }); + } Future _createProject(