)]}'
{
  "commit": "3ea50fa41471c19b8fee694e94b405223545787b",
  "tree": "66c7fa931359423c7543de2b4cdc0dfee94f5454",
  "parents": [
    "a1c7a431778429c0f90b8e722ee5a17a108cbbaa"
  ],
  "author": {
    "name": "Ben Konyi",
    "email": "bkonyi@google.com",
    "time": "Tue Sep 22 15:36:01 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 22 15:36:01 2026 +0000"
  },
  "message": "[flutter_tools] Fix flutter doctor path validation for symlinked SDKs (#193006)\n\nWhen Flutter is installed via a symlink or directory junction (such as\nvia Scoop on Windows), binaries found on `PATH` resolve to their target\ndestination while `flutterRoot` was compared using its unresolved path.\nThis caused `FlutterValidator` to issue bogus warnings that `flutter`\nand `dart` binaries were outside the Flutter SDK checkout.\n\nResolve `flutterRoot` symbolically when verifying SDK binary\ncontainment, falling back to the unresolved path if resolution fails,\nwhile preserving the user-configured path for display and\nrecommendations.\n\nFixes https://github.com/flutter/flutter/issues/191936\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read and followed the [Flutter Style Guide], including [Features\nwe expect every widget to implement].\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] All existing and new tests are passing.\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md\n[Features we expect every widget to implement]:\nhttps://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement\n[CLA]: https://cla.developers.google.com/",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8a8e3391017bf6650852afb14a270165d8d4f9f5",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/doctor.dart",
      "new_id": "36c92da1bd279b5cc39f0d680b1b4cb8fdd7cc6a",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/doctor.dart"
    },
    {
      "type": "modify",
      "old_id": "ff1dd35c70521f849b5814a5f78777d48ca41c87",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/flutter_validator_test.dart",
      "new_id": "ce9e9ffcf2f65e633c09ef5b815ba2a0576bc6bb",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/flutter_validator_test.dart"
    }
  ]
}
