)]}'
{
  "log": [
    {
      "commit": "ab6ec61251786bf6b4d0407db3bc28aeefcb55db",
      "tree": "fbdb5c5bd38879440eac702018dd53c0ed639541",
      "parents": [
        "58c83fa7c8609059f3d66a5860abb302284c2981"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Feb 23 12:57:51 2018 +0000"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Wed Feb 28 15:13:23 2018 +0000"
      },
      "message": "frameworks/base: Set LOCAL_SDK_VERSION where possible.\n\nThis change sets LOCAL_SDK_VERSION for all packages where\nthis is possible without breaking the build, and\nLOCAL_PRIVATE_PLATFORM_APIS :\u003d true otherwise.\n\nSetting one of these two will be made required soon, and this\nis a change in preparation for that. Not setting LOCAL_SDK_VERSION\nmakes the app implicitly depend on the bootclasspath, which is\noften not required. This change effectively makes depending on\nprivate apis opt-in rather than opt-out.\n\nTest: make relevant packages\nBug: 73535841\nChange-Id: I4233b9091d9066c4fa69f3d24aaf367ea500f760\n"
    },
    {
      "commit": "1abbb6a6fd44dc42f2955b9191aa32fc31858580",
      "tree": "c171d7fcc6eed200d7971413b2dffdc91438eeb1",
      "parents": [
        "006b7a2b760b89211b9530804118a8333cee314b"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Dec 11 15:50:05 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Dec 11 21:39:31 2017 +0000"
      },
      "message": "Stop statically including legacy-android-test\n\nStatically including legacy-android-test leads to duplicate classes\nwhich causes build time problems (with Proguard) and runtime problems on\nolder SDK versions. This change:\n* Stops statically including legacy-android-test.\n* Adds compile time dependencies on andoid.test.base, android.test.mock\n  and android.test.runner where necessary.\n* Adds \u003cuses-library android:name\u003d\"android.test.runner\"/\u003e to any\n  affected package to ensure that the classes that were included by\n  legacy-android-test are still available at runtime. That also adds a\n  dependency on android.test.base and android.test.mock.\n\nThe following change descriptions were generated automatically and so\nmay be a little repetitive. They are provided to give the reviewer\nenough information to check the comments match what has actually been\nchanged and check the reasoning behind the changes.\n\n* test-runner/tests/Android.mk\n    Added \u0027android.test.base\u0027 and \u0027android.test.mock\u0027 to\n    LOCAL_JAVA_LIBRARIES because FrameworkTestRunnerTests\u0027s source\n    depends on their classes and because of these changes they are no\n    longer present on the compilation path.\n\n    Removed legacy-android-test from LOCAL_STATIC_JAVA_LIBRARIES\n    because statically including the classes in\n    FrameworkTestRunnerTests results in duplicate classes which leads\n    to build time and compile time issues.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I52a91fe4f6016de8edf4753fbd2bc4d2e4c9f317\n"
    },
    {
      "commit": "1c6a5ad92e84780be005877493fd5a281517194e",
      "tree": "12f5b16d9039d1b3ef8d301013e983bc65214f0b",
      "parents": [
        "516bd5f8622c24d774b72ed3825cdc860cd045d2",
        "8c7026c5a32684976ffb745daf7ec5bab729f274"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 27 10:52:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 27 10:52:39 2017 +0000"
      },
      "message": "Merge \"Clean up ClassPathPackageInfoSource\"\nam: 8c7026c5a3\n\nChange-Id: I503ae16c4d47ce3cecb79987da919c7f579347da\n"
    },
    {
      "commit": "aaaba76810c0b5b61c609a929536b64ac7e368fc",
      "tree": "9dabcf4edf22526ff3a057fcd5a0bb2d0be0ae53",
      "parents": [
        "3c5ab7d3243e646137d9e60c2a54ffc907a85a27"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 20 16:18:07 2017 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jun 26 17:00:21 2017 +0100"
      },
      "message": "Clean up ClassPathPackageInfoSource\n\nPart of the work of removing JUnit and dependent android.test classes\nfrom the Android API involves providing a static library that developers\ncan include in their test applications to ease migration. That library\nwill be built directly from the source (as opposed to android.jar which\nis built from stubs) and so developers will be able to see classes and\nmethods that are not present in the stubs. This change is one of a\nnumber of similar changes that cleanup the existing non-API code in\norder to minimize the additional methods and classes exposed externally.\nThe basic approach is to remove unused classes and methods, use least\nvisible access modifier possible and generally minimize the amount of\npublicly visible code.\n\nPackageInfoSources only provided a static field and accessor method so\nthey were moved into ClassPathPackageInfoSource and PackageInfoSources\nwas removed.\n\nClassPathPackageInfo was only used in ClassPathPackageInfoSource and in\nTestGrouping. In the latter it was simply used as an intermediate value\nbetween ClassPathPackageInfoSource.getPackage(String packageName) and\nClassPathPackageInfo.getTopLevelClassesRecursive(String packageName).\nMoving that method into ClassPathPackageInfoSource allowed the\nClassPathPackageInfo to become an inner class of\nClassPathPackageInfoSource. As it is an inner class it no longer needed\nan explicit reference to the containing ClassPathPackageInfoSource.\n\nBug: 30188076\nTest: make checkbuild and ran FrameworkTestRunnerTests\nChange-Id: Idb0b6a585030805b9cff8562abb93b7e5920c53a\n"
    },
    {
      "commit": "50826c5f2efd8e301a17db2164709c12e6ff0d06",
      "tree": "d9c473bfd9195b66684505627adcffb24cd7d48a",
      "parents": [
        "834cf8d664d4955696555b7bc47dbe8d58d8164d",
        "fedb4b745693afba9627f8971346d5151101fb88"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jun 26 13:15:03 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 26 13:15:09 2017 +0000"
      },
      "message": "Merge \"Clean up Predicate related code in android.test\" into oc-dev-plus-aosp"
    },
    {
      "commit": "fedb4b745693afba9627f8971346d5151101fb88",
      "tree": "73d4ab78b4a0877817f19ff34b60dbff9ddc9e0d",
      "parents": [
        "e211119fea8e01e573ecde57ced2e9bf8dfbf65e"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 22 10:47:25 2017 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 22 15:48:44 2017 +0100"
      },
      "message": "Clean up Predicate related code in android.test\n\nPart of the work of removing JUnit and dependent android.test classes\nfrom the Android API involves providing a static library that developers\ncan include in their test applications to ease migration. That library\nwill be built directly from the source (as opposed to android.jar which\nis built from stubs) and so developers will be able to see classes and\nmethods that are not present in the stubs. This change is one of a\nnumber of similar changes that cleanup the existing non-API code in\norder to minimize the additional methods and classes exposed externally.\nThe basic approach is to remove unused classes and methods, use least\nvisible access modifier possible and generally minimize the amount of\npublicly visible code.\n\nThe HasClassAnnotation and HasMethodAnnotation were never used\nseparately and only used by HasAnnotation. This merges the functionality\ninto a single nested class in TestPredicates, hidden behind the new\nTestPredicates.hasAnnotation(). The HasAnnotationTest was renamed as\nTestPredicatesTest and the HasClassAnnotationTest and\nHasMethodAnnotationTest classes were removed as their tests provide no\nadditional coverage. The removal of the Has*Annotation.java files means\nthat the test-runner/src/android/test/suitebuilder/annotation/ directory\nis empty apart from the package.html file so that was moved to\nlegacy-test to sit alongside the actual annotation classes.\n\nThe Predicates class, while part of the legacy-test module was only\never used by the test-runner module and only its not() method was\nactually used. So, the not() method and associated nested class were\nmoved to TestPredicates, the tests for not() were moved to\nTestPredicatesTest and the Predicates* classes were removed.\nThat allowed for the removal of the legacy-android-tests as that is now\nempty.\n\nTestPredicates has a number of constants that were public. They were\nhidden by moving them to the class that actually used them.\n\nA minor generic issue was fixed in AssignableFrom.\n\nBug: 30188076\nTest: make checkbuild and run FrameworkTestRunnerTests\nChange-Id: I861da388a4146bb28e1e480d1b7ba9137b7b270e\n"
    },
    {
      "commit": "bd96f408085701fe04fb46acdd3a101cfdebe064",
      "tree": "211204ffbd93dbe997cbde7f1c78409ff902ae4d",
      "parents": [
        "2a637cf9b0f2c2ebaf573a1f478e31dc1e6a8354"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 22 13:29:26 2017 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 22 15:21:32 2017 +0100"
      },
      "message": "Clean up TestCaseUtil\n\nPart of the work of removing JUnit and dependent android.test classes\nfrom the Android API involves providing a static library that developers\ncan include in their test applications to ease migration. That library\nwill be built directly from the source (as opposed to android.jar which\nis built from stubs) and so developers will be able to see classes and\nmethods that are not present in the stubs. This change is one of a\nnumber of similar changes that cleanup the existing non-API code in\norder to minimize the additional methods and classes exposed externally.\nThe basic approach is to remove unused classes and methods, use least\nvisible access modifier possible and generally minimize the amount of\npublicly visible code.\n\nTestCaseUtil.getTestCaseNames() is only used by tests but its tests did\nprovide some coverage of the getTests() method so remove the method and\nthe tests the method was simply moved into TestCaseUtilTest and the\ntests renamed to make it clearer that they are testing\nTestCaseUtil.getTests().\n\nSimilarly, TestCaseUtil.createTestSuite() was only used by tests but its\ntests did provide some coverage of the invokeSuiteMethodIfPossible()\nmethod so the tests were modified and renamed to preserve that coverage.\n\nTestCaseUtil.getTestAtIndex() was completely unused so was just removed.\n\nBug: 30188076\nTest: make checkbuild and ran FrameworkTestRunnerTests\nChange-Id: I62bbdbab428d7560f0c7df11f313fe60cfd31d13\n"
    },
    {
      "commit": "2a637cf9b0f2c2ebaf573a1f478e31dc1e6a8354",
      "tree": "f17fafccf21c1fb0351ada95564628ff775fd843",
      "parents": [
        "e74f3adba563d95159916014b21e9463a6c40a07"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 22 12:52:18 2017 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jun 22 12:58:58 2017 +0100"
      },
      "message": "Ensure that android.test tests pass\n\nIt looks as though the tests in test-runner/tests have not actually been\nrun successfully for over 7 years. As a result they have degraded. This\nchange fixes the tests so that they will pass and provides instructions\non how to run them.\n\nTestCaseUtilTest.testGetTestCaseNamesForTestSuiteWithSuiteMethod\n    This fails because it expected 2 names to be returned but only\n    returns 0. The reason for that is although TwoTestsInTestSuite has a\n    Test suite() method that does create a TestSuite with two tests the\n    TestCaseUtil method does not actually call suite(). Instead, because\n    TwoTestsInTestSuite is a TestSuite it just calls the tests() method\n    on it which returns an empty Enumeration because TwoTestsInTestSuite\n    is empty.\n\n    The support for \"static Test suite() {}\" is broken but fixing this\n    will affect the behavior of InstrumentationTestRunner which is used\n    in thousands of different places both in and outside Google and so\n    could cause untold problems.\n\nTestSuiteBuilderTest.testIncludeAllPackagesUnderHere\n    Reformat the list, one per line and then add missing name\n    \"testPublicConstructor\".\n\nErrorTest/FailingTest\n    These tests are not meant to be run on their own, only as part of a\n    separate test. The RunAsPartOfSeparateTest annotation was added to\n    allow these to be excluded using notAnnotation as shown in the\n    instructions for running the tests.\n\nBug: 30188076\nTest: followed new instructions in test-runner/tests/Android.mk\nChange-Id: I60e7bee9cd08a9ab7777a2578fc58da772de5c1f\n"
    },
    {
      "commit": "01dcf54e9a0a77bdfb9694b1c40626c1bebc2168",
      "tree": "118c15632d66022069f7ec32160b104c6b4bad55",
      "parents": [
        "0e4f1358d6b2a1b321f8deaded61643eed908abb",
        "e2e557976f1d68bf4d6a147ec484e5455f15eeef"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 21 09:03:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 21 09:03:29 2017 +0000"
      },
      "message": "Merge \"Cleanup a.t.TestGrouping\""
    },
    {
      "commit": "e2e557976f1d68bf4d6a147ec484e5455f15eeef",
      "tree": "22b1af76216a1465201e9a1b91aa9f1e13c4ee49",
      "parents": [
        "48bc4c1f420d8f60c4d83d0ded4be0f37a37dd22"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 20 14:53:48 2017 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 20 15:29:57 2017 +0100"
      },
      "message": "Cleanup a.t.TestGrouping\n\nTestGrouping is not part of the API but is used by classes that are and\nso will need to be included in the static library we ship as part of the\nSDK. As that library will be built directly from the source (as opposed\nto android.jar which is built from stubs) developers will be able to see\nclasses and methods that are hidden and so not present in the stubs.\n\nThis change makes TestGrouping and its members as inaccessible as\npossible. Unused methods and fields were removed and the TestGrouping\nclass was simplified by passing the ClassLoader into the constructor,\ninitializing the classLoader, making the classLoader field final,\nand removing the setClassLoader(ClassLoader) method.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: Ie0545b1a61b74cdbc78667417f360b5197e2e128\n"
    },
    {
      "commit": "4f1dbfed97ed482110dea1d606809dcd4355105b",
      "tree": "85c210535f6dc287c799c8230401151b27ff52ee",
      "parents": [
        "48bc4c1f420d8f60c4d83d0ded4be0f37a37dd22"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 20 14:03:28 2017 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jun 20 15:01:36 2017 +0100"
      },
      "message": "Remove unused a.t.s.InstrumentationTestSuiteBuilder\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I30514123c077e6047227f888f5f1a20e71ee1988\n"
    },
    {
      "commit": "8c5a24d16926fb14f407ba51026f9a5b973b2e01",
      "tree": "5ffa82b89064abbadc1d7ef6e20c6a9a9ac5cac7",
      "parents": [
        "9588b607f048d0f513d674e90f9d0823928d1d26"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed May 10 13:30:16 2017 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu May 11 12:41:31 2017 +0100"
      },
      "message": "Remove dependency on com.google.android.collect classes\n\nIn preparation for building android.legacy.test library against\nthe SDK this removes a dependency on internal classes.\n\nBug: 30188076\nTest: make checkbuild\nChange-Id: I9ea3827ab5db167c8cbddad25f0815c942681092\n"
    },
    {
      "commit": "57e490cf8cf85932c11208c64bbd2b35315ffbc8",
      "tree": "38070ad246bd7003c680149a74683ab7c951a832",
      "parents": [
        "78a20be77acb6595ed112f2a2642ed569f6082b5"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 09 14:47:53 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Feb 09 14:52:43 2017 +0000"
      },
      "message": "Partial Revert \"Replace com.android.internal.util.Predicate with java.util.function.Predicate\"\n\nThis partially reverts commit 3e5fbca0c57742f28f5c7e6bda6c3500b9471b47.\n\nBug: 35187548\nBug: 30188076\nBug: 35089332\nTest: make checkbuild\nChange-Id: I7ab4279aab604e3d56003b0a59867948aebabd28\n"
    },
    {
      "commit": "3e5fbca0c57742f28f5c7e6bda6c3500b9471b47",
      "tree": "5bee6ac83dc3cc0b8f9421a61b2108b994c587a9",
      "parents": [
        "97fca8c035c7daa9cb1058aa37f0d8fb3ec73f70"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Feb 07 15:04:10 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Feb 07 16:57:54 2017 +0000"
      },
      "message": "Replace com.android.internal.util.Predicate with java.util.function.Predicate\n\nBug: 35089332\nBug: 30188076\nTest: make checkbuild\nMerged-In: I0a5b4bf520fc39b59d8d790b01e9cff0d54e6d21\nChange-Id: I58e4e35e7b7315033d893748f7c79e1ba6732f39\n"
    },
    {
      "commit": "ccb04450279c53eda250ac3e20b75cd07bcd1f7e",
      "tree": "b7465ccb8c71931bcc64f3fa19c90be70d6baf54",
      "parents": [
        "0ac7232b7cd55806b4fd231899a57a20c7f7bdd8"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Jan 10 12:08:23 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jan 19 09:43:05 2017 +0000"
      },
      "message": "Prepare for removal of legacy-test from default targets\n\nIn preparation for removing junit classes from the Android API\nthe legacy-test target will be removed from the\nTARGET_DEFAULT_JAVA_LIBRARIES. This change adds explicit\ndependencies on junit and/or legacy-android-test to ensure that\nmodules will compile properly once it is removed.\n\n(cherry picked from 6387604f9e672ece85e07c4bcbd7be396867f06f)\n\nBug: 30188076\nTest: make checkbuild\nMerged-In: I13e88297731253420e4e5f5291d503f13a39a156\nChange-Id: I58446eb8c45d8ac2bcdbc9fa40d1321e811bdd4b\n"
    },
    {
      "commit": "877d428e39200fc5f289bfc88d67069cf7b9662a",
      "tree": "222cfa3b427254bf8cd0159c0669fb85a89b8afe",
      "parents": [
        "287bd83f9ea257594e0d483d3851236139e5744e"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Jun 01 18:38:44 2011 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Jun 01 20:03:39 2011 -0700"
      },
      "message": "Test runner cleanup: delete unused old classes.\n\nChange-Id: Iaaabd47d4074f936a811fc1b6575088d70842564\n"
    },
    {
      "commit": "bbfe0b2264703c243e2e74631abd26fdf4459e36",
      "tree": "e47eac80284822babe166ef4b099d9830010bbcc",
      "parents": [
        "d8a6271bb1da4ee2a8ae126b532f1b5f302decb8",
        "243f7f85ea9e57716590b9cf355e55d1f0236fce"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Thu Jul 08 19:10:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 08 19:10:29 2010 -0700"
      },
      "message": "am 243f7f85: am f6120cf4: Merge \"Improve InstrumentationTestRunner exception handling.\" into gingerbread\n\nMerge commit \u0027243f7f85ea9e57716590b9cf355e55d1f0236fce\u0027\n\n* commit \u0027243f7f85ea9e57716590b9cf355e55d1f0236fce\u0027:\n  Improve InstrumentationTestRunner exception handling.\n"
    },
    {
      "commit": "31e7ce762ccbbb747fabb4581e42a0a2fe56e780",
      "tree": "f9d5ff503a6ce35c29aa2da2f9bdc6359f6640dc",
      "parents": [
        "dacabf97c609a040ada857a7da6c560097448ae3"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Jul 07 17:19:08 2010 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Wed Jul 07 17:33:22 2010 -0700"
      },
      "message": "Improve InstrumentationTestRunner exception handling.\n\nThis commit fixes two somewhat related problems:\n  - Attempting to run a method which does not exist caused a runtime\nexception which stopped the test run. Change this so the runner reports\nan individual test failure instead\n  - A runtime exception during the test run would cause it to stop\ncompletely, with no information dumped to the logcat or stdout. Now\nexceptions are trapped and reported to stdout.\n\nAlso added associated unit tests to test these two conditions.\n\nRelated bug 2812262.\n\nChange-Id: I383f9b9bad99f14cb51071800fa9bdbf6a6a1119\n"
    },
    {
      "commit": "bb469fe3da7e6d17e851a95026a9eea905c52daa",
      "tree": "fea7c329f41977fabc3dc75c9122ce680a1aecb9",
      "parents": [
        "a2c980d30f41e6d5aff948e7b249d7c3360db89d"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Apr 23 16:22:09 2010 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Apr 23 16:29:00 2010 -0700"
      },
      "message": "Add test runner log when test case class is not loaded.\n\nThe test runner will only load TestCase classes that have a public\nconstructor with either no params or a single String parameter.\n\nThis is fairly subtle behavior and can be difficult to catch. This change\nadds a log message when a TestCase class is not loaded, and adds some\nassociated unit tests.\n\nChange-Id: I6fc63e4179c949620f5773e0ae134f99905a6fb2\n"
    },
    {
      "commit": "88e03a97366d08fc69d852cf2219f9d0b1916af4",
      "tree": "99e50be3bfd8a264b6d84133e4e05ea59e2c50ef",
      "parents": [
        "b09cc2cde25d02f668b8bc2115a9479425f48703"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Feb 19 09:57:11 2010 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Mon Feb 22 18:08:35 2010 -0800"
      },
      "message": "Add ability to run tests restricted to given annotation.\n\nAnd ability to exclude tests with given annotation.\n\nAlso fix class cast compile warning in emma output method.\n\nBug 2239240\n\nChange-Id: I56273a51a8c58a690680bdb612615fab69e6e13f\n"
    },
    {
      "commit": "e70f61b1160e953e5e4d18d30a463fa9ba821779",
      "tree": "763d50921749fb256c7e2b656db045ee21277b06",
      "parents": [
        "fda25347b8aaa860e0fdbc972c0f4411c85f8fa3"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Feb 19 10:49:27 2010 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Sat Feb 20 17:29:05 2010 -0800"
      },
      "message": "Retry test-runner tests move.\n\nThis time change the frameworks makefile so it only includes test-runner/src\nin the public API.\n"
    },
    {
      "commit": "c1ca8c51c616d1517b18bf24feaa9f8f1430c835",
      "tree": "d4b1e47a6cbcb24f8f278d93c69041d3bcf1d38b",
      "parents": [
        "9db619e5d3420c53d94866a02b8f3ed298afe636"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Feb 19 10:31:05 2010 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Feb 19 10:31:05 2010 -0800"
      },
      "message": "Revert \"Move framework test-runner unit tests to be closer to their source.\"\n\nThis reverts commit 12093976a4842a795491cfd2b1d3b71e18503f2d.\n"
    },
    {
      "commit": "12093976a4842a795491cfd2b1d3b71e18503f2d",
      "tree": "04d06cdfe57151ca3856eab6c405f260583cf1fa",
      "parents": [
        "5df3a9017eaac2aef2ad360ce8f298b2d60b5536"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Thu Feb 18 17:56:11 2010 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@android.com",
        "time": "Fri Feb 19 09:58:29 2010 -0800"
      },
      "message": "Move framework test-runner unit tests to be closer to their source.\nMove the test-runner source into a separate src folder to accommodate the test\nmove.\n"
    }
  ]
}
