)]}'
{
  "commit": "0593d3f2fb0381342cfee39b032d04b3081f289e",
  "tree": "791688a5835597ec5def7361a4cace698e699041",
  "parents": [
    "a60b65552cb2a0d82cdf513f757c8944175c1820"
  ],
  "author": {
    "name": "Nate Bosch",
    "email": "nbosch@google.com",
    "time": "Thu Feb 02 06:27:47 2023 +0000"
  },
  "committer": {
    "name": "Nate Bosch",
    "email": "nbosch@google.com",
    "time": "Thu Feb 02 06:38:32 2023 +0000"
  },
  "message": "Add assume and expectThat utilities\n\nassume marks the test as skipped. This is not useful currently, but\ncould be useful if it make the test runner not treat exceptions as\nfailures anymore.\n\nexpectThat does not throw an exception when it fails, instead it\ncollects failures and throws them in a teardown all together.\n\nAdd an `_isSkipped` field to `_TestContext` and remove\n`_SkippedContext`. The field can be set late which allows us to bail out\nof subsequent expectations on a given subject without throwing. This\navoids figuring out how to treat failure messages for an expectations\nfollowing another expectation that had failed. Current failure message\nformatting relies on the fact that you only see clauses which were\nsuccessful.\n\nNeither of these is very easy to test without sharing some testing\nutilities from the test runner because it involves making expectations\nabout the state of the test runner. Another possibility is to run a\nsubprocess and make expectations about the reporter output.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5eb6a854b494ed6f959c9afee30195a4cae44d8c",
      "old_mode": 33188,
      "old_path": "pkgs/checks/lib/checks.dart",
      "new_id": "3f0a2f248d0c403367fd5998511583a43bc70b7a",
      "new_mode": 33188,
      "new_path": "pkgs/checks/lib/checks.dart"
    },
    {
      "type": "modify",
      "old_id": "3a43fd177cdb465b4fc59908a435a2b3966e09cf",
      "old_mode": 33188,
      "old_path": "pkgs/checks/lib/src/checks.dart",
      "new_id": "58a6b3736fd681e654f698398c424865bd054cb0",
      "new_mode": 33188,
      "new_path": "pkgs/checks/lib/src/checks.dart"
    },
    {
      "type": "modify",
      "old_id": "77027732a59bae9fe4ece68af88e4f8fd41bde6b",
      "old_mode": 33188,
      "old_path": "pkgs/checks/pubspec.yaml",
      "new_id": "a895e4db7dfa6ffcd40002842c5bcc22efd5c363",
      "new_mode": 33188,
      "new_path": "pkgs/checks/pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "1632870469c887adc71d3235d2632a5dccf01166",
      "old_mode": 33188,
      "old_path": "pkgs/test_api/CHANGELOG.md",
      "new_id": "921d2a2e9c42a76dfa17a21df8247747da81a56c",
      "new_mode": 33188,
      "new_path": "pkgs/test_api/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "b7e145527f48f2b15113c0083c40fcd7dccb9154",
      "old_mode": 33188,
      "old_path": "pkgs/test_api/lib/hooks.dart",
      "new_id": "9b34210cf22313676ea6ff33de521d0b0cc47bb4",
      "new_mode": 33188,
      "new_path": "pkgs/test_api/lib/hooks.dart"
    },
    {
      "type": "modify",
      "old_id": "51d5b237abbcc808efba64c9cd2e25b56a853822",
      "old_mode": 33188,
      "old_path": "pkgs/test_api/pubspec.yaml",
      "new_id": "2ebfc119fc7d5c16982e0ee9b6131381c31ad844",
      "new_mode": 33188,
      "new_path": "pkgs/test_api/pubspec.yaml"
    }
  ]
}
