Sitelet https://github.com/flutter/flutter/pull/191900
Skip to content

[flutter_tools] Handle Windows reserved characters in test target path - #191900

Merged
auto-submit[bot] merged 6 commits into
flutter:masterfrom
bkonyi:crash-3-47-1-test-uri-reserved-chars
Sep 25, 2026
Merged

auto-submit[bot] merged 6 commits into
flutter:masterfrom
bkonyi:crash-3-47-1-test-uri-reserved-chars

Conversation

@bkonyi

@bkonyi bkonyi commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Description

Catch ArgumentError and FormatException in TestCommand._parseTestArgument when test target arguments contain Windows reserved characters or unexpanded globs, emitting a clean ToolExit instead of crashing.

Fixes #191896

Tests

  • Added hermetic unit test in packages/flutter_tools/test/commands.shard/hermetic/test_test.dart verifying that flutter test throws a clean ToolExit when given a path containing Windows reserved characters.

Catch `ArgumentError` and `FormatException` in `TestCommand._parseTestArgument`
when test target arguments contain Windows reserved characters or unexpanded
globs, emitting a clean `ToolExit` instead of crashing.

Fixes flutter#191896
@bkonyi bkonyi added the CICD Run CI/CD label Aug 27, 2026
@github-actions github-actions Bot added the tool Affects the "flutter" command-line tool. See also t: labels. label Aug 27, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request modifies TestCommand in flutter_tools to catch ArgumentError and FormatException when parsing test file paths into URIs, throwing a ToolExit with an explanatory message. It also adds a test case to verify that running the test command with Windows-reserved characters in the path throws the expected ToolExit. No review comments were provided, and there is no additional feedback.

@bkonyi
bkonyi requested a review from a team September 3, 2026 20:45

@mattkae mattkae left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks for the contribution! I have a nit and some questions, but definitely worth fixing

Comment thread packages/flutter_tools/lib/src/commands/test.dart
Comment thread packages/flutter_tools/test/commands.shard/hermetic/test_test.dart
mattkae
mattkae previously approved these changes Sep 9, 2026

@mattkae mattkae left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Good by me!

@bkonyi bkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 9, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 9, 2026
@auto-submit

auto-submit Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/191900, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR.

@bkonyi bkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 9, 2026
@auto-submit

auto-submit Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/191900, because - The status or check suite Dashboard Checks has failed. Please fix the issues identified (or deflake) before re-applying this label.

@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 9, 2026
@bkonyi bkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 9, 2026
@auto-submit

auto-submit Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/191900, because - The status or check suite Dashboard Checks has failed. Please fix the issues identified (or deflake) before re-applying this label.

@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 9, 2026
@bkonyi bkonyi added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 15, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 15, 2026
@auto-submit

auto-submit Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/191900, because - The status or check suite Dashboard Checks has failed. Please fix the issues identified (or deflake) before re-applying this label.

@mattkae mattkae added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 15, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 15, 2026
@auto-submit

auto-submit Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/191900, because - The status or check suite Dashboard Checks has failed. Please fix the issues identified (or deflake) before re-applying this label.

@mattkae mattkae added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 17, 2026
@auto-submit

auto-submit Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/191900, because - The status or check suite Dashboard Checks has failed. Please fix the issues identified (or deflake) before re-applying this label.

@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 17, 2026
Reset `Cache.flutterRoot = getFlutterRoot()` in `setUp()` so `FileSystemStyle.windows` overrides in individual tests do not pollute `Cache.flutterRoot` for subsequent POSIX `MemoryFileSystem` tests. Also use `await expectLater(...)` in `throws ToolExit when test argument contains Windows reserved characters`.
@mattkae mattkae added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 23, 2026
@auto-submit

auto-submit Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/191900, because - The status or check suite Dashboard Checks has failed. Please fix the issues identified (or deflake) before re-applying this label.

