Skip to content

Conversation

@hellohuanlin
Copy link
Contributor

@hellohuanlin hellohuanlin commented Aug 11, 2025

The previous PR #172913 avoids compilation error by not having the "error: " prefix. However, it's still very confusing to have "key not found" printed out in the terminal (either stderr or stdout), despite that it doesn't cause compilation error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the stderr if set to true. We set it for plist extraction, because "not having bonjour key" should be one of the expected "normal" states

We don't want to pipe it to stdout either, because it would be confusing too. I figured people would still file issue if they see it in terminal, even if it's a completely normal state. But not a strong opinion, so let me know if you disagree.

However, under verbose mode, we would pipe it to stdout. This will be consistent with our previous behavior before macOS 26.

List which issues are fixed by this PR. You must list at least one issue. An issue is not required if the PR fixes something trivial like a typo.

Fixes #172627

If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.

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

@hellohuanlin hellohuanlin requested a review from a team as a code owner August 11, 2025 19:14
@hellohuanlin hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from 1da37c1 to 4dfb771 Compare August 11, 2025 19:14
@github-actions github-actions bot added tool Affects the "flutter" command-line tool. See also t: labels. team-ios Owned by iOS platform team labels Aug 11, 2025
Copy link
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 introduces a skipErrorLog flag to suppress expected error messages from plutil, which is a good improvement to reduce confusion from logs. The implementation is clean and the accompanying unit tests are thorough. I have one minor suggestion in the integration test file to improve maintainability by using constants for error messages, consistent with the changes in the unit test file.

