Use the FlutterVersion defined in context (#50040)
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart
index 99adc78..d5aa84e 100644
--- a/packages/flutter_tools/lib/src/vmservice.dart
+++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -226,7 +226,7 @@
}
_peer.registerMethod('flutterVersion', (rpc.Parameters params) async {
- final FlutterVersion version = FlutterVersion();
+ final FlutterVersion version = context.get<FlutterVersion>() ?? FlutterVersion();
final Map<String, Object> versionJson = version.toJson();
versionJson['frameworkRevisionShort'] = version.frameworkRevisionShort;
versionJson['engineRevisionShort'] = version.engineRevisionShort;
diff --git a/packages/flutter_tools/test/general.shard/vmservice_test.dart b/packages/flutter_tools/test/general.shard/vmservice_test.dart
index f7ea226..f521783 100644
--- a/packages/flutter_tools/test/general.shard/vmservice_test.dart
+++ b/packages/flutter_tools/test/general.shard/vmservice_test.dart
@@ -9,6 +9,7 @@
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/terminal.dart';
import 'package:flutter_tools/src/device.dart';
+import 'package:flutter_tools/src/version.dart';
import 'package:flutter_tools/src/vmservice.dart';
import 'package:json_rpc_2/json_rpc_2.dart' as rpc;
import 'package:mockito/mockito.dart';
@@ -21,6 +22,8 @@
class MockPeer implements rpc.Peer {
+ Function _versionFn = (dynamic _) => null;
+
@override
rpc.ErrorCallback get onUnhandledError => null;
@@ -52,6 +55,9 @@
@override
void registerMethod(String name, Function callback) {
registeredMethods.add(name);
+ if (name == 'flutterVersion') {
+ _versionFn = callback;
+ }
}
@override
@@ -157,6 +163,9 @@
] : <dynamic>[],
};
}
+ if (method == 'flutterVersion') {
+ return _versionFn(parameters);
+ }
return null;
}
@@ -168,6 +177,7 @@
void main() {
MockStdio mockStdio;
+ final MockFlutterVersion mockVersion = MockFlutterVersion();
group('VMService', () {
setUp(() {
@@ -316,7 +326,24 @@
platform: FakePlatform(),
),
});
+
+ testUsingContext('returns correct FlutterVersion', () {
+ FakeAsync().run((FakeAsync time) async {
+ final MockPeer mockPeer = MockPeer();
+ VMService(mockPeer, null, null, null, null, null, MockDevice(), null);
+
+ expect(mockPeer.registeredMethods, contains('flutterVersion'));
+ expect(await mockPeer.sendRequest('flutterVersion'), equals(mockVersion.toJson()));
+ });
+ }, overrides: <Type, Generator>{
+ FlutterVersion: () => mockVersion,
+ });
});
}
class MockDevice extends Mock implements Device {}
+
+class MockFlutterVersion extends Mock implements FlutterVersion {
+ @override
+ Map<String, Object> toJson() => const <String, Object>{'Mock': 'Version'};
+}