Skip to content

Commit 5010941

Browse files
Fix bug with version parsing (flutter#3473)
1 parent 4856206 commit 5010941

5 files changed

Lines changed: 44 additions & 8 deletions

File tree

.github/workflows/build.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ on:
1717
# track the latest Flutter dev release. Dev releases come out ~weekly;
1818
# the versions can be viewed at https://github.com/flutter/flutter/tags.
1919
env:
20-
CHANNEL: 2.6.0-11.0.pre
20+
CHANNEL: 2.7.0-3.0.pre
2121

2222
jobs:
2323

case_study/platform_channel/lib/channel_demo.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter/services.dart';
3-
import 'package:flutter/widgets.dart';
43

54
class ChannelDemo extends StatefulWidget {
65
@override

flutter-version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.6.0-11.0.pre
1+
2.7.0-3.0.pre

packages/devtools_app/lib/src/version.dart

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,18 @@ class FlutterVersion extends SemanticVersion {
8888

8989
// Example Dart version string: "2.15.0 (build 2.15.0-178.1.beta)"
9090
const prefix = '(build ';
91-
final startIndex = versionString.indexOf(prefix) + prefix.length;
92-
final rawVersion = versionString.substring(
93-
startIndex,
94-
versionString.length - 1,
95-
);
91+
final indexOfPrefix = versionString.indexOf(prefix);
92+
93+
String rawVersion;
94+
if (indexOfPrefix != -1) {
95+
final startIndex = indexOfPrefix + prefix.length;
96+
rawVersion = versionString.substring(
97+
startIndex,
98+
versionString.length - 1,
99+
);
100+
} else {
101+
rawVersion = versionString;
102+
}
96103
return SemanticVersion.parse(rawVersion);
97104
}
98105
}

packages/devtools_app/test/version_test.dart

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,39 @@ void main() {
6868
expect(flutterVersion.minor, equals(0));
6969
expect(flutterVersion.patch, equals(0));
7070
});
71+
72+
test('parses dart version correctly', () {
73+
var flutterVersion = FlutterVersion.parse({
74+
'frameworkVersion': '2.8.0',
75+
'dartSdkVersion': '2.15.0',
76+
});
77+
expect(flutterVersion.dartSdkVersion.toString(), equals('2.15.0'));
78+
flutterVersion = FlutterVersion.parse({
79+
'frameworkVersion': '2.8.0',
80+
'dartSdkVersion': '2.15.0 (build 2.15.0-178.1.beta)',
81+
});
82+
expect(flutterVersion.dartSdkVersion.toString(), equals('2.15.0-178.1'));
83+
});
7184
});
7285

7386
group('SemanticVersion', () {
87+
test('parse', () {
88+
expect(
89+
SemanticVersion.parse(
90+
'2.15.0-233.0.dev (dev) (Mon Oct 18 14:06:26 2021 -0700) on "ios_x64"')
91+
.toString(),
92+
equals('2.15.0-233.0'),
93+
);
94+
expect(
95+
SemanticVersion.parse('2.15.0-178.1.beta').toString(),
96+
equals('2.15.0-178.1'),
97+
);
98+
expect(
99+
SemanticVersion.parse('2.6.0-12.0.pre.443').toString(),
100+
equals('2.6.0-12.0'),
101+
);
102+
});
103+
74104
test('isVersionSupported', () {
75105
final supportedVersion = SemanticVersion(major: 1, minor: 1, patch: 1);
76106
expect(

0 commit comments

Comments
 (0)