Unverified Commit 907bed69 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] daemon does not report platforms that are not enabled (#73736)

parent 737496e8
...@@ -19,6 +19,7 @@ import '../build_info.dart'; ...@@ -19,6 +19,7 @@ import '../build_info.dart';
import '../convert.dart'; import '../convert.dart';
import '../device.dart'; import '../device.dart';
import '../emulator.dart'; import '../emulator.dart';
import '../features.dart';
import '../globals.dart' as globals; import '../globals.dart' as globals;
import '../project.dart'; import '../project.dart';
import '../resident_runner.dart'; import '../resident_runner.dart';
...@@ -365,28 +366,26 @@ class DaemonDomain extends Domain { ...@@ -365,28 +366,26 @@ class DaemonDomain extends Domain {
final String projectRoot = _getStringArg(args, 'projectRoot', required: true); final String projectRoot = _getStringArg(args, 'projectRoot', required: true);
final List<String> result = <String>[]; final List<String> result = <String>[];
try { try {
// TODO(jonahwilliams): replace this with a project metadata check once
// that has been implemented.
final FlutterProject flutterProject = FlutterProject.fromDirectory(globals.fs.directory(projectRoot)); final FlutterProject flutterProject = FlutterProject.fromDirectory(globals.fs.directory(projectRoot));
if (flutterProject.linux.existsSync()) { if (featureFlags.isLinuxEnabled && flutterProject.linux.existsSync()) {
result.add('linux'); result.add('linux');
} }
if (flutterProject.macos.existsSync()) { if (featureFlags.isMacOSEnabled && flutterProject.macos.existsSync()) {
result.add('macos'); result.add('macos');
} }
if (flutterProject.windows.existsSync()) { if (featureFlags.isWindowsEnabled && flutterProject.windows.existsSync()) {
result.add('windows'); result.add('windows');
} }
if (flutterProject.ios.existsSync()) { if (featureFlags.isIOSEnabled && flutterProject.ios.existsSync()) {
result.add('ios'); result.add('ios');
} }
if (flutterProject.android.existsSync()) { if (featureFlags.isAndroidEnabled && flutterProject.android.existsSync()) {
result.add('android'); result.add('android');
} }
if (flutterProject.web.existsSync()) { if (featureFlags.isWebEnabled && flutterProject.web.existsSync()) {
result.add('web'); result.add('web');
} }
if (flutterProject.fuchsia.existsSync()) { if (featureFlags.isFuchsiaEnabled && flutterProject.fuchsia.existsSync()) {
result.add('fuchsia'); result.add('fuchsia');
} }
return <String, Object>{ return <String, Object>{
......
...@@ -9,6 +9,7 @@ import 'package:flutter_tools/src/base/common.dart'; ...@@ -9,6 +9,7 @@ import 'package:flutter_tools/src/base/common.dart';
import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/utils.dart'; import 'package:flutter_tools/src/base/utils.dart';
import 'package:flutter_tools/src/commands/daemon.dart'; import 'package:flutter_tools/src/commands/daemon.dart';
import 'package:flutter_tools/src/features.dart';
import 'package:flutter_tools/src/fuchsia/fuchsia_workflow.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_workflow.dart';
import 'package:flutter_tools/src/globals.dart' as globals; import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:flutter_tools/src/ios/ios_workflow.dart'; import 'package:flutter_tools/src/ios/ios_workflow.dart';
...@@ -19,6 +20,7 @@ import 'package:fake_async/fake_async.dart'; ...@@ -19,6 +20,7 @@ import 'package:fake_async/fake_async.dart';
import '../../src/common.dart'; import '../../src/common.dart';
import '../../src/context.dart'; import '../../src/context.dart';
import '../../src/mocks.dart'; import '../../src/mocks.dart';
import '../../src/testbed.dart';
void main() { void main() {
Daemon daemon; Daemon daemon;
...@@ -57,6 +59,30 @@ void main() { ...@@ -57,6 +59,30 @@ void main() {
await commands.close(); await commands.close();
}); });
testUsingContext('daemon.getSupportedPlatforms command should succeed', () async {
final StreamController<Map<String, dynamic>> commands = StreamController<Map<String, dynamic>>();
final StreamController<Map<String, dynamic>> responses = StreamController<Map<String, dynamic>>();
daemon = Daemon(
commands.stream,
responses.add,
notifyingLogger: notifyingLogger,
);
// Use the flutter_gallery project which has a known set of supported platforms.
final String projectPath = globals.fs.path.join(getFlutterRoot(), 'dev', 'integration_tests', 'flutter_gallery');
commands.add(<String, dynamic>{'id': 0, 'method': 'daemon.getSupportedPlatforms', 'params': <String, Object>{'projectRoot': projectPath}});
final Map<String, dynamic> response = await responses.stream.firstWhere(_notEvent);
expect(response['id'], 0);
expect(response['result'], isNotEmpty);
expect(response['result']['platforms'], <String>{'macos'});
await responses.close();
await commands.close();
}, overrides: <Type, Generator>{
// Disable Android/iOS and enable macOS to make sure result is consistent and defaults are tested off.
FeatureFlags: () => TestFeatureFlags(isAndroidEnabled: false, isIOSEnabled: false, isMacOSEnabled: true),
});
testUsingContext('printError should send daemon.logMessage event', () async { testUsingContext('printError should send daemon.logMessage event', () async {
final StreamController<Map<String, dynamic>> commands = StreamController<Map<String, dynamic>>(); final StreamController<Map<String, dynamic>> commands = StreamController<Map<String, dynamic>>();
final StreamController<Map<String, dynamic>> responses = StreamController<Map<String, dynamic>>(); final StreamController<Map<String, dynamic>> responses = StreamController<Map<String, dynamic>>();
...@@ -443,7 +469,7 @@ void main() { ...@@ -443,7 +469,7 @@ void main() {
}); });
testWithoutContext('does not run any operations concurrently', () async { testWithoutContext('does not run any operations concurrently', () async {
// Crete a function thats slow, but throws if another instance of the // Crete a function that's slow, but throws if another instance of the
// function is running. // function is running.
bool isRunning = false; bool isRunning = false;
Future<int> f(int ret) async { Future<int> f(int ret) async {
......
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