)]}'
{
  "commit": "3ecd0a5fca5dd294f5c6ce64c5f44906ef7db596",
  "tree": "e9cbd760b030246d77de8e1773ce4896186ac83e",
  "parents": [
    "8726d8fe0c2dff7901e32651e994bbd1ab924607"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Fri May 19 15:26:18 2017 -0400"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Tue May 23 22:33:25 2017 +0000"
  },
  "message": "Convert aes_test to GTest.\n\nThis introduces machinery to start embedding the test data files into\nthe crypto_test binary. Figuring out every CI\u0027s test data story is more\ntrouble than is worth it. The GTest FileTest runner is considerably\ndifferent from the old one:\n\n- It returns void and expects failures to use the GTest EXPECT_* and\n  ASSERT_* macros, rather than ExpectBytesEqual. This is more monkey\n  work to convert, but ultimately less work to add new tests. I think\n  it\u0027s also valuable for our FileTest and normal test patterns to align\n  as much as possible. The line number is emitted via SCOPED_TRACE.\n\n- I\u0027ve intentionally omitted the Error attribute handling, since that\n  doesn\u0027t work very well with the new callback. This means evp_test.cc\n  will take a little more work to convert, but this is again to keep our\n  two test patterns aligned.\n\n- The callback takes a std::function rather than a C-style void pointer.\n  This means we can go nuts with lambdas. It also places the path first\n  so clang-format doesn\u0027t go nuts.\n\nBUG\u003d129\n\nChange-Id: I0d1920a342b00e64043e3ea05f5f5af57bfe77b3\nReviewed-on: https://boringssl-review.googlesource.com/16507\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9abb82b529c122fafc4f7307cb4280174720f05d",
      "old_mode": 33188,
      "old_path": "CMakeLists.txt",
      "new_id": "d5f9ed99c6ac0c9cd65d56665ffcd7f8a687f119",
      "new_mode": 33188,
      "new_path": "CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "ba6ae07fa29deb6fd1bf5a991110a39ebbcd8c24",
      "old_mode": 33188,
      "old_path": "crypto/CMakeLists.txt",
      "new_id": "3a2e802b67e2fe0e7b78ea914d4bab7af2a1c557",
      "new_mode": 33188,
      "new_path": "crypto/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "4bcaf47826ddc5b639b3aa6fd932ea9074c73492",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/CMakeLists.txt",
      "new_id": "ab95fd62ad19fd6526898316a7b79497c57c11fc",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "e1e9ca6f65a5dee1fe70b6ef95f1abf7ae84a00d",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/aes/aes_test.cc",
      "new_id": "73ae2555d5a2154d8146d54dcf817986608ab8b1",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/aes/aes_test.cc"
    },
    {
      "type": "modify",
      "old_id": "2c03f903e037c60b4af5f47fd166ebb062559dd5",
      "old_mode": 33188,
      "old_path": "crypto/test/file_test.h",
      "new_id": "70629f36327b1b9d1cf61c5d215478aefed17435",
      "new_mode": 33188,
      "new_path": "crypto/test/file_test.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "90d12bf222c26620d38306e673ea570124dbf7cc",
      "new_mode": 33188,
      "new_path": "crypto/test/file_test_gtest.cc"
    },
    {
      "type": "modify",
      "old_id": "e03bff44288e7ef3f1fbc4ee074e586cee8a5b94",
      "old_mode": 33188,
      "old_path": "crypto/test/test_util.h",
      "new_id": "3bf41abb7a70a1c57d6cd20f03f57876a5d04139",
      "new_mode": 33188,
      "new_path": "crypto/test/test_util.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "185e961924a38e50c488a8604336785ba8698dac",
      "new_mode": 33188,
      "new_path": "sources.cmake"
    },
    {
      "type": "modify",
      "old_id": "49cb42843a8da8d96318d2b0c6d4e5a1202e316f",
      "old_mode": 33188,
      "old_path": "util/all_tests.json",
      "new_id": "f926d07e60e8804531a285821a31b1e9368db3b9",
      "new_mode": 33188,
      "new_path": "util/all_tests.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "08195301aa965b26b1ed9f473a9e52e641568f65",
      "new_mode": 33188,
      "new_path": "util/embed_test_data.go"
    },
    {
      "type": "modify",
      "old_id": "a10d2753a2664e2db8f9ace8fa892e0ca7c28e41",
      "old_mode": 33188,
      "old_path": "util/generate_build_files.py",
      "new_id": "0b1be0bfa7a919f8dd1977653f03e570f26f7d9e",
      "new_mode": 33188,
      "new_path": "util/generate_build_files.py"
    }
  ]
}
