[flutter_tools] add flutterRoot field to JSON machine output (#62053)

This commit is contained in:
Jonah Williams 2020-07-29 08:16:04 -07:00 committed by GitHub
parent d053a4d00a
commit f707f6f6ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 1 deletions

View file

@ -317,7 +317,11 @@ class FlutterCommandRunner extends CommandRunner<void> {
globals.flutterVersion.fetchTagsAndUpdate();
String status;
if (machineFlag) {
status = const JsonEncoder.withIndent(' ').convert(globals.flutterVersion.toJson());
final Map<String, Object> jsonOut = globals.flutterVersion.toJson();
if (jsonOut != null) {
jsonOut['flutterRoot'] = Cache.flutterRoot;
}
status = const JsonEncoder.withIndent(' ').convert(jsonOut);
} else {
status = globals.flutterVersion.toString();
}

View file

@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:convert';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/features.dart';
@ -128,4 +130,21 @@ void main() {
// Only printed by verbose tool.
expect(result.stdout, isNot(contains('exiting with code 0')));
});
test('flutter --version --machine outputs JSON with flutterRoot', () async {
final String flutterBin = globals.fs.path.join(getFlutterRoot(), 'bin', 'flutter');
final ProcessResult result = await const LocalProcessManager().run(<String>[
flutterBin,
'--version',
'--machine',
]);
final Map<String, Object> versionInfo = json.decode(result.stdout
.toString()
.replaceAll('Building flutter tool...', '')
.replaceAll('Waiting for another flutter command to release the startup lock...', '')
.trim()) as Map<String, Object>;
expect(versionInfo, containsPair('flutterRoot', isNotNull));
});
}