@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 23, 2026
@mattkae mattkae added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 25, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Sep 25, 2026
Merged via the queue into flutter:master with commit cd6955d Sep 25, 2026
23 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Sep 25, 2026
DanTup pushed a commit to DanTup/flutter that referenced this pull request Sep 28, 2026
flutter#191900)

### Description
Catch `ArgumentError` and `FormatException` in
`TestCommand._parseTestArgument` when test target arguments contain
Windows reserved characters or unexpanded globs, emitting a clean
`ToolExit` instead of crashing.

Fixes flutter#191896

### Tests
- Added hermetic unit test in
`packages/flutter_tools/test/commands.shard/hermetic/test_test.dart`
verifying that `flutter test` throws a clean `ToolExit` when given a
path containing Windows reserved characters.

---------

Co-authored-by: Matthew Kosarek <matt.kosarek@canonical.com>
DanTup pushed a commit to DanTup/flutter that referenced this pull request Sep 28, 2026
flutter#191900)

### Description
Catch `ArgumentError` and `FormatException` in
`TestCommand._parseTestArgument` when test target arguments contain
Windows reserved characters or unexpanded globs, emitting a clean
`ToolExit` instead of crashing.

Fixes flutter#191896

### Tests
- Added hermetic unit test in
`packages/flutter_tools/test/commands.shard/hermetic/test_test.dart`
verifying that `flutter test` throws a clean `ToolExit` when given a
path containing Windows reserved characters.

---------

Co-authored-by: Matthew Kosarek <matt.kosarek@canonical.com>
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Sep 29, 2026
…#13060)

Manual roll Flutter from 4fcd90be0045 to c5a061b18fa2 (222 revisions)

Manual roll requested by quncheng@google.com

flutter/flutter@4fcd90b...c5a061b

