)]}'
{
  "commit": "21d428a75bf775d9bf81967cc4a04af3dbc29114",
  "tree": "d9f4cef9efc27abbbe787afe2b6a3bf3f66cb64a",
  "parents": [
    "d0fe66300823a02583fdb94db3dc3510118995f2"
  ],
  "author": {
    "name": "Alex Van Damme",
    "email": "atv@google.com",
    "time": "Mon Jul 14 14:53:17 2025 -0700"
  },
  "committer": {
    "name": "Alex Van Damme",
    "email": "atv@google.com",
    "time": "Tue Jul 22 14:50:35 2025 -0700"
  },
  "message": "Improve cocotb Bazel rules\n\n- Introduces cocotb_test_suite, which defines a test suite that can\n  target both Verilator and VCS from one rule. This rule creates a\n  target which will run the whole suite, and then also accepts a\n  testcases list which will be used to create single-test targets.\n- Add utils/update_all_cocotb_tests.py to keep the aforementioned\n  testcase lists up-to-date.\n- Rules generated by this way are highly queriable to find lists of\n  tests to run, e.g.\n  For finding all suites that use the RvvCoreMiniAxi HDL on VCS:\n    - bazel query \u0027kind(\"cocotb_test\", //...) intersect attr(\"tags\", \"vcs_cocotb_test_suite\", //...) intersect attr(\"hdl_toplevel\", \"^RvvCoreMiniAxi$\", //...)\u0027\n  For finding all individual tests that use the RvvCoreMiniAxi HDL on VCS:\n    - bazel query \u0027kind(\"cocotb_test\", //...) intersect attr(\"tags\", \"vcs_cocotb_single_test\", //...) intersect attr(\"hdl_toplevel\", \"^RvvCoreMiniAxi$\", //...)\u0027\n\nChange-Id: I5c639b703c3c062ef37480d3aac32418761fcab2\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cad8813fac24bd3ac7f4f18adbc9b3575ac51028",
      "old_mode": 33188,
      "old_path": "kelvin_test_utils/core_mini_axi_pyocd_gdbserver.py",
      "new_id": "4dfa085d57d8cfb51bfa58dec1c3f07a973bc69f",
      "new_mode": 33188,
      "new_path": "kelvin_test_utils/core_mini_axi_pyocd_gdbserver.py"
    },
    {
      "type": "modify",
      "old_id": "229b7ca21b741943ed2eac092cfe13e189a9a0cb",
      "old_mode": 33188,
      "old_path": "rules/coco_tb.bzl",
      "new_id": "e746cb59cb0835aec5056963f1c468bfd4d2b004",
      "new_mode": 33188,
      "new_path": "rules/coco_tb.bzl"
    },
    {
      "type": "modify",
      "old_id": "f27a000f685c28a7278953391b05109e2afde9d0",
      "old_mode": 33188,
      "old_path": "tests/cocotb/BUILD",
      "new_id": "673daad7e52d9f4fc7f69f95fab6172f96c00ab1",
      "new_mode": 33188,
      "new_path": "tests/cocotb/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ff0816b8a7c20976398f80ec7ef94efbb9dc2b07",
      "new_mode": 33188,
      "new_path": "tests/cocotb/build_defs.bzl"
    },
    {
      "type": "modify",
      "old_id": "504b9f6310504cfc79ce5342c186224177047fbf",
      "old_mode": 33188,
      "old_path": "tests/cocotb/tutorial/BUILD",
      "new_id": "bc85393e164c7fe7b906afeca97b4119fa3a80c4",
      "new_mode": 33188,
      "new_path": "tests/cocotb/tutorial/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1780598cfcf91b483e6a1555006a331ca002c154",
      "new_mode": 33261,
      "new_path": "utils/update_all_cocotb_tests.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9267cbcce9af20ba84da22c9d8bf829a6efd0eb8",
      "new_mode": 33188,
      "new_path": "utils/update_cocotb_tests.py"
    }
  ]
}
