[format_command] - fixed fallback logic within formatter command class #9410
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
*This change enhances the FormatCommand’s Swift‐format resolution logic by introducing a third, macOS-specific lookup step. Now, if the user hasn’t provided --swift-format-path and no swift-format binary is found on the PATH, the tool will invoke:
xcrun --find swift-format
and, if that returns a valid path, use it to format and lint Swift files. If all three strategies fail (explicit override, PATH scan, xcrun), we print an error that also suggests installing Xcode 16+.
Key changes:
_findValidSwiftFormat() in format_command.dart:
Check --swift-format-path
Scan for any swift-format on PATH
New: On macOS, fall back to xcrun --find swift-format
On failure, updated error message to mention Xcode 16+.
Tests in format_command_test.dart:
Added a new test under the swift-format group that simulates macOS, forces both the explicit flag and PATH lookups to fail, stubs xcrun to return /usr/bin/swift-format, and then asserts that formatting and linting invocations use that fallback binary. This ensures full coverage of the new lookup path.
This PR resolves the following issue: #153803
*
Pre-Review Checklist
[shared_preferences]
pubspec.yaml
with an appropriate new version according to the pub versioning philosophy, or I have commented below to indicate which version change exemption this PR falls under1.CHANGELOG.md
to add a description of the change, following repository CHANGELOG style, or I have commented below to indicate which CHANGELOG exemption this PR falls under1.///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.
Footnotes
Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2 ↩3