-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Use interactive mode with devicectl to redirect stdout
#178405
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
Use interactive mode with devicectl to redirect stdout
#178405
Conversation
devicectl to redirect stdout
There was a problem hiding this 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 updates the execution of devicectl to use an interactive mode by prefixing the command with script -t 0 /dev/null. This change correctly redirects stdout and removes a previous workaround that polled a log file. My review includes suggestions to refactor some duplicated logic and address a magic string for better maintainability, as well as a minor style improvement in the test file.
packages/flutter_tools/test/general.shard/ios/core_devices_test.dart
Outdated
Show resolved
Hide resolved
jmagman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note interactive mode means the process needs to be cleaned up explicitly:
#157646
) Reverts flutter#178167 and instead runs `devicectl` in interactive mode by prefixing command with `script -t 0 /dev/null` to convince `devicectl` it has a terminal attached in order to redirect stdout. Fixes b/454953393. Related to flutter#178319. ## 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]. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- Links --> [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
flutter/flutter@d438df3...c8cfb2b 2025-11-22 [email protected] Revert "[ios] Dynamic Content Resizing" (flutter/flutter#178958) 2025-11-22 [email protected] Make sure that a SearchAnchor doesn't crash in 0x0 environment (flutter/flutter#177749) 2025-11-22 [email protected] Make sure that a Stepper doesn't crash in 0x0 environment (flutter/flutter#178068) 2025-11-22 [email protected] Remove deprecated `activeColor` in `switch.0.dart` example (flutter/flutter#178293) 2025-11-22 [email protected] Make sure that a UserAccountsDrawerHeader doesn't crash in 0x0 enviro… (flutter/flutter#178516) 2025-11-22 [email protected] Make sure that a TimePickerDialog doesn't crash in 0x0 environment (flutter/flutter#178451) 2025-11-22 [email protected] Make sure that a CupertinoLinearActivityIndicator doesn't crash in 0x… (flutter/flutter#178566) 2025-11-22 [email protected] Make sure that a CupertinoTabBar doesn't crash in 0x0 environment (flutter/flutter#178613) 2025-11-22 [email protected] Make sure that a CupertinoContextMenu doesn't crash in 0x0 environment (flutter/flutter#178722) 2025-11-22 [email protected] Sort entries in TESTOWNERS (flutter/flutter#178939) 2025-11-22 [email protected] [ios] Dynamic Content Resizing (flutter/flutter#177410) 2025-11-21 [email protected] Roll Skia from dc88b21ce7d2 to 3018c3053490 (2 revisions) (flutter/flutter#178947) 2025-11-21 [email protected] Manually roll material_color_utilities (flutter/flutter#170000) 2025-11-21 [email protected] Roll Fuchsia Linux SDK from Y-cMdgKy3d6EnibWR... to 4ul9jvZ7jnDGIjtCD... (flutter/flutter#178934) 2025-11-21 [email protected] Roll Dart SDK from c788b6a7aefd to 5af71c736b0a (1 revision) (flutter/flutter#178932) 2025-11-21 [email protected] Roll Skia from c588bb60d5da to dc88b21ce7d2 (2 revisions) (flutter/flutter#178933) 2025-11-21 [email protected] Update .ci.yaml and TESTOWNERS for arc macrobenchmark tests (flutter/flutter#178891) 2025-11-21 [email protected] Use interactive mode with `devicectl` to redirect stdout (flutter/flutter#178405) 2025-11-21 [email protected] Update .ci.yaml in flutter/flutter to use either macOS 15.5 or macOS … (flutter/flutter#178666) 2025-11-21 [email protected] Roll Skia from d4e9d2873bfd to c588bb60d5da (1 revision) (flutter/flutter#178928) 2025-11-21 [email protected] Roll Packages from b1e2fb0 to e67b6be (7 revisions) (flutter/flutter#178927) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
) Reverts flutter#178167 and instead runs `devicectl` in interactive mode by prefixing command with `script -t 0 /dev/null` to convince `devicectl` it has a terminal attached in order to redirect stdout. Fixes b/454953393. Related to flutter#178319. ## 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]. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- Links --> [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
) Reverts flutter#178167 and instead runs `devicectl` in interactive mode by prefixing command with `script -t 0 /dev/null` to convince `devicectl` it has a terminal attached in order to redirect stdout. Fixes b/454953393. Related to flutter#178319. ## 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]. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- Links --> [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
Reverts #178167 and instead runs
devicectlin interactive mode by prefixing command withscript -t 0 /dev/nullto convincedevicectlit has a terminal attached in order to redirect stdout.Fixes b/454953393. Related to #178319.
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.