Unverified Commit 50fb7296 authored by jslavitz's avatar jslavitz Committed by GitHub

Includes frameworkVersion in JSON version output (#23891)

* Include framework version in JSON output and adds test
parent 73428160
...@@ -108,6 +108,7 @@ class FlutterVersion { ...@@ -108,6 +108,7 @@ class FlutterVersion {
} }
Map<String, Object> toJson() => <String, Object>{ Map<String, Object> toJson() => <String, Object>{
'frameworkVersion': frameworkVersion ?? 'unknown',
'channel': channel, 'channel': channel,
'repositoryUrl': repositoryUrl ?? 'unknown source', 'repositoryUrl': repositoryUrl ?? 'unknown source',
'frameworkRevision': frameworkRevision, 'frameworkRevision': frameworkRevision,
......
...@@ -13,6 +13,7 @@ import 'package:flutter_tools/src/runner/flutter_command_runner.dart'; ...@@ -13,6 +13,7 @@ import 'package:flutter_tools/src/runner/flutter_command_runner.dart';
import 'package:flutter_tools/src/version.dart'; import 'package:flutter_tools/src/version.dart';
import 'package:mockito/mockito.dart'; import 'package:mockito/mockito.dart';
import 'package:platform/platform.dart'; import 'package:platform/platform.dart';
import 'package:process/process.dart';
import '../src/common.dart'; import '../src/common.dart';
import '../src/context.dart'; import '../src/context.dart';
...@@ -28,6 +29,7 @@ void main() { ...@@ -28,6 +29,7 @@ void main() {
MemoryFileSystem fs; MemoryFileSystem fs;
Platform platform; Platform platform;
FlutterCommandRunner runner; FlutterCommandRunner runner;
ProcessManager processManager;
setUpAll(() { setUpAll(() {
Cache.disableLocking(); Cache.disableLocking();
...@@ -39,11 +41,15 @@ void main() { ...@@ -39,11 +41,15 @@ void main() {
fs.directory(_kProjectRoot).createSync(recursive: true); fs.directory(_kProjectRoot).createSync(recursive: true);
fs.currentDirectory = _kProjectRoot; fs.currentDirectory = _kProjectRoot;
platform = FakePlatform(environment: <String, String>{ platform = FakePlatform(
'FLUTTER_ROOT': _kFlutterRoot, environment: <String, String>{
}); 'FLUTTER_ROOT': _kFlutterRoot,
},
version: '1 2 3 4 5',
);
runner = createTestCommandRunner(DummyFlutterCommand()); runner = createTestCommandRunner(DummyFlutterCommand());
processManager = MockProcessManager();
}); });
group('run', () { group('run', () {
...@@ -73,6 +79,36 @@ void main() { ...@@ -73,6 +79,36 @@ void main() {
}, initializeFlutterRoot: false); }, initializeFlutterRoot: false);
}); });
group('version', () {
testUsingContext('checks that Flutter toJson output reports the flutter framework version', () async {
final ProcessResult result = ProcessResult(0, 0, 'random', '0');
when(processManager.runSync('git log -n 1 --pretty=format:%H'.split(' '),
workingDirectory: Cache.flutterRoot)).thenReturn(result);
when(processManager.runSync('git rev-parse --abbrev-ref --symbolic @{u}'.split(' '),
workingDirectory: Cache.flutterRoot)).thenReturn(result);
when(processManager.runSync('git rev-parse --abbrev-ref HEAD'.split(' '),
workingDirectory: Cache.flutterRoot)).thenReturn(result);
when(processManager.runSync('git ls-remote --get-url master'.split(' '),
workingDirectory: Cache.flutterRoot)).thenReturn(result);
when(processManager.runSync('git log -n 1 --pretty=format:%ar'.split(' '),
workingDirectory: Cache.flutterRoot)).thenReturn(result);
when(processManager.runSync('git describe --match v*.*.* --first-parent --long --tags'.split(' '),
workingDirectory: Cache.flutterRoot)).thenReturn(result);
when(processManager.runSync('git log -n 1 --pretty=format:%ad --date=iso'.split(' '),
workingDirectory: Cache.flutterRoot)).thenReturn(result);
final FakeFlutterVersion version = FakeFlutterVersion();
// Because the hash depends on the time, we just use the 0.0.0-unknown here.
expect(version.toJson()['frameworkVersion'], '0.10.3');
}, overrides: <Type, Generator>{
FileSystem: () => fs,
Platform: () => platform,
ProcessManager: () => processManager,
}, initializeFlutterRoot: false);
});
group('getRepoPackages', () { group('getRepoPackages', () {
setUp(() { setUp(() {
fs.directory(fs.path.join(_kFlutterRoot, 'examples')) fs.directory(fs.path.join(_kFlutterRoot, 'examples'))
...@@ -144,6 +180,12 @@ void main() { ...@@ -144,6 +180,12 @@ void main() {
}); });
}); });
} }
class MockProcessManager extends Mock implements ProcessManager {}
class FakeFlutterVersion extends FlutterVersion {
@override
String get frameworkVersion => '0.10.3';
}
class FakeCommand extends FlutterCommand { class FakeCommand extends FlutterCommand {
OutputPreferences preferences; OutputPreferences preferences;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment