Update logic for parsing sdk version number (#15918)
* add logic to parse 11.3 sim runtime major version
* add null aware and bump group number
* add comment describing version
diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart
index f50aa5b..29e3a09 100644
--- a/packages/flutter_tools/lib/src/ios/simulators.dart
+++ b/packages/flutter_tools/lib/src/ios/simulators.dart
@@ -441,11 +441,11 @@
@override
Future<String> get sdkNameAndVersion async => category;
- final RegExp _iosSdkRegExp = new RegExp(r'iOS (\d+)');
+ final RegExp _iosSdkRegExp = new RegExp(r'iOS( |-)(\d+)');
Future<int> get sdkMajorVersion async {
final Match sdkMatch = _iosSdkRegExp.firstMatch(await sdkNameAndVersion);
- return int.parse(sdkMatch.group(1) ?? 11);
+ return int.parse(sdkMatch?.group(2) ?? 11);
}
@override
diff --git a/packages/flutter_tools/test/ios/simulators_test.dart b/packages/flutter_tools/test/ios/simulators_test.dart
index d717f96..dd2b599 100644
--- a/packages/flutter_tools/test/ios/simulators_test.dart
+++ b/packages/flutter_tools/test/ios/simulators_test.dart
@@ -94,6 +94,21 @@
});
});
+ group('sdkMajorVersion', () {
+ // This new version string appears in SimulatorApp-850 CoreSimulator-518.16 beta.
+ test('can be parsed from iOS-11-3', () async {
+ final IOSSimulator device = new IOSSimulator('x', name: 'iPhone SE', category: 'com.apple.CoreSimulator.SimRuntime.iOS-11-3');
+
+ expect(await device.sdkMajorVersion, 11);
+ });
+
+ test('can be parsed from iOS 11.2', () async {
+ final IOSSimulator device = new IOSSimulator('x', name: 'iPhone SE', category: 'iOS 11.2');
+
+ expect(await device.sdkMajorVersion, 11);
+ });
+ });
+
group('IOSSimulator.isSupported', () {
testUsingContext('Apple TV is unsupported', () {
expect(new IOSSimulator('x', name: 'Apple TV').isSupported(), false);