)]}'
{
  "commit": "30aa5410583846295981bedbe1d1febedc7006c6",
  "tree": "46f65561d76ab8ea7bb1df44dda7bffe51c33bfb",
  "parents": [
    "c15153b9618afc4c5e8a43bac43339de130c2149"
  ],
  "author": {
    "name": "Nate Bosch",
    "email": "nbosch@google.com",
    "time": "Mon Dec 08 17:54:21 2025 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Dec 08 17:54:21 2025 -0800"
  },
  "message": "Require a definition named `main` in test suites (#2569)\n\nCloses #2567\n\nThe error when there is a compilation failure due to a missing `main` is\nless direct than it could be and exposes details of wrapping the test\nsuite in another library. Add an explicit check for a function declared\nwith that name when parsing metadata before attempting any compiles.\n\nAdd a check to `parseMetadata` that throws a `FormatException` if there\nis no function declared directly in the library named `main`. This will\nprevent some previously working designs such as exposing a main in a\npart or with `export`, but we do not expect those designs are used in\npractice.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0855aa7ea70101ec9db0d2570f4dfe5bc24172d1",
      "old_mode": 33188,
      "old_path": "pkgs/test/CHANGELOG.md",
      "new_id": "91df125ea34dd7b5b98091327588b03597d33b51",
      "new_mode": 33188,
      "new_path": "pkgs/test/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "f952e561218292783ef8a4ec79bb77a7dd0b0984",
      "old_mode": 33188,
      "old_path": "pkgs/test/test/runner/browser/runner_test.dart",
      "new_id": "637970df9d20ff175d8571a577f290a761f4d672",
      "new_mode": 33188,
      "new_path": "pkgs/test/test/runner/browser/runner_test.dart"
    },
    {
      "type": "modify",
      "old_id": "6c1eb7410e41475c38caf3980ffdc234d32bfacf",
      "old_mode": 33188,
      "old_path": "pkgs/test/test/runner/node/runner_test.dart",
      "new_id": "ec0a288a3f71b4caedb077fb78a553d557b0ebe4",
      "new_mode": 33188,
      "new_path": "pkgs/test/test/runner/node/runner_test.dart"
    },
    {
      "type": "modify",
      "old_id": "113702e515e5b6953ada70bfbac8edc36576f3ec",
      "old_mode": 33188,
      "old_path": "pkgs/test/test/runner/parse_metadata_test.dart",
      "new_id": "403f3941ddd9a4277b6988bffb58c3de47337344",
      "new_mode": 33188,
      "new_path": "pkgs/test/test/runner/parse_metadata_test.dart"
    },
    {
      "type": "modify",
      "old_id": "9d02cfdc1e21809d5e1ecec39f0aff221dcba7c6",
      "old_mode": 33188,
      "old_path": "pkgs/test/test/runner/precompiled_test.dart",
      "new_id": "e37e383893afa7547a145d2260e5ec8016abb90c",
      "new_mode": 33188,
      "new_path": "pkgs/test/test/runner/precompiled_test.dart"
    },
    {
      "type": "modify",
      "old_id": "a42d47611b06c5eb4a25f53ca624635e84da9fdd",
      "old_mode": 33188,
      "old_path": "pkgs/test/test/runner/runner_test.dart",
      "new_id": "2096f1a3cfc063dbc246f1efef6753246b870da2",
      "new_mode": 33188,
      "new_path": "pkgs/test/test/runner/runner_test.dart"
    },
    {
      "type": "modify",
      "old_id": "facfaf1aedf912584fc745ea46f9087535689a1e",
      "old_mode": 33188,
      "old_path": "pkgs/test_core/CHANGELOG.md",
      "new_id": "e36d0ec41f5a298c9ebdf01f6d115b51463f20a8",
      "new_mode": 33188,
      "new_path": "pkgs/test_core/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "4935a462d690474f36fb6e1dde68806b0cf05642",
      "old_mode": 33188,
      "old_path": "pkgs/test_core/lib/src/runner/parse_metadata.dart",
      "new_id": "f5e54c1f677b7946c930448639afbe5902a75e9e",
      "new_mode": 33188,
      "new_path": "pkgs/test_core/lib/src/runner/parse_metadata.dart"
    }
  ]
}