@hellohuanlin hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from 4dfb771 to c1ea468 Compare August 11, 2025 19:18
@hellohuanlin hellohuanlin changed the title [ios][tools]do not log bonjour not found message at all [ios][tools]do not log "bonjour not found" message at all Aug 11, 2025
@hellohuanlin hellohuanlin changed the title [ios][tools]do not log "bonjour not found" message at all [ios][tools]do not log "bonjour not found" at all Aug 11, 2025
], allowFail: true);
ProcessResult result = runSync(
'plutil',
<String>['-extract', 'NSBonjourServices', 'xml1', '-o', '-', builtProductsPlist],
Copy link
Contributor Author

Choose a reason for hiding this comment

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

this is by dart format after i added the new parameter

], allowFail: true);
result = runSync(
'plutil',
<String>['-extract', 'NSLocalNetworkUsageDescription', 'xml1', '-o', '-', builtProductsPlist],
Copy link
Contributor Author

Choose a reason for hiding this comment

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

this is by dart format after i added the new parameter

@hellohuanlin hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from c1ea468 to c5b06ca Compare August 11, 2025 19:39
@hellohuanlin hellohuanlin marked this pull request as draft August 11, 2025 19:39
@hellohuanlin hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from c5b06ca to f7d8797 Compare August 11, 2025 19:42
@hellohuanlin
Copy link
Contributor Author

i should probably CP this too

@hellohuanlin hellohuanlin marked this pull request as ready for review August 11, 2025 20:40
@hellohuanlin hellohuanlin requested a review from vashworth August 11, 2025 20:41
// via stderr (rather than stdout on older macOS), and logging the message
// would be confusing (for either stdout or stderr), since not having the
// key is one of the expected states.
if (!skipErrorLog && resultStderr.isNotEmpty) {
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we still want these logs to show if in verbose mode. The way this is now, they won't show in verbose.

I think what you'll want to do is that is skipErrorLog is true, don't write it to streamOutput or echoError. Unless we're in verbose mode, then do write it to echoError.

Copy link
Contributor Author

@hellohuanlin hellohuanlin Aug 11, 2025

Choose a reason for hiding this comment

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

@vashworth my understanding:

First of all, we don't want to show the message in non-verbose mode for sure, since not having the key is an expected state (also the most common state). We don't want to scream this out in almost every flutter run. I think we already agree on that.

Secondly, no matter verbose or not, we shouldn't echoError, since semantically speaking, to our bonjour logic, not having the key is not an error, but one of the expected states - definitely not an error.

Now the question is, under verbose mode, do we want to pipe the stderr message to stdout? I am leaning towards not to do so, because it's still very confusing to see "Could not extract value, error: No value at that key path or invalid key path: NSBonjourServices", which clearly reads like stderr, not stdout (I suspect apple probably also thinks it's weird to be in stdout, so they moved it to stderr on macOS 26). Though this is not a strong opinion (51%-ish), so if you insist, I am open to pipe it to stdout under verbose mode. The new code will look something like:

    // ...
    if (resultStderr.isNotEmpty) {
      // ...

      if (skipErrorLog) {
        // Even if we skip error, we still want to pipe it to stdout under verbose mode.
        if (verbose) {
          echo(errorOutput.toString());
        }
      } else {
        echoError(errorOutput.toString());
      }

Copy link
Contributor Author

@hellohuanlin hellohuanlin Aug 11, 2025

Choose a reason for hiding this comment

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

^ actually, thinking about the 3rd point more, piping it to stdout under verbose mode is probably fine, since we were printing that string already before macOS 26 (i.e. piping to stdout would make it consistent with our previous behavior before macOS 26)

@hellohuanlin hellohuanlin requested a review from vashworth August 11, 2025 23:17
@hellohuanlin hellohuanlin changed the title [ios][tools]do not log "bonjour not found" at all [ios][tools]do not log "bonjour not found" at all (unless verbose) Aug 12, 2025
/// @param skipErrorLog If set, will skip stderr in non-verbose mode, and pipe
/// stderr to stdout in verbose mode.
/// @param workingDirectory The current working directory to run the command.
/// @throws [Exception] if the exit code is not 0.
Copy link
Contributor

Choose a reason for hiding this comment

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

@param and @throws isn't really supported in Dart.

If you want to give definitions to arguments, you can use brackets to refer to arguments: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#leave-breadcrumbs-in-the-comments

For example

  /// Run given command ([bin]) in a synchronous subprocess.
  ///
  /// If [allowFail] is true, an exception will not be thrown even if the process returns a 
  /// non-zero exit code. Also, `error:` will not be prefixed to the output to prevent Xcode 
  /// complication failures.
  /// 
  /// If [skipErrorLog] is true, `stderr` from the process will not be output unless in [verbose] 
  /// mode. If in [verbose], pipes `stderr` to `stdout`.
  /// 
  /// Will throw [Exception] if the exit code is not 0.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

oof, gemini isn't a good excuse - i should've double checked.

Copy link
Contributor

@vashworth vashworth left a comment

Choose a reason for hiding this comment

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

@hellohuanlin LGTM after you update the comment

@hellohuanlin hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from 1c2eb1b to 97e366d Compare August 12, 2025 17:27
// An example is on macOS 26, plutil reports NSBonjourServices key not found
// via stderr (rather than stdout on older macOS), and logging the message
// in stderr would be confusing, since not having the key is one of the expected states.
if (verbose) {
Copy link
Member

@jmagman jmagman Aug 12, 2025

Choose a reason for hiding this comment

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

I'd prefer to always log errorOutput in verbose mode, even in the Bonjour case. There may be other errors that command generates that we will want to see to triage.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@jmagman yes in verbose mode, all will be logged. The logic is:

skipErrorLog { // true for bonjour
  if verbose {
    log to stdout ("key not found" shouldn't be an "error" or "warning" - rather one of the expected states)
  } else {
    do not log
  }
} else { // don't change for other features
  log to stderr
}

Copy link
Member

Choose a reason for hiding this comment

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

Ah gotcha, I can't read.

@hellohuanlin hellohuanlin added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 12, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Aug 12, 2025
Merged via the queue into flutter:master with commit b581cda Aug 12, 2025
143 checks passed
@hellohuanlin hellohuanlin added the revert Autorevert PR (with "Reason for revert:" comment) label Aug 15, 2025
@auto-submit
Copy link
Contributor

auto-submit bot commented Aug 15, 2025

Time to revert pull request flutter/flutter/173569 has elapsed.
You need to open the revert manually and process as a regular pull request.

@auto-submit auto-submit bot removed the revert Autorevert PR (with "Reason for revert:" comment) label Aug 15, 2025
@hellohuanlin
Copy link
Contributor Author

Reason for revert: didn't work

@hellohuanlin hellohuanlin added the revert Autorevert PR (with "Reason for revert:" comment) label Aug 15, 2025
@auto-submit
Copy link
Contributor

auto-submit bot commented Aug 15, 2025

Time to revert pull request flutter/flutter/173569 has elapsed.
You need to open the revert manually and process as a regular pull request.

@auto-submit auto-submit bot removed the revert Autorevert PR (with "Reason for revert:" comment) label Aug 15, 2025
github-merge-queue bot pushed a commit that referenced this pull request Aug 16, 2025
…bose)" (#173879)

Reverts #173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
…lutter#173569)

The previous PR flutter#172913 avoids
compilation error by not having the "error: " prefix. However, it's
still very confusing to have "key not found" printed out in the terminal
(either stderr or stdout), despite that it doesn't cause compilation
error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the
`stderr` if set to true. We set it for plist extraction, because "not
having bonjour key" should be one of the expected "normal" states

<s> We don't want to pipe it to `stdout` either, because it would be
confusing too. I figured people would still file issue if they see it in
terminal, even if it's a completely normal state. But not a strong
opinion, so let me know if you disagree. </s>

However, under verbose mode, we would pipe it to `stdout`. This will be
consistent with our previous behavior before macOS 26.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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
ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
github-merge-queue bot pushed a commit that referenced this pull request Aug 20, 2025
…de (#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries #173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes #172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
flutteractionsbot pushed a commit to flutteractionsbot/flutter that referenced this pull request Aug 21, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
flutteractionsbot pushed a commit to flutteractionsbot/flutter that referenced this pull request Aug 21, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…lutter#173569)

The previous PR flutter#172913 avoids
compilation error by not having the "error: " prefix. However, it's
still very confusing to have "key not found" printed out in the terminal
(either stderr or stdout), despite that it doesn't cause compilation
error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the
`stderr` if set to true. We set it for plist extraction, because "not
having bonjour key" should be one of the expected "normal" states

<s> We don't want to pipe it to `stdout` either, because it would be
confusing too. I figured people would still file issue if they see it in
terminal, even if it's a completely normal state. But not a strong
opinion, so let me know if you disagree. </s>

However, under verbose mode, we would pipe it to `stdout`. This will be
consistent with our previous behavior before macOS 26.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…lutter#173569)

The previous PR flutter#172913 avoids
compilation error by not having the "error: " prefix. However, it's
still very confusing to have "key not found" printed out in the terminal
(either stderr or stdout), despite that it doesn't cause compilation
error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the
`stderr` if set to true. We set it for plist extraction, because "not
having bonjour key" should be one of the expected "normal" states

<s> We don't want to pipe it to `stdout` either, because it would be
confusing too. I figured people would still file issue if they see it in
terminal, even if it's a completely normal state. But not a strong
opinion, so let me know if you disagree. </s>

However, under verbose mode, we would pipe it to `stdout`. This will be
consistent with our previous behavior before macOS 26.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
Jaineel-Mamtora pushed a commit to Jaineel-Mamtora/flutter_forked that referenced this pull request Sep 24, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 12, 2025
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…lutter#173569)

The previous PR flutter#172913 avoids
compilation error by not having the "error: " prefix. However, it's
still very confusing to have "key not found" printed out in the terminal
(either stderr or stdout), despite that it doesn't cause compilation
error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the
`stderr` if set to true. We set it for plist extraction, because "not
having bonjour key" should be one of the expected "normal" states

<s> We don't want to pipe it to `stdout` either, because it would be
confusing too. I figured people would still file issue if they see it in
terminal, even if it's a completely normal state. But not a strong
opinion, so let me know if you disagree. </s>

However, under verbose mode, we would pipe it to `stdout`. This will be
consistent with our previous behavior before macOS 26.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.
- [ ] 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

team-ios Owned by iOS platform team tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Xcode 26 beta 4] Xcode reports Could not extract value, error: No value at that key path or invalid key path for some keys when running on iOS

3 participants