)]}'
{
  "commit": "ecf4ebf10054f70e51a0ce759b2ae91aa4febd1a",
  "tree": "a7e089d4ce6603af0135f96ec990c06b06721308",
  "parents": [
    "d2d155d1ae8c704a37f42fd3ebb1f3846f78e4d4"
  ],
  "author": {
    "name": "Dmitri Shuralyov",
    "email": "dmitshur@golang.org",
    "time": "Sat Dec 05 15:03:27 2020 -0500"
  },
  "committer": {
    "name": "Dmitri Shuralyov",
    "email": "dmitshur@golang.org",
    "time": "Wed Jan 20 22:16:54 2021 +0000"
  },
  "message": "cmd/internal/moddeps: check content of all modules in GOROOT\n\nExpand the scope of the TestAllDependenciesVendored test to check\nthat all modules in GOROOT are tidy, that packages are vendored,\nthe vendor content matches the upstream copy exactly, and that\nbundled packages are re-generated (using x/tools/cmd/bundle at\nthe version selected in cmd module; this is deterministic and\nguaranteed to be updated over time).\n\nThis is done in a conceptually simple way:\n\n1.\tMake a temporary copy of the entire GOROOT tree (except .git),\n\tone that is safe to modify.\n2.\tRun a list of high-level commands, the same commands we expect\n\tGo developers should be able to run in a normal complete GOROOT\n\ttree to make it clean and tidy.\n3.\tDiff the end result with the original GOROOT tree being tested\n\tto catch any unexpected differences.\n\nThe current set of commands that are run require the cmd/go command,\nand a functional compiler itself (because re-generating the syscall\npackage involves a directive like //go:generate go run [...]). As a\nresult, copying a large majority of the GOROOT tree is a requirement.\n\nInstead of looking for the few files or directories that can we can\nget away not copying (e.g., the testdata directories aren\u0027t strictly\nneeded at this time), we opt not to optimize and just do the simple\ncopy. This is motivated by these reasons:\n\n•\tWe end up having a complete, normal GOROOT tree, one that happens\n\tto be located at another path. There\u0027s a very high likelihood that\n\tmodule management/code generation commands, both the ones we run\n\ttoday and any additional ones that we might want to add in the\n\tfuture, will result in correct results even as the Go project\n\tevolves over time.\n\n•\tHaving a completely stand-alone copy of the GOROOT tree without\n\tsymlinks minimizes the risk of some of the module management/code\n\tgeneration commands, either now or in the future, from modifying\n\tthe user\u0027s original GOROOT tree, something that should not happen\n\tduring test execution. Overlays achieved with symlinks work well\n\twhen we can guarantee only new files are added, but that isn\u0027t\n\tthe case here.\n\n•\tCopying the entire GOROOT (without .git), takes around 5 seconds\n\ton a fairly modern computer with an SSD. The most we can save is\n\ta couple of seconds.\n\n(We make some minor exceptions: the GOROOT/.git directory isn\u0027t copied,\nand GOROOT/{bin,pkg} are deemed safe to share and thus symlink instead\nof copying. If these optimizations cease to be viable to make, we\u0027ll\nneed to remove them.)\n\nSince this functionality is fairly expensive to execute and requires\nnetwork access, it runs only when the test is executed without -short\nflag. The previous behavior of the TestAllDependenciesVendored test is\nkept in -short test mode. all.bash runs package tests with -short flag,\nso its behavior is unchanged. The expectation is that the new test will\nrun on some of the longtest builders to catch problems. Users can invoke\nthe test manually \u0027go test cmd/internal/moddeps\u0027 (and it\u0027s run as part\nof \u0027go test cmd\u0027, again, only when -short flag isn\u0027t provided).\n\nOn a 2017 MacBook Pro, a successful long test takes under 15 seconds,\nwhich should be within scope of all long tests that are selected by\n\u0027go test std cmd\u0027. We may further adjust when and where the test runs\nby default based on our experience.\n\nFixes #36852.\nFixes #41409.\nFixes #43687.\nUpdates #43440.\n\nChange-Id: I9eb85205fec7ec62e3f867831a0a82e3c767f618\nReviewed-on: https://go-review.googlesource.com/c/go/+/283643\nRun-TryBot: Dmitri Shuralyov \u003cdmitshur@golang.org\u003e\nTryBot-Result: Go Bot \u003cgobot@golang.org\u003e\nReviewed-by: Bryan C. Mills \u003cbcmills@google.com\u003e\nTrust: Dmitri Shuralyov \u003cdmitshur@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9ea21873c5ed9075b75cc49332402547cea8613b",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/moddeps/moddeps_test.go",
      "new_id": "cba401c896aad2a6e0cc811a7425a5731216c6a4",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/moddeps/moddeps_test.go"
    }
  ]
}
