)]}'
{
  "commit": "14608ca5ed0fa54fb6b2abccbd68b120bfe8e283",
  "tree": "cead6561c562f4b2169267042a9382d87950ff39",
  "parents": [
    "116b37dd4ad59aebec39ed7ea18b6b96205fec07"
  ],
  "author": {
    "name": "Jia Hao",
    "email": "jiahaog@users.noreply.github.com",
    "time": "Sat Jul 25 09:46:00 2020 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Jul 25 09:46:00 2020 +0800"
  },
  "message": "[e2e] Fix incorrect test results when one test passes then another fails (#2866)\n\n* [e2e] Fix incorrect test results when one test passes then another fails\r\n\r\nFor example, the following test will result in an error reported for the first test case.\r\n\r\n```\r\nvoid main() {\r\n  testWidgets(\u0027a test that passes\u0027, (tester) async {\r\n    expect(true, true);\r\n  });\r\n\r\n  testWidgets(\u0027a test that fails\u0027, (tester) async {\r\n    expect(true, false);\r\n  });\r\n}\r\n```\r\n\r\nWe need to reset `reportTestException` back to the previous value after completion of `runTest`, or repeated failures will cause the exception handler for a previous test to be invoked, as they \"stack\". Instead of reseting it, however, do this once in the constructor because the test description is already provided by the function signature.\r\n\r\n* Add a mechanism for testing test results",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2df897d9ab5ffb950593715887cccbf0ac9034ae",
      "old_mode": 33188,
      "old_path": "packages/e2e/CHANGELOG.md",
      "new_id": "bc844ce72086c797b6c8b968070b6bd1c0a0631f",
      "new_mode": 33188,
      "new_path": "packages/e2e/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "d773b9b7a43b9d2baf94abc4d343d3fd21d88baf",
      "old_mode": 33188,
      "old_path": "packages/e2e/lib/e2e.dart",
      "new_id": "93ce1f2c6cac93ff5a285623a8dec6806d055366",
      "new_mode": 33188,
      "new_path": "packages/e2e/lib/e2e.dart"
    },
    {
      "type": "modify",
      "old_id": "956a23f2b930fa7e83277553cebab55de2ce267c",
      "old_mode": 33188,
      "old_path": "packages/e2e/pubspec.yaml",
      "new_id": "e3f39c05334b44f6c10c1b87deb4daf75e160a34",
      "new_mode": 33188,
      "new_path": "packages/e2e/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0b00e1177e55e7a01fe4918dbedceb7dfbf51b67",
      "new_mode": 33188,
      "new_path": "packages/e2e/test/binding_fail_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e52aca112ce4b8d7d02cc3b64f99398a9dfeceaf",
      "new_mode": 33188,
      "new_path": "packages/e2e/test/data/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cbca5900fe298a8ff0088fd72a5fa099d2129eb9",
      "new_mode": 33188,
      "new_path": "packages/e2e/test/data/fail_test_script.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "194f71cdfe9b777347e3a0b747d0cb2d6fc42b02",
      "new_mode": 33188,
      "new_path": "packages/e2e/test/data/pass_test_script.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ffb7cac5cd5de1b4e75d969b6938c122b5ad392e",
      "new_mode": 33188,
      "new_path": "packages/e2e/test/data/pass_then_fail_test_script.dart"
    }
  ]
}
