From 5fd17bccff2e57b043cb56ec703ea2f385ee7c98 Mon Sep 17 00:00:00 2001 From: Srivats Venkataraman <42980667+srivats22@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:19:00 -0400 Subject: [PATCH] Changes message when web folder is not present (#165084) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR addresses: https://github.com/flutter/flutter/issues/164921 The old message for when the web folder wasnt present and a build for web command was executed the following message was thrown: ```Missing index.html.``` The new message is going to be: ```Run flutter create . --platforms web``` Screenshot 2025-03-12 at 5 16 15 PM Screenshot 2025-03-12 at 5 33 15 PM ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md --- .../lib/src/commands/build_web.dart | 5 ++- .../hermetic/build_web_test.dart | 37 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/build_web.dart b/packages/flutter_tools/lib/src/commands/build_web.dart index 091e676d098..6fdca627530 100644 --- a/packages/flutter_tools/lib/src/commands/build_web.dart +++ b/packages/flutter_tools/lib/src/commands/build_web.dart @@ -217,7 +217,10 @@ class BuildWebCommand extends BuildSubCommand { ); } if (!project.web.existsSync()) { - throwToolExit('Missing index.html.'); + throwToolExit( + 'This project is not configured for the web.\n' + 'To configure this project for the web, run flutter create . --platforms web', + ); } if (!_fileSystem.currentDirectory .childDirectory('web') diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart index 01f7fa1583b..509a6e37f71 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart @@ -64,7 +64,11 @@ void main() { expect( () => runner.run(['build', 'web', '--no-pub']), - throwsToolExit(message: 'Missing index.html.'), + throwsToolExit( + message: + 'This project is not configured for the web.\n' + 'To configure this project for the web, run flutter create . --platforms web', + ), ); }, overrides: { @@ -588,6 +592,37 @@ void main() { ProcessManager: () => processManager, }, ); + + testUsingContext( + 'Refuses to build for web when folder is missing', + () async { + fileSystem.file(fileSystem.path.join('web')).deleteSync(recursive: true); + final CommandRunner runner = createTestCommandRunner( + BuildCommand( + androidSdk: FakeAndroidSdk(), + buildSystem: TestBuildSystem.all(BuildResult(success: true)), + fileSystem: fileSystem, + logger: logger, + osUtils: FakeOperatingSystemUtils(), + ), + ); + + expect( + () => runner.run(['build', 'web', '--no-pub']), + throwsToolExit( + message: + 'This project is not configured for the web.\n' + 'To configure this project for the web, run flutter create . --platforms web', + ), + ); + }, + overrides: { + Platform: () => fakePlatform, + FileSystem: () => fileSystem, + FeatureFlags: () => TestFeatureFlags(isWebEnabled: true), + ProcessManager: () => processManager, + }, + ); } void setupFileSystemForEndToEndTest(FileSystem fileSystem) {