2026-09-28 brackenavaron@gmail.com [cross imports] navigator_test.dart (flutter/flutter#190954)
2026-09-28 154381524+flutteractionsbot@users.noreply.github.com Revert: Reland: Only render views that need to be rendered  (flutter/flutter#193360)
2026-09-28 codefu@google.com ci(bringup): android_intent_security_test is green (flutter/flutter#193469)
2026-09-28 154381524+flutteractionsbot@users.noreply.github.com Sync CHANGELOG.md from stable (flutter/flutter#193020)
2026-09-28 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from ukukV5lEkKabtOATk... to QdgqP02_cYpRQQQNN... (flutter/flutter#193454)
2026-09-28 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#193460)
2026-09-28 victorsanniay@gmail.com Un-nest sceneBuildDuration and windowRenderDuration in web SceneBuilderRecorder (flutter/flutter#193260)
2026-09-28 zarah@google.com Fix unresolved doc comment references in dev/integration_tests and dev/benchmarks (flutter/flutter#193433)
2026-09-28 engine-flutter-autoroll@skia.org Roll Packages from e55e7ac to ba0364a (9 revisions) (flutter/flutter#193450)
2026-09-28 bkonyi@google.com [tool] Require explicit dependency injection for FlutterDevice and FlutterDevice.create (flutter/flutter#192830)
2026-09-28 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#193442)
2026-09-28 dacoharkes@google.com [flutter_tools] Include data assets from hooks when pubspec.yaml is empty (flutter/flutter#193434)
2026-09-28 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#193438)
2026-09-28 zarah@google.com Fix unresolved doc comment references in Material and Cupertino (flutter/flutter#193283)
2026-09-28 zarah@google.com Fix doc references to Material and Cupertino in the widgets library and its tests (flutter/flutter#193334)
2026-09-26 kevmoo@users.noreply.github.com wasm: enforce WasmGC opt-in capability checks and Firefox < 147 guard (flutter/flutter#193180)
2026-09-26 43054281+camsim99@users.noreply.github.com [Android] Refuse external setters of engine entrypoint and cached engine arguments via `Intent`s (flutter/flutter#190249)
2026-09-26 1961493+harryterkelsen@users.noreply.github.com [web] Unskip TextPainter.getWordBoundary test (flutter/flutter#193378)
2026-09-26 bkonyi@google.com Specify non-obvious types in pattern variable declarations (flutter/flutter#192632)
2026-09-26 30870216+gaaclarke@users.noreply.github.com Removes feedback loop from advanced filters without offscreen msaa and framebufferfetch (flutter/flutter#193306)
2026-09-26 1961493+harryterkelsen@users.noreply.github.com [web] Unskip 8 passing image tests in painting and rendering (flutter/flutter#193377)
2026-09-26 154381524+flutteractionsbot@users.noreply.github.com Revert: Allow resetting test invariants in `addTearDown` (flutter/flutter#193383)
2026-09-25 bkonyi@google.com [tool] Migrate CoverageCollector to modular dependency injection (flutter/flutter#192924)
2026-09-25 zarah@google.com Fix more unresolved doc comment references (flutter/flutter#193336)
2026-09-25 dkwingsmt@users.noreply.github.com Allow resetting test invariants in `addTearDown` (flutter/flutter#192082)
2026-09-25 jhy03261997@gmail.com [a11y] Add a semantics role for slider (flutter/flutter#193324)
2026-09-25 stuartmorgan@google.com Fix plugin tests after Pigeon plugin template changes (flutter/flutter#193302)
2026-09-25 jesswon@google.com [Android 17] Bump Standard Test Apps in flutter/flutter to AGP 9.3.1 (flutter/flutter#193263)
2026-09-25 97480502+b-luk@users.noreply.github.com SSBO-based gradients in UberSDF (flutter/flutter#192962)
2026-09-25 robert.ancell@canonical.com [Linux] Handle FlView being destroyed before rendering is complete. (flutter/flutter#193268)
2026-09-25 bkonyi@google.com [flutter_tools] Handle Windows reserved characters in test target path (flutter/flutter#191900)
2026-09-25 sneurlax@gmail.com docs(tools): nit: say hook/build.dart in CMake native assets comment (flutter/flutter#192205)
2026-09-25 kevmoo@users.noreply.github.com [web] Enable Firefox Skwasm UI CI suites, configure COI configs, and fail fast on loader rejections (flutter/flutter#193187)
2026-09-25 jesswon@google.com [Android 17] Bumped Engine Dependencies to 9.3.1 (flutter/flutter#193265)
2026-09-25 kevmoo@users.noreply.github.com [web] Omit group role on menu scrollables and assign region role to named routes (flutter/flutter#192965)
2026-09-25 engine-flutter-autoroll@skia.org Roll Skia from 8eedeed98e79 to f441ca223b2b (5 revisions) (flutter/flutter#193353)
2026-09-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from EbPpoJW-Lnsu-8dyZ... to ukukV5lEkKabtOATk... (flutter/flutter#193326)
2026-09-25 engine-flutter-autoroll@skia.org Roll Packages from 431ea69 to e55e7ac (6 revisions) (flutter/flutter#193351)
2026-09-25 139053348+shikharish@users.noreply.github.com Support DynamicLibrary.codeAsset in Flutter (flutter/flutter#188947)
2026-09-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 75d9e87d4e3d to 0e7642b85457 (1 revision) (flutter/flutter#193346)
2026-09-25 15619084+vashworth@users.noreply.github.com Exclude iOS PRs from macOS link (flutter/flutter#193315)
2026-09-25 engine-flutter-autoroll@skia.org Roll Skia from 6357608543ec to 8eedeed98e79 (4 revisions) (flutter/flutter#193341)
2026-09-25 engine-flutter-autoroll@skia.org Roll Dart SDK from d3aedb186aab to 75d9e87d4e3d (3 revisions) (flutter/flutter#193335)
2026-09-25 nickolasdeluca@live.com Cache the paint offset adjusted line metrics in TextPainter (flutter/flutter#191223)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[flutter_tools] Unhandled ArgumentError in TestCommand._parseTestArgument when path contains Windows reserved characters

2 participants