Skip to content

Catch file system exceptions when trying to parse user-provided asset file paths #142214

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Jan 29, 2024

Conversation

andrewkolos
Copy link
Contributor

Fixes #141211

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
  • I signed the CLA.
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@github-actions github-actions bot added the tool Affects the "flutter" command-line tool. See also t: labels. label Jan 25, 2024
@andrewkolos andrewkolos marked this pull request as ready for review January 25, 2024 17:43
@andrewkolos andrewkolos force-pushed the another-uri-crash-fix branch from 6bda113 to 3c7f176 Compare January 26, 2024 23:10
} on FileSystemException catch (e) {
throwToolExit(
'Unable to check the existence of asset file "$assetPath". '
'Ensure that the asset file is declared is a valid local file system path.\n'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-'Ensure that the asset file is declared is a valid local file system path.\n'
+'Ensure that the asset file is declared and is a valid local file system path.\n'

@andrewkolos
Copy link
Contributor Author

@christopherfujino FYI I'm rewriting the test to be hermetic. Converting to draft.

@andrewkolos andrewkolos marked this pull request as draft January 26, 2024 23:18
@flutter-dashboard

This comment was marked as off-topic.

@christopherfujino
Copy link
Contributor

@christopherfujino FYI I'm rewriting the test to be hermetic. Converting to draft.

oops, just saw this, SGTM

@andrewkolos
Copy link
Contributor Author

Ready again. I did some tidying up before I left, making the diff bigger. See the recent commits with refactor in the message to help yourself make sense of it.

@andrewkolos andrewkolos marked this pull request as ready for review January 27, 2024 00:04
);
return bundle;
}
group('AssetBundle.build (hermetic)', () {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why hermetic in the group name? are some of these not hermetic?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, see the group above named "AssetBundle.build"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively, I can rename the other group to AssetBundle.build (non-hermetic)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Basically the point of this was I didn't want to reuse the polluted scope of the existing group

Copy link
Contributor

@christopherfujino christopherfujino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nit questions, but LGTM, this is a good cleanup!

@andrewkolos andrewkolos added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 27, 2024
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jan 27, 2024
Copy link
Contributor

auto-submit bot commented Jan 27, 2024

auto label is removed for flutter/flutter/142214, due to - The status or check suite Linux analyze has failed. Please fix the issues identified (or deflake) before re-applying this label.

late Logger logger;
const String shaderLibDir = '/./shader_lib';

group('AssetBundle.build (non-hermetic)', () {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in what ways are these non-hermetic? ideally we would either make them hermetic, or move them to the integration shard if they must use the real environment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm uncomfortable calling anything that uses testUsingContext hermetic. If you ignore the lack of a Logger override, these tests are probably hermetic, so perhaps the non-hermetic label is unfair. If you have better ideas for group names, I'm all ears (perhaps "using context" and "not using context").

The reason the groups are separate is that one uses setUp (polluting the scope with testFileSystem and platform) and testUsingContext (both of which are not recommended for use), and the latter group is more idiomatic.

I do not wish the rewrite all of these tests to be idiomatic now, as this would be a significant undertaking, and I lack the needed bandwidth.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addressed in tweak group name

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ahh, I see, thanks for the explanation!

@andrewkolos andrewkolos added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 29, 2024
@auto-submit auto-submit bot merged commit 83bdde2 into flutter:master Jan 29, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 30, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 30, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 30, 2024
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jan 30, 2024
Manual roll Flutter from 2f6fdf2 to ace9181 (57 revisions)

Manual roll requested by [email protected]

flutter/flutter@2f6fdf2...ace9181

2024-01-29 [email protected] Roll Flutter Engine from 9c3ebf67b5da to bedafa8794b6 (4 revisions) (flutter/flutter#142478)
2024-01-29 [email protected] onNavigationNotification for *App.router (flutter/flutter#142190)
2024-01-29 [email protected] Marks Mac_x64 framework_tests_misc to be unflaky (flutter/flutter#142118)
2024-01-29 [email protected] Roll Flutter Engine from 3e2b8975bd5b to 9c3ebf67b5da (1 revision) (flutter/flutter#142472)
2024-01-29 [email protected] Feat: TextField can scroll when disabled (flutter/flutter#140922)
2024-01-29 [email protected] Roll Flutter Engine from 436f91f3b06b to 3e2b8975bd5b (2 revisions) (flutter/flutter#142466)
2024-01-29 [email protected] Marks Mac_arm64 framework_tests_misc to be unflaky (flutter/flutter#142119)
2024-01-29 [email protected] Fix InputDecorationTheme copyWith fallback for iconColor (flutter/flutter#142462)
2024-01-29 [email protected] Add `SingleChildScrollView` for `NavigationRail` (flutter/flutter#137415)
2024-01-29 [email protected] [Windows Arm64] Run plugin test post-submit (flutter/flutter#141987)
2024-01-29 [email protected] Catch file system exceptions when trying to parse user-provided asset file paths (flutter/flutter#142214)
2024-01-29 [email protected] Implementing `switch` expressions in `foundation/` and `material/` (flutter/flutter#142279)
2024-01-29 [email protected] Roll Flutter Engine from bff1e46c0d65 to 436f91f3b06b (1 revision) (flutter/flutter#142455)
2024-01-29 [email protected] Opt out test from leak tracking. (flutter/flutter#142417)
2024-01-29 [email protected] Update Android minSdkVersion to 21 (flutter/flutter#142267)
2024-01-29 [email protected] Roll Flutter Engine from 3d87470655b1 to bff1e46c0d65 (1 revision) (flutter/flutter#142446)
2024-01-29 [email protected] Roll Packages from cbe8100 to 516648a (3 revisions) (flutter/flutter#142445)
2024-01-29 [email protected] Roll Flutter Engine from 1405cb7b6e74 to 3d87470655b1 (1 revision) (flutter/flutter#142444)
2024-01-29 [email protected] Roll Flutter Engine from 3e65f1720a6f to 1405cb7b6e74 (1 revision) (flutter/flutter#142432)
2024-01-29 [email protected] Roll Flutter Engine from 210ed1dfb8cf to 3e65f1720a6f (1 revision) (flutter/flutter#142429)
2024-01-29 [email protected] Roll Flutter Engine from f15cb86d31c3 to 210ed1dfb8cf (1 revision) (flutter/flutter#142426)
2024-01-29 [email protected] Roll Flutter Engine from f3d48be76630 to f15cb86d31c3 (11 revisions) (flutter/flutter#142425)
2024-01-27 [email protected] Roll Flutter Engine from 95e9a15fd909 to f3d48be76630 (1 revision) (flutter/flutter#142370)
2024-01-27 [email protected] Add no-shuffle to language_version_test.dart (flutter/flutter#142378)
2024-01-27 [email protected] Roll Flutter Engine from 2687ddb2655c to 95e9a15fd909 (8 revisions) (flutter/flutter#142369)
2024-01-27 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Roll Flutter Engine from 2687ddb2655c to 2adad88a39f4 (4 revisions)" (flutter/flutter#142366)
2024-01-27 [email protected] Roll Flutter Engine from 2687ddb2655c to 2adad88a39f4 (4 revisions) (flutter/flutter#142362)
2024-01-27 [email protected] Roll Flutter Engine from 45c06c22d5c7 to 2687ddb2655c (1 revision) (flutter/flutter#142359)
2024-01-27 [email protected] Remove suspicious constant from input decorator layout (flutter/flutter#142342)
2024-01-27 [email protected] Roll Flutter Engine from 2e32acf4c31a to 45c06c22d5c7 (2 revisions) (flutter/flutter#142353)
2024-01-27 [email protected] Roll Flutter Engine from a65a1b55e06a to 2e32acf4c31a (1 revision) (flutter/flutter#142351)
2024-01-26 [email protected] Roll Flutter Engine from 525bd7dcf7f3 to a65a1b55e06a (11 revisions) (flutter/flutter#142347)
2024-01-26 [email protected] Relands "Add runWidget to bootstrap a widget tree without a default View" (flutter/flutter#142344)
2024-01-26 [email protected] Fix assertion failure when reordering two dimensional children (flutter/flutter#141504)
2024-01-26 [email protected] Limit `fuchsia_precache` in presubmit to engine rolls (flutter/flutter#142333)
2024-01-26 49699333+dependabot[bot]@users.noreply.github.com Bump github/codeql-action from 3.23.1 to 3.23.2 (flutter/flutter#142345)
2024-01-26 [email protected] refactor asset bundle code to not depend on the global Cache.flutterRoot (flutter/flutter#142277)
2024-01-26 [email protected] [flutter_tools] remove await runZonedGuarded() in tests (flutter/flutter#142336)
2024-01-26 [email protected] Only use iOS 17 physical devices in staging tests (flutter/flutter#142323)
2024-01-26 [email protected] Roll deps from dart-lang/native in templates (flutter/flutter#142322)
2024-01-26 [email protected] Remove duplicate global declaration of `UserMessages` (flutter/flutter#142281)
2024-01-26 [email protected] Redistribute iOS TESTOWNERS (flutter/flutter#142315)
2024-01-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Add runWidget to bootstrap a widget tree without a default View" (flutter/flutter#142339)
2024-01-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Roll Flutter Engine from 525bd7dcf7f3 to 65d1291c3add (1 revision)" (flutter/flutter#142332)
...
@andrewkolos andrewkolos deleted the another-uri-crash-fix branch April 29, 2024 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App tool Affects the "flutter" command-line tool. See also t: labels.
Projects
None yet
2 participants