Warn when build number and version can't be parsed on iOS (#40611)
diff --git a/packages/flutter_tools/test/general.shard/build_info_test.dart b/packages/flutter_tools/test/general.shard/build_info_test.dart
index 1f12d08..d404696 100644
--- a/packages/flutter_tools/test/general.shard/build_info_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_info_test.dart
@@ -16,7 +16,7 @@
testUsingContext('CFBundleVersion for iOS', () async {
String buildName = validatedBuildNumberForPlatform(TargetPlatform.ios, 'xyz');
- expect(buildName, '0');
+ expect(buildName, isNull);
buildName = validatedBuildNumberForPlatform(TargetPlatform.ios, '0.0.1');
expect(buildName, '0.0.1');
buildName = validatedBuildNumberForPlatform(TargetPlatform.ios, '123.xyz');
@@ -38,7 +38,7 @@
testUsingContext('CFBundleShortVersionString for iOS', () async {
String buildName = validatedBuildNameForPlatform(TargetPlatform.ios, 'xyz');
- expect(buildName, '0.0.0');
+ expect(buildName, isNull);
buildName = validatedBuildNameForPlatform(TargetPlatform.ios, '0.0.1');
expect(buildName, '0.0.1');
buildName = validatedBuildNameForPlatform(TargetPlatform.ios, '123.456.xyz');
diff --git a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart
index 9e1b8ae..10765df 100644
--- a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart
+++ b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart
@@ -629,6 +629,41 @@
expectedBuildNumber: '3',
);
});
+
+ testUsingOsxContext('default build name and number when version is missing', () async {
+ const String manifest = '''
+name: test
+dependencies:
+ flutter:
+ sdk: flutter
+flutter:
+''';
+ const BuildInfo buildInfo = BuildInfo(BuildMode.release, null);
+ await checkBuildVersion(
+ manifestString: manifest,
+ buildInfo: buildInfo,
+ expectedBuildName: '1.0.0',
+ expectedBuildNumber: '1',
+ );
+ });
+
+ testUsingOsxContext('fail when build name cannot be parsed', () async {
+ const String manifest = '''
+name: test
+dependencies:
+ flutter:
+ sdk: flutter
+flutter:
+''';
+ const BuildInfo buildInfo = BuildInfo(BuildMode.release, null, buildName: 'abc', buildNumber: '1');
+
+ const String stderr = 'Cannot parse build name abc, check pubspec.yaml version.';
+ expect(() async => await checkBuildVersion(
+ manifestString: manifest,
+ buildInfo: buildInfo
+ ),
+ throwsToolExit(message: stderr));
+ });
});
}