)]}'
{
  "commit": "2debfbeabeb17bde7da3503ad2e35aee2918ee3d",
  "tree": "575d0e324d6dea0a16368d77050df6baf92d7126",
  "parents": [
    "c17402c833b67bd88d40671a1ef09ec88dbe5c19"
  ],
  "author": {
    "name": "Tim King",
    "email": "taking@google.com",
    "time": "Wed Apr 10 10:25:35 2024 -0700"
  },
  "committer": {
    "name": "Tim King",
    "email": "taking@google.com",
    "time": "Wed Apr 17 23:45:11 2024 +0000"
  },
  "message": "internal/testfiles: add a helper package for test files\n\nAdds a new package testfiles to help write tests around go files\nand directories. These are especially helpful when dealing with\ngo.mod files.\n\nAdds a new CopyTestFiles function that copies a directory and\nremoves the \".test\" file extension, e.g. \"go.mod.test\" becomes\n\"go.mod\". This allows for easily creating analysistests\nwith go.mod files. This change also adds a new TestDir helper\nto extract to a temporary directory.\n\nConsolidates txtar usage around ExtractTxtar, which writes a\ntxtar archive to a directory, and adds a convenience helper\nTestTxtar that extracts a txtar at a path to a temporary\ndirectory.\n\nUpdates golang/go#61336\nUpdates golang/go#53063\nUpdates golang/go#46041\nUpdates golang/go#37054\n\nChange-Id: I09210f751bbc6ac3f01c34fba22b7e8fa1ddf93f\nReviewed-on: https://go-review.googlesource.com/c/tools/+/577995\nReviewed-by: Alan Donovan \u003cadonovan@google.com\u003e\nReviewed-by: Robert Findley \u003crfindley@google.com\u003e\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8e4767a01d72a9428e8b7987fbc6c8e47090f548",
      "old_mode": 33188,
      "old_path": "go/analysis/analysistest/analysistest_test.go",
      "new_id": "b22e2a174d83108196b0013336ca5298c2d7cca7",
      "new_mode": 33188,
      "new_path": "go/analysis/analysistest/analysistest_test.go"
    },
    {
      "type": "modify",
      "old_id": "683f91e7b731cce41e6faff33f5cfd2554800829",
      "old_mode": 33188,
      "old_path": "go/analysis/passes/loopclosure/loopclosure_test.go",
      "new_id": "8c1794915a9673641da1f0c2f3c53753a066ca3b",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/loopclosure/loopclosure_test.go"
    },
    {
      "type": "modify",
      "old_id": "efee7babacbdffd4c938d2be66fc1c81f63c55ae",
      "old_mode": 33188,
      "old_path": "go/analysis/passes/stdversion/stdversion_test.go",
      "new_id": "91865278ae9db978b6e0d4f208c2e58030699ca0",
      "new_mode": 33188,
      "new_path": "go/analysis/passes/stdversion/stdversion_test.go"
    },
    {
      "type": "modify",
      "old_id": "37e74e481ec94c617796c269a235478ced04a247",
      "old_mode": 33188,
      "old_path": "go/analysis/unitchecker/separate_test.go",
      "new_id": "00c5aec7043f4b7cf6cc4d5dc2898f5abe75145c",
      "new_mode": 33188,
      "new_path": "go/analysis/unitchecker/separate_test.go"
    },
    {
      "type": "modify",
      "old_id": "607e64f6e4fdd990c6d4d8ca501ef7edb94badb1",
      "old_mode": 33188,
      "old_path": "go/ssa/builder_test.go",
      "new_id": "07b4a3cb8edf7cd4346688adcc31aa12bc0d9fa1",
      "new_mode": 33188,
      "new_path": "go/ssa/builder_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "595bd2e15c202444fc19717086513e41a19e753b",
      "new_mode": 33188,
      "new_path": "go/ssa/testdata/indirect.txtar"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8d9c108d86c715bcbd79efbd93dbb6426e0d7b93",
      "new_mode": 33188,
      "new_path": "internal/testfiles/testdata/somefile.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "55f69e1a51ed98ed815ca357a84f9af994b38427",
      "new_mode": 33188,
      "new_path": "internal/testfiles/testdata/versions/go.mod.test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "13117fda09ca43dcdc7d22970745eba95e94cd61",
      "new_mode": 33188,
      "new_path": "internal/testfiles/testdata/versions/mod.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8c1afde22ff39860af5df4c3964787714308b333",
      "new_mode": 33188,
      "new_path": "internal/testfiles/testdata/versions/post.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2b5ca6780e7379c64b661c5170c17d50b51c41cb",
      "new_mode": 33188,
      "new_path": "internal/testfiles/testdata/versions/pre.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3b2721b9822d3367fa904fc647952b5845eb74c9",
      "new_mode": 33188,
      "new_path": "internal/testfiles/testdata/versions/sub.test/sub.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ff7395527f87a0584c6065585cf649693535ad8a",
      "new_mode": 33188,
      "new_path": "internal/testfiles/testfiles.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d9563260e142560589c0b969c0d0078e60de1854",
      "new_mode": 33188,
      "new_path": "internal/testfiles/testfiles_test.go"
    }
  ]
}
