blob: 42323b3c774eebe9f096c51e4dc510693a592bbe [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// ignore_for_file: implementation_imports
// ignore_for_file: invalid_use_of_visible_for_testing_member
@TestOn('vm')
import 'package:devtools_app/src/globals.dart';
import 'package:devtools_app/src/info/info_controller.dart';
import 'package:devtools_app/src/version.dart';
import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart';
import 'package:devtools_testing/support/flutter_test_environment.dart';
Future<void> runInfoControllerTests(FlutterTestEnvironment env) async {
InfoController infoController;
group('info controller', () {
test('entering', () async {
await env.setupEnvironment();
FlutterVersion flutterVersion;
List<Flag> flags;
infoController = InfoController(
onFlutterVersionChanged: (version) {
flutterVersion = version;
},
onFlagListChanged: (flagList) {
flags = flagList.flags;
},
);
expect(flags, null);
expect(flutterVersion, null);
await infoController.entering();
// TODO(kenzie): remove the try catch block once Flutter stable supports
// the flutterVersion service. Revisit this end of November 2019.
try {
final flutterVersionResponse = await serviceManager.getFlutterVersion();
final expectedFlutterVersion =
FlutterVersion.parse(flutterVersionResponse.json);
expect(flutterVersion, equals(expectedFlutterVersion));
} catch (e) {
expect(flutterVersion, isNull);
expect(
e.toString(),
equals('Exception: There are no registered methods for service'
' "flutterVersion"'),
);
}
expect(flags, isNotNull);
final flagList = await env.service.getFlagList();
expect(flags.length, flagList.flags.length);
final expectedFlags = [
Flag.parse({
'name': 'causal_async_stacks',
'comment': 'Improved async stacks',
'modified': true,
'valueAsString': 'true'
}),
Flag.parse({
'name': 'async_debugger',
'comment': 'Debugger support async functions.',
'modified': false,
'valueAsString': 'true'
}),
];
for (var i = 0; i < flags.length; i++) {
expect(flags[i].toString(), flagList.flags[i].toString());
if (expectedFlags.isNotEmpty &&
expectedFlags.last.toString() == flags[i].toString()) {
expectedFlags.removeLast();
}
}
expect(
expectedFlags.length,
0,
reason: 'Value of expectedFlags is $expectedFlags',
);
await env.tearDownEnvironment(force: true);
});
}, timeout: const Timeout.factor(8), tags: 'useFlutterSdk');
// TODO: Add a test that uses DartVM instead of Flutter
}