Skip to content

Specify widget height in EditableText shortcuts tests - #98607

Merged
fluttergithubbot merged 5 commits into
flutter:masterfrom
tgucio:editable-text-test
Mar 3, 2022
Merged

fluttergithubbot merged 5 commits into
flutter:masterfrom
tgucio:editable-text-test

Conversation

@tgucio

@tgucio tgucio commented Feb 16, 2022 •

Copy link
Copy Markdown
Contributor

Fixes test issue #98592 by specifying widget height.

When manually running EditableText tests, some shortcuts tests were failing.
This was because vertical runs on up/down arrow keys were stopped due to the following:

  • no widget height was provided and so calls to getMin/MaxIntrinsic* were made
  • these called TextPainter.layout() with different dimensions
  • finally, in TextPainter.layout(), line metrics cache was invalidated

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.

@flutter-dashboard

Copy link
Copy Markdown

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact Hixie on the #hackers channel in Chat (don't just cc him here, he won't see it! He's on Discord!).

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@flutter-dashboard flutter-dashboard 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 Feb 16, 2022

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

unrelated to this PR, but maybe you can fix it nonetheless: I just notices that this fail is named incorrectly. It should end in _test.dart instead of _tests.dart. Could you maybe rename it?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

(I wonder if that naming problem actually means that this test doesn't run as part of our CI)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Right, this would explain why this wasn't caught before. As far as I can tell this should have started failing after #97446 (before that TextPainter's line metrics cache wasn't cleared and as a result vertical runs could be jumping to incorrect offsets).

It appears to be the only file with "_tests" instead of "_test" in the name:

% find . -name "*_tests.dart"
./test/widgets/editable_text_shortcuts_tests.dart

Let me change it and update the PR.

@tgucio tgucio Feb 17, 2022 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Another interesting fact is that since vertical runs rely on the line metrics cache which will get emptied on each getMin/MaxIntrinsic*() call, they won't work in EditableText widgets that don't have fixed width+height (each vertical run will be invalidated on widget update right after the caret moves). That is to say, the cursor will move up/down but perhaps not to the horizontal location we'd expect.

@LongCatIsLooong LongCatIsLooong 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.

RSLGTM. But the web test failures seem legit, could you take a look?

@tgucio

tgucio commented Feb 18, 2022

Copy link
Copy Markdown
Contributor Author

@LongCatIsLooong I believe these should be skipped altogether on web, just like the common shortcuts tests. I've added "skip: kIsWeb".

));
}, variant: macOSOnly);
});
}, skip: kIsWeb); // [intended]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

this needs a comment saying why it is ok to skip these on web. (see other examples of this in the repository)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Updated this one and other comments on "skip: kIsWeb" in the file.

@tgucio

tgucio commented Feb 25, 2022 •

Copy link
Copy Markdown
Contributor Author

EDIT: ok, just found #99036

@goderbauer
Hmm, interesting: there are two failing tests that print this:

Excellent news! A package dependency has been removed!
  cli_util
To make sure we do not accidentally add this dependency back in the future,
please remove this packages from the allow-list in dev/bots/allowlist.dart.
Thanks!

Tree issue or renaming the test file somehow triggered this?

@tgucio tgucio closed this Feb 25, 2022
@tgucio tgucio reopened this Feb 25, 2022
@tgucio

tgucio commented Mar 1, 2022

Copy link
Copy Markdown
Contributor Author

@goderbauer Had to merge + kick the tests with empty amend commits a few times due to some other unrelated tests failing but this should be good to go now.

@goderbauer goderbauer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@fluttergithubbot
fluttergithubbot merged commit 9642623 into flutter:master Mar 3, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 3, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 3, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 3, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 3, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 3, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 5, 2022
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

None yet

Development

Successfully merging this pull request may close these issues.

4 participants