)]}'
{
  "commit": "95217909f9b78c058f5db106c7912ac3ea45f5e1",
  "tree": "0b597ee415058e7e2524a6d70afab404e3934d98",
  "parents": [
    "d83fa90d3c3571b615c459cc5182c9cc915fbe13"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Tue Jun 09 19:41:25 2026 +0100"
  },
  "committer": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Wed Jun 17 08:48:29 2026 +0100"
  },
  "message": "Remove PowerMock and replace with EasyMock\n\nRemove PowerMock 2.0.9 (powermock-api-easymock, powermock-module-junit4\nand their five transitive siblings) and the javassist version pin that\nonly existed to override PowerMock\u0027s older transitive. PowerMock 2.0.9\nis the last release from 2020 and its classloader rewriting is\nincompatible with EasyMock 5\u0027s MethodHandles.Lookup-based ByteBuddy\nclass injection on Java 17+: the generated proxy lands in\norg.easymock.mocks.* but the Lookup is anchored at\norg.easymock.internal.ClassProxyFactory and the JVM refuses the\ncross-package define.\n\nPowerMock\u0027s only feature this codebase used was mockStatic on\nJgitWrapper. Convert JgitWrapper from static utility to a stateless\ninstance class so its method becomes invokevirtual on a mocked\ninstance, which plain EasyMock instance mocking handles. PathOwners\ngains a package-private 11-arg constructor that accepts the wrapper\nfor tests; the public 10-arg overloads default to a real\nnew JgitWrapper(), so all production callers in plugins/owners are\nunchanged.\n\nKeeping a single mocking framework on the test classpath was preferred\nover adopting Mockito.mockStatic on a still-static JgitWrapper.\n\nBump org.easymock:easymock to 5.6.0 for a byte-buddy that knows recent\nJDK class-file versions.\n\nCo-Authored-By: Daniele Sassoli \u003cdanielesassoli@gmail.com\u003e\nChange-Id: I5079628f6f3cde4786800e4810939e40b8a4ac48\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "97a3ee9b463e9762ea5c4839c02528ea30ca4c4d",
      "old_mode": 33188,
      "old_path": "BUILD",
      "new_id": "81777d7f8f9b75d04480447db2710e7e5328edad",
      "new_mode": 33188,
      "new_path": "BUILD"
    },
    {
      "type": "modify",
      "old_id": "5ad1930677fa20eb9ebcc2ceaf853303f4a82917",
      "old_mode": 33188,
      "old_path": "external_plugin_deps.bzl",
      "new_id": "830c0ad965afa7dceb314ae66688cafc465506e5",
      "new_mode": 33188,
      "new_path": "external_plugin_deps.bzl"
    },
    {
      "type": "modify",
      "old_id": "17b8af9de2ae17973317c5dafaa7576162175e09",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/owners/common/JgitWrapper.java",
      "new_id": "8f3cd4244814b427757e5e44ffad58eb7edf83e5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/owners/common/JgitWrapper.java"
    },
    {
      "type": "modify",
      "old_id": "71ce117659d7a8d99e1b39de8c071f4c4228705d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/owners/common/PathOwners.java",
      "new_id": "7b81a1a959643e5c1112991e19820998460d5cce",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/owners/common/PathOwners.java"
    },
    {
      "type": "modify",
      "old_id": "e531a3f54b1dc67c2146ec6bbdbd33c7ae9e4ee0",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/owners/common/Config.java",
      "new_id": "155a8ec59fc701dd771d36496d069e4dde190e57",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/owners/common/Config.java"
    },
    {
      "type": "modify",
      "old_id": "134eeda51c69df7ead2374b61d377e217bda76f5",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/owners/common/PathOwnersTest.java",
      "new_id": "816037371ddede0aae7657acdfd6e9c15c3d6d43",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/owners/common/PathOwnersTest.java"
    },
    {
      "type": "modify",
      "old_id": "a6e10a61617e61de79a6d20b04327c5870b6652e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/owners/common/RegexTest.java",
      "new_id": "a28b7fc73e72ff49839911de7616441feb700314",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/owners/common/RegexTest.java"
    }
  ]
}
