)]}'
{
  "commit": "588ef84ecef2c9782598529ba6511d4cb72ec158",
  "tree": "2ebbce60abbc1120e7b7ce59fb8d291ece1fee00",
  "parents": [
    "17d4b10aea6bda2027047a0e3548a6f8ad667dde"
  ],
  "author": {
    "name": "Eric Sunshine",
    "email": "sunshine@sunshineco.com",
    "time": "Tue Sep 10 00:10:11 2024 -0400"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Sep 10 10:01:40 2024 -0700"
  },
  "message": "chainlint: don\u0027t be fooled by \"?!...?!\" in test body\n\nAs originally implemented, chainlint did not collect structured\ninformation about detected problems. Instead, it merely emitted raw\nparse tokens (not the original test text), along with a \"?!...?!\"\nannotation directly into the output stream each time a problem was\ndiscovered. In order to report statistics (in --stats mode) and to\nadjust its exit code to indicate success or failure, it merely counts\nthe number of times \"?!...?!\" appears in the output stream. An obvious\nshortcoming of this approach is that it can be fooled by a legitimate\n\"?!...?!\" sequence in the body of a test (though, only if an actual\nproblem is detected in the test).\n\nThe situation did not improve when 7c04aa7390 (chainlint: colorize\nproblem annotations and test delimiters, 2022-09-13) colored the\nannotations after-the-fact by searching for \"?!...?!\" in the output\nstream and inserting color codes. As above, a shortcoming is that this\napproach can incorrectly color a legitimate \"?!...?!\" sequence in a test\nbody as if it is an error.\n\nHowever, when 73c768dae9 (chainlint: annotate original test definition\nrather than token stream, 2022-11-08) taught chainlint to output the\noriginal test text verbatim, it started collecting structured\ninformation about detected problems.\n\nNow that it is available, take advantage of the structured problem\ninformation to deterministically count the number of problems detected\nand to color the annotations directly, rather than scanning the output\nstream for \"?!...?!\" and performing these operations after-the-fact.\n\nSigned-off-by: Eric Sunshine \u003csunshine@sunshineco.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5361f23b1d283cf474997fc4d68cc7bb581e029c",
      "old_mode": 33261,
      "old_path": "t/chainlint.pl",
      "new_id": "1a7611ad43c44ace7bfb57ad7a17ad896c3534db",
      "new_mode": 33261,
      "new_path": "t/chainlint.pl"
    }
  ]
}
