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(