From 8be1c9ef255d99be2c62b1a56ffc09b32ea5e6df Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 21 Jul 2020 02:26:04 -0700 Subject: [PATCH] [flutter_tools] turn off fuchsia support by default (#61634) --- .../flutter_tools/bin/fuchsia_attach.dart | 30 +++++++++++++++++++ .../lib/src/commands/build_fuchsia.dart | 7 +++++ packages/flutter_tools/lib/src/features.dart | 2 +- .../hermetic/build_fuchsia_test.dart | 24 +++++++++++++++ .../hermetic/precache_test.dart | 2 ++ packages/flutter_tools/test/src/testbed.dart | 2 +- 6 files changed, 65 insertions(+), 2 deletions(-) diff --git a/packages/flutter_tools/bin/fuchsia_attach.dart b/packages/flutter_tools/bin/fuchsia_attach.dart index 09582d60f4..d4457e81e9 100644 --- a/packages/flutter_tools/bin/fuchsia_attach.dart +++ b/packages/flutter_tools/bin/fuchsia_attach.dart @@ -15,6 +15,7 @@ import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/attach.dart'; import 'package:flutter_tools/src/commands/doctor.dart'; import 'package:flutter_tools/src/device.dart'; +import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_device.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_sdk.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_workflow.dart'; @@ -106,6 +107,7 @@ Future main(List args) async { muteCommandLogging: false, verboseHelp: false, overrides: { + FeatureFlags: () => const _FuchsiaFeatureFlags(), DeviceManager: () => _FuchsiaDeviceManager(), FuchsiaArtifacts: () => FuchsiaArtifacts(sshConfig: sshConfig, devFinder: devFinder), Artifacts: () => OverrideArtifacts( @@ -171,3 +173,31 @@ class _FuchsiaAttachCommand extends AttachCommand { return super.runCommand(); } } + +class _FuchsiaFeatureFlags extends FeatureFlags { + const _FuchsiaFeatureFlags(); + + @override + bool get isLinuxEnabled => false; + + @override + bool get isMacOSEnabled => false; + + @override + bool get isWebEnabled => false; + + @override + bool get isWindowsEnabled => false; + + @override + bool get isAndroidEnabled => false; + + @override + bool get isIOSEnabled => false; + + @override + bool get isFuchsiaEnabled => true; + + @override + bool get isSingleWidgetReloadEnabled => false; +} diff --git a/packages/flutter_tools/lib/src/commands/build_fuchsia.dart b/packages/flutter_tools/lib/src/commands/build_fuchsia.dart index 0e1f00f6e9..a0f724caec 100644 --- a/packages/flutter_tools/lib/src/commands/build_fuchsia.dart +++ b/packages/flutter_tools/lib/src/commands/build_fuchsia.dart @@ -9,6 +9,7 @@ import 'package:meta/meta.dart'; import '../base/common.dart'; import '../build_info.dart'; import '../cache.dart'; +import '../features.dart'; import '../fuchsia/fuchsia_build.dart'; import '../fuchsia/fuchsia_pm.dart'; import '../globals.dart' as globals; @@ -59,6 +60,12 @@ class BuildFuchsiaCommand extends BuildSubCommand { @override Future runCommand() async { + if (!featureFlags.isFuchsiaEnabled) { + throwToolExit( + '"build fuchsia" is currently disabled. See "flutter config" for more ' + 'information.' + ); + } final BuildInfo buildInfo = getBuildInfo(); final FlutterProject flutterProject = FlutterProject.current(); if (!globals.platform.isLinux && !globals.platform.isMacOS) { diff --git a/packages/flutter_tools/lib/src/features.dart b/packages/flutter_tools/lib/src/features.dart index 6ae5f0e3a1..05d814c758 100644 --- a/packages/flutter_tools/lib/src/features.dart +++ b/packages/flutter_tools/lib/src/features.dart @@ -227,7 +227,7 @@ const Feature flutterFuchsiaFeature = Feature( environmentOverride: 'FLUTTER_FUCHSIA', master: FeatureChannelSetting( available: true, - enabledByDefault: true, + enabledByDefault: false, ), ); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_fuchsia_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_fuchsia_test.dart index 1fa411de2e..efc9bcb300 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_fuchsia_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_fuchsia_test.dart @@ -9,6 +9,7 @@ import 'package:flutter_tools/src/base/platform.dart'; import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/build.dart'; +import 'package:flutter_tools/src/features.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_kernel_compiler.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_pm.dart'; import 'package:flutter_tools/src/fuchsia/fuchsia_sdk.dart'; @@ -20,6 +21,7 @@ import 'package:process/process.dart'; import '../../src/common.dart'; import '../../src/context.dart'; import '../../src/mocks.dart'; +import '../../src/testbed.dart'; // Defined globally for mocks to use. FileSystem fileSystem; @@ -47,6 +49,23 @@ void main() { }); group('Fuchsia build fails gracefully when', () { + testUsingContext('The feature is disabled', () async { + final BuildCommand command = BuildCommand(); + fileSystem.directory('fuchsia').createSync(recursive: true); + fileSystem.file('.packages').createSync(); + fileSystem.file('pubspec.yaml').createSync(); + fileSystem.file('lib/main.dart').createSync(recursive: true); + + expect( + createTestCommandRunner(command).run(const ['build', 'fuchsia']), + throwsToolExit(message: '"build fuchsia" is currently disabled'), + ); + }, overrides: { + Platform: () => linuxPlatform, + FileSystem: () => fileSystem, + ProcessManager: () => FakeProcessManager.any(), + FeatureFlags: () => TestFeatureFlags(isFuchsiaEnabled: false), + }); testUsingContext('there is no Fuchsia project', () async { final BuildCommand command = BuildCommand(); @@ -58,6 +77,7 @@ void main() { Platform: () => linuxPlatform, FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.any(), + FeatureFlags: () => TestFeatureFlags(isFuchsiaEnabled: true), }); testUsingContext('there is no cmx file', () async { @@ -74,6 +94,7 @@ void main() { Platform: () => linuxPlatform, FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.any(), + FeatureFlags: () => TestFeatureFlags(isFuchsiaEnabled: true), }); testUsingContext('on Windows platform', () async { @@ -95,6 +116,7 @@ void main() { Platform: () => windowsPlatform, FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.any(), + FeatureFlags: () => TestFeatureFlags(isFuchsiaEnabled: true), }); testUsingContext('there is no Fuchsia kernel compiler', () async { @@ -117,6 +139,7 @@ void main() { Platform: () => linuxPlatform, FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.any(), + FeatureFlags: () => TestFeatureFlags(isFuchsiaEnabled: true), }); }); @@ -145,6 +168,7 @@ void main() { FileSystem: () => fileSystem, ProcessManager: () => FakeProcessManager.any(), FuchsiaSdk: () => fuchsiaSdk, + FeatureFlags: () => TestFeatureFlags(isFuchsiaEnabled: true), }); } diff --git a/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart index edfa87dd39..b4dcd818fe 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/precache_test.dart @@ -216,6 +216,7 @@ void main() { isLinuxEnabled: true, isMacOSEnabled: true, isWindowsEnabled: true, + isFuchsiaEnabled: true, ), platform: FakePlatform(environment: {}), ); @@ -329,6 +330,7 @@ void main() { isLinuxEnabled: true, isMacOSEnabled: true, isWindowsEnabled: true, + isFuchsiaEnabled: true, ), platform: FakePlatform(environment: {}), ); diff --git a/packages/flutter_tools/test/src/testbed.dart b/packages/flutter_tools/test/src/testbed.dart index 4b821a6d6d..31c563f06b 100644 --- a/packages/flutter_tools/test/src/testbed.dart +++ b/packages/flutter_tools/test/src/testbed.dart @@ -732,7 +732,7 @@ class TestFeatureFlags implements FeatureFlags { this.isSingleWidgetReloadEnabled = false, this.isAndroidEnabled = true, this.isIOSEnabled = true, - this.isFuchsiaEnabled = true, + this.isFuchsiaEnabled = false, }); @override