)]}'
{
  "commit": "4adca25a0558aa3f6f00784625eeddb3c5d272b7",
  "tree": "65eaa97e3d363a9adf6572a23091c2aaff57ebde",
  "parents": [
    "d0d6e3288fc1e6710669c90b54dfe38addafc415"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Fri Nov 06 22:59:21 2026 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Nov 06 22:59:21 2026 -0800"
  },
  "message": "refactor(rust): allow unwrap in tests; restyle expect messages (#4423)\n\nFollows up on post-merge review feedback on #4407\n\n(https://github.com/bazel-contrib/rules_python/pull/4407#discussion_r4500292802):\ntests should be free to panic, so unwrap() and expect() should not be\nlint errors there.\n\nTo do so, drop the global `-Dclippy::unwrap_used` flag and add a\n`.clippy.toml` with the `allow-*-in-tests` settings. Production crates\nkeep enforcing `deny(clippy::expect_used, clippy::unwrap_used)`\nthemselves via crate-level attributes.\n\nThe global flag has to go because clippy\u0027s `allow-*-in-tests` only\nrecognizes `#[test]` functions and `#[cfg(test)]` items. Helper\nfunctions in integration-test crates match neither, so a global\n`unwrap_used` would still flag them. Relying on crate-level `deny`\nattributes scopes the lint to production code only.\n\nTest `expect()` messages now follow std\u0027s recommended style: they state\nwhy the value should be `Ok` rather than naming the failed action.\n\nAlso records these conventions in `.agents/rules/rust.md`.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "939086bfc8c1633305031bc09051d42a6e6c761a",
      "old_mode": 33188,
      "old_path": ".agents/rules/rust.md",
      "new_id": "adaa035d3af047f15a60f7b8c51965a55f11f017",
      "new_mode": 33188,
      "new_path": ".agents/rules/rust.md"
    },
    {
      "type": "modify",
      "old_id": "ed25451c074dc127f28c78f6944b0622a200a730",
      "old_mode": 33188,
      "old_path": ".bazelrc",
      "new_id": "e85d8bf456c4dc9a77e4af4c455ff62215582a46",
      "new_mode": 33188,
      "new_path": ".bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d1db37687527d922f366f5611685e90c393b590",
      "new_mode": 33188,
      "new_path": ".clippy.toml"
    },
    {
      "type": "modify",
      "old_id": "71cdb8232590cc020bfa2639f42080514bd76c39",
      "old_mode": 33188,
      "old_path": "BUILD.bazel",
      "new_id": "9f570817de0abd826c620dba34c8f58be9f26150",
      "new_mode": 33188,
      "new_path": "BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "1ba26dc2b25658e93379079ed8e91a725138d13e",
      "old_mode": 33188,
      "old_path": "tests/exe_zip_maker/exe_zip_maker_test.rs",
      "new_id": "5f891ddac25294ad534a5f85e2502f696aa42c47",
      "new_mode": 33188,
      "new_path": "tests/exe_zip_maker/exe_zip_maker_test.rs"
    },
    {
      "type": "modify",
      "old_id": "91ce64c4f39a951ed9a87b4428967980ca841b3b",
      "old_mode": 33188,
      "old_path": "tests/modules/rules_rust_stub/rust/settings/BUILD.bazel",
      "new_id": "85ebd1b9f246f5b15b6ca43f54b9fcd2aaffe18d",
      "new_mode": 33188,
      "new_path": "tests/modules/rules_rust_stub/rust/settings/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "7a03035134d3ef7c50125842cd6e25de49f8fa14",
      "old_mode": 33188,
      "old_path": "tests/shrubbery/shrubbery_test.rs",
      "new_id": "2519b35f811c4d98dcd61495e83fba0b1181a451",
      "new_mode": 33188,
      "new_path": "tests/shrubbery/shrubbery_test.rs"
    },
    {
      "type": "modify",
      "old_id": "37fdbce325fd5d996cd779eb8887000260c180f7",
      "old_mode": 33188,
      "old_path": "tests/zipper/zipper_test.rs",
      "new_id": "c779cb6d6ce9d34905d36d43eca7a1a009a2908a",
      "new_mode": 33188,
      "new_path": "tests/zipper/zipper_test.rs"
    }
  ]
}
