blob: cd27d47123a138b28c071c4d5ac0154733dcb3e6 [file] [log] [blame]
// 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')));
});
});
}