| // Copyright 2014 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import 'dart:io'; | |
| import 'package:file/memory.dart'; | |
| import 'package:platform/platform.dart'; | |
| import 'package:pub_semver/pub_semver.dart'; | |
| import 'package:snippets/snippets.dart'; | |
| import 'package:test/test.dart' hide TypeMatcher, isInstanceOf; | |
| import 'fake_process_manager.dart'; | |
| const String testVersionInfo = r''' | |
| { | |
| "frameworkVersion": "2.5.0-2.0.pre.63", | |
| "channel": "master", | |
| "repositoryUrl": "git@github.com:flutter/flutter.git", | |
| "frameworkRevision": "9b2f6f7f9ab96bb3302f81b814a094f33023e79a", | |
| "frameworkCommitDate": "2021-07-28 13:03:40 -0700", | |
| "engineRevision": "0ed62a16f36348e97b2baadd8ccfec3825f80c5d", | |
| "dartSdkVersion": "2.14.0 (build 2.14.0-360.0.dev)", | |
| "flutterRoot": "/home/user/flutter" | |
| } | |
| '''; | |
| void main() { | |
| group('FlutterInformation', () { | |
| late FakeProcessManager fakeProcessManager; | |
| late FakePlatform fakePlatform; | |
| late MemoryFileSystem memoryFileSystem; | |
| late FlutterInformation flutterInformation; | |
| setUp(() { | |
| fakeProcessManager = FakeProcessManager(); | |
| memoryFileSystem = MemoryFileSystem(); | |
| fakePlatform = FakePlatform(environment: <String, String>{}); | |
| flutterInformation = FlutterInformation( | |
| filesystem: memoryFileSystem, | |
| processManager: fakeProcessManager, | |
| platform: fakePlatform, | |
| ); | |
| }); | |
| test('calls out to flutter if FLUTTER_VERSION is not set', () async { | |
| fakeProcessManager.stdout = testVersionInfo; | |
| final Map<String, dynamic> info = flutterInformation.getFlutterInformation(); | |
| expect(fakeProcessManager.runs, equals(1)); | |
| expect(info['frameworkVersion'], equals(Version.parse('2.5.0-2.0.pre.63'))); | |
| }); | |
| test("doesn't call out to flutter if FLUTTER_VERSION is set", () async { | |
| fakePlatform.environment['FLUTTER_VERSION'] = testVersionInfo; | |
| final Map<String, dynamic> info = flutterInformation.getFlutterInformation(); | |
| expect(fakeProcessManager.runs, equals(0)); | |
| expect(info['frameworkVersion'], equals(Version.parse('2.5.0-2.0.pre.63'))); | |
| }); | |
| test('getFlutterRoot calls out to flutter if FLUTTER_ROOT is not set', () async { | |
| fakeProcessManager.stdout = testVersionInfo; | |
| final Directory root = flutterInformation.getFlutterRoot(); | |
| expect(fakeProcessManager.runs, equals(1)); | |
| expect(root.path, equals('/home/user/flutter')); | |
| }); | |
| test("getFlutterRoot doesn't call out to flutter if FLUTTER_ROOT is set", () async { | |
| fakePlatform.environment['FLUTTER_ROOT'] = '/home/user/flutter'; | |
| final Directory root = flutterInformation.getFlutterRoot(); | |
| expect(fakeProcessManager.runs, equals(0)); | |
| expect(root.path, equals('/home/user/flutter')); | |
| }); | |
| test('parses version properly', () async { | |
| fakePlatform.environment['FLUTTER_VERSION'] = testVersionInfo; | |
| final Map<String, dynamic> info = flutterInformation.getFlutterInformation(); | |
| expect(info['frameworkVersion'], isNotNull); | |
| expect(info['frameworkVersion'], equals(Version.parse('2.5.0-2.0.pre.63'))); | |
| expect(info['dartSdkVersion'], isNotNull); | |
| expect(info['dartSdkVersion'], equals(Version.parse('2.14.0-360.0.dev'))); | |
| }); | |
| }); | |
| } |