Skip to content

Remove unnecessary Material import from default_text_editing_shortcuts_test#185241

Closed
momshaddinury wants to merge 1 commit into
flutter:masterfrom
momshaddinury:cleanup/default-text-editing-shortcuts-material-import
Closed

Remove unnecessary Material import from default_text_editing_shortcuts_test#185241
momshaddinury wants to merge 1 commit into
flutter:masterfrom
momshaddinury:cleanup/default-text-editing-shortcuts-material-import

Conversation

@momshaddinury
Copy link
Copy Markdown
Contributor

packages/flutter/test/widgets/default_text_editing_shortcuts_test.dart lives in the Widgets layer of the test tree but was importing package:flutter/material.dart. The import was only needed for three MaterialApp wrappers, Colors.blue / Colors.grey (used for cursor colors), and materialTextSelectionControls — none of which are required for what this test exercises (default text-editing keyboard shortcuts on EditableText).

Changes:

  • Replace MaterialApp with TestWidgetsApp (from widgets_app_tester.dart).
  • Replace Colors.blue / Colors.grey with their raw Color values.
  • Replace materialTextSelectionControls with emptyTextSelectionControls.
  • Drop the package:flutter/material.dart import.

Related Issues

Part of #177028
Related: #177412

Tests

No behavior change; existing tests in the file continue to exercise the same
assertions. Verified locally with flutter test packages/flutter/test/widgets/default_text_editing_shortcuts_test.dart.

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide].
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • All existing and new tests are passing.

@github-actions github-actions Bot added a: text input Entering text in a text field or keyboard related problems framework flutter/packages/flutter repository. See also f: labels. labels Apr 18, 2026
Copy link
Copy Markdown
Contributor

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

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 refactors default_text_editing_shortcuts_test.dart and editable_text_scribe_test.dart to remove dependencies on the Material library. It replaces MaterialApp with TestWidgetsApp, substitutes Material color constants with hex values, and uses emptyTextSelectionControls instead of materialTextSelectionControls. I have no feedback to provide.

…s_test

This test lives in the Widgets layer and does not exercise any Material-specific behavior. Replace the three MaterialApp wrappers with TestWidgetsApp (from widgets_app_tester.dart), swap Colors.blue and Colors.grey for their raw Color values, and use emptyTextSelectionControls in place of materialTextSelectionControls.

Part of flutter#177028
Copy link
Copy Markdown
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

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

LGTM 👍 . Heads up that there are conflicts to resolve.

@momshaddinury
Copy link
Copy Markdown
Contributor Author

LGTM 👍 . Heads up that there are conflicts to resolve.

I am closing this in favour of #185271.

pull Bot pushed a commit to NOUIY/flutter that referenced this pull request May 21, 2026
…r package (flutter#185271)

Several tests under `packages/flutter/test/` were importing
`package:flutter/material.dart` even though they only exercise APIs from
`package:flutter/widgets.dart` (or lower layers like `painting`,
`animation`, `gestures`). Pulling in Material unnecessarily increases
cross-package coupling between these tests and the Material library and
works against the cross-import hygiene enforced by
`dev/bots/check_tests_cross_imports.dart`.

This PR:

- Switches the import from `package:flutter/material.dart` to
`package:flutter/widgets.dart` in tests that do not reference any
Material symbols.
- Where tests referenced `Colors.*` only, replaces those with the
equivalent raw `const Color(0x…)` values.
- Where tests wrapped widgets in `MaterialApp` purely as a
`Directionality`/`MediaQuery`/localization host, swaps `MaterialApp` for
`TestWidgetsApp` from `widgets_app_tester.dart`, and replaces
`materialTextSelectionControls` with `emptyTextSelectionControls`.
- Removes the corresponding entry from the
`check_tests_cross_imports.dart` allowlist where applicable.

No production code is modified and no test semantics change — the tests
exercise the same widget/painting/gesture/animation behavior, just
without dragging in Material.

## Files changed

Tests updated:

- `packages/flutter/test/gestures/force_press_test.dart`
- `packages/flutter/test/gestures/transformed_scale_test.dart`
-
`packages/flutter/test/widgets/default_text_editing_shortcuts_test.dart`
- `packages/flutter/test/widgets/semantics_owner_test.dart`
- `packages/flutter/test/animation/animation_sheet_test.dart`
- `packages/flutter/test/painting/star_border_test.dart`
- `packages/flutter/test/painting/paint_image_test.dart`

Allowlist updated:

- `dev/bots/check_tests_cross_imports.dart`

## Scope note — two files intentionally left out

Two test files originally staged in this cleanup were dropped after
local test runs showed they aren't a clean Material → widgets swap.
Details and a request for guidance are in a separate PR comment below:

- `packages/flutter/test/widgets/editable_text_scribe_test.dart` — the
handle-tap tests rely on `CustomPaint` widgets painted by
`materialTextSelectionControls`; `emptyTextSelectionControls` paints
nothing, so the handle finders return 0 widgets.
- `packages/flutter/test/widgets/editable_text_test.dart` (Live Text
test only) — swapping `MaterialApp` → `TestWidgetsApp` triggers `A
FocusManager was used after being disposed` in the shared `tearDown`,
cascading into five downstream a11y/semantics tests.

Both files remain on the `check_tests_cross_imports.dart` allowlist and
can be picked up in follow-up PRs once we agree on the approach.

## Related issues

- Part of umbrella issue flutter#177028 (Framework unit tests
shouldn't cross-import libraries).
- Also addresses flutter#177412 (No legacy Material imports in
tests).

## Context — why one PR

Per reviewer guidance from @navaronbracke on flutter#185238
([comment](flutter#185238 (comment))),
similar Material-import cleanups are being consolidated into a single PR
that lands closer to the ~300–500-line "sweet spot" rather than as many
tiny per-file PRs.

## Superseded PRs (please close once this lands)

The following open PRs are subsumed by this one and can be closed if
this PR is approved (see [this
comment](flutter#185238 (comment))):

- flutter#185236 — Remove unused material.dart import from
force_press_test.dart
- flutter#185241 — Remove unnecessary Material import from
default_text_editing_shortcuts_test

Not superseded (corresponding files were dropped from this PR — see the
scope note above):

- flutter#185238 — editable_text_scribe_test
- flutter#185242 — editable_text_test Live Text

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [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]. <!-- test-only cleanup: no production code or
test-behavior changes; existing coverage is preserved. -->
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[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
matthewhendrix pushed a commit to matthewhendrix/flutter that referenced this pull request May 23, 2026
…r package (flutter#185271)

Several tests under `packages/flutter/test/` were importing
`package:flutter/material.dart` even though they only exercise APIs from
`package:flutter/widgets.dart` (or lower layers like `painting`,
`animation`, `gestures`). Pulling in Material unnecessarily increases
cross-package coupling between these tests and the Material library and
works against the cross-import hygiene enforced by
`dev/bots/check_tests_cross_imports.dart`.

This PR:

- Switches the import from `package:flutter/material.dart` to
`package:flutter/widgets.dart` in tests that do not reference any
Material symbols.
- Where tests referenced `Colors.*` only, replaces those with the
equivalent raw `const Color(0x…)` values.
- Where tests wrapped widgets in `MaterialApp` purely as a
`Directionality`/`MediaQuery`/localization host, swaps `MaterialApp` for
`TestWidgetsApp` from `widgets_app_tester.dart`, and replaces
`materialTextSelectionControls` with `emptyTextSelectionControls`.
- Removes the corresponding entry from the
`check_tests_cross_imports.dart` allowlist where applicable.

No production code is modified and no test semantics change — the tests
exercise the same widget/painting/gesture/animation behavior, just
without dragging in Material.

## Files changed

Tests updated:

- `packages/flutter/test/gestures/force_press_test.dart`
- `packages/flutter/test/gestures/transformed_scale_test.dart`
-
`packages/flutter/test/widgets/default_text_editing_shortcuts_test.dart`
- `packages/flutter/test/widgets/semantics_owner_test.dart`
- `packages/flutter/test/animation/animation_sheet_test.dart`
- `packages/flutter/test/painting/star_border_test.dart`
- `packages/flutter/test/painting/paint_image_test.dart`

Allowlist updated:

- `dev/bots/check_tests_cross_imports.dart`

## Scope note — two files intentionally left out

Two test files originally staged in this cleanup were dropped after
local test runs showed they aren't a clean Material → widgets swap.
Details and a request for guidance are in a separate PR comment below:

- `packages/flutter/test/widgets/editable_text_scribe_test.dart` — the
handle-tap tests rely on `CustomPaint` widgets painted by
`materialTextSelectionControls`; `emptyTextSelectionControls` paints
nothing, so the handle finders return 0 widgets.
- `packages/flutter/test/widgets/editable_text_test.dart` (Live Text
test only) — swapping `MaterialApp` → `TestWidgetsApp` triggers `A
FocusManager was used after being disposed` in the shared `tearDown`,
cascading into five downstream a11y/semantics tests.

Both files remain on the `check_tests_cross_imports.dart` allowlist and
can be picked up in follow-up PRs once we agree on the approach.

## Related issues

- Part of umbrella issue flutter#177028 (Framework unit tests
shouldn't cross-import libraries).
- Also addresses flutter#177412 (No legacy Material imports in
tests).

## Context — why one PR

Per reviewer guidance from @navaronbracke on flutter#185238
([comment](flutter#185238 (comment))),
similar Material-import cleanups are being consolidated into a single PR
that lands closer to the ~300–500-line "sweet spot" rather than as many
tiny per-file PRs.

## Superseded PRs (please close once this lands)

The following open PRs are subsumed by this one and can be closed if
this PR is approved (see [this
comment](flutter#185238 (comment))):

- flutter#185236 — Remove unused material.dart import from
force_press_test.dart
- flutter#185241 — Remove unnecessary Material import from
default_text_editing_shortcuts_test

Not superseded (corresponding files were dropped from this PR — see the
scope note above):

- flutter#185238 — editable_text_scribe_test
- flutter#185242 — editable_text_test Live Text

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [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]. <!-- test-only cleanup: no production code or
test-behavior changes; existing coverage is preserved. -->
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: text input Entering text in a text field or keyboard related problems framework flutter/packages/flutter repository. See also f: labels.

Projects

Development

Successfully merging this pull request may close these issues.

2 participants