{"push_id":733223601,"size":46,"distinct_size":3,"ref":"refs/heads/master","head":"9e801408551beed380c8427013875da6a39d6a89","before":"3287103064771437314f0a664a2fe28d312abc82","commits":[{"sha":"8eb2fdf78159c8af2b55027eebb9c2e7adf22756","author":{"email":"bb1f132dcb86bfc59bf4a043a3139a9ac7c0b658@gmail.com","name":"Stu Hood"},"message":"Remove Nailgun specific classes from zinc, since pants invokes Main directly.\n\nzinc's caches are attached to the `object Compiler` singleton, which holds the analysis, compiler, and resident caches with setup-specific cache keys. This means that it survives along with nailgun's classloader.\n\nTesting Done:\nhttps://github.com/pantsbuild/pants/pull/1765\n\nReviewed at https://rbcommons.com/s/twitter/r/2439/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/8eb2fdf78159c8af2b55027eebb9c2e7adf22756"},{"sha":"5d3610f370fed23d292b429181c27be39fc282d4","author":{"email":"86f39098c3d6e8fa24cceea9f4753c2782977b2d@gmail.com","name":"John Sirois"},"message":"Fixup BuildFile must_exist logic.\n\nRelax the BuildFile.must_exist logic to ensure a logical BUILD file\nexists.  Previously the logic required the primary canonical BUILD file\n(no extension) to be a valid BUILD file and not a directory if a valid\nsibling BUILD file existed.\n\nThis change adds a failing test that is then fixed.\nAlong the way, centralize BUILD file `._isfile` testing in\n`_get_all_build_files`.\n\nTesting Done:\nBefore fix, the new test failed like so:\n```console\n$ ./pants test tests/python/pants_test/base:filesystem_build_file -- -ktest_dir_is_primary\n...\n                     E         MissingBuildFileError: Path to buildfile (/tmp/tmp7ZEf8n/root/issue_1742/BUILD) is a directory, but it must be a file.\n\n                     src/python/pants/base/build_file.py:167: MissingBuildFileError\n...\n```\n\nCI went green here:\n  https://travis-ci.org/pantsbuild/pants/builds/70123652\n\nBugs closed: 1742, 1774\n\nReviewed at https://rbcommons.com/s/twitter/r/2441/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/5d3610f370fed23d292b429181c27be39fc282d4"},{"sha":"149ee5f07b15ba0eaeeae24f91348cf0f032b11d","author":{"email":"5496d4fd32b46dcb22e495b96a73063ce8ea956b@gmail.com","name":"Garrett Malmquist"},"message":"Improved error messaging for unknown Target kwargs.\n\nInstead of crashing with an unhelpful exception message about\n__init__ receiving unexpected kwargs, print out what the kwargs\nwere (keys and values), and what the target type and address were.\n\nTesting Done:\nAdded test to tests/python/pants_test/base/test_target.py.\n\nCI went green here: https://travis-ci.org/pantsbuild/pants/builds/70127047\n\nBugs closed: 1773\n\nReviewed at https://rbcommons.com/s/twitter/r/2443/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/149ee5f07b15ba0eaeeae24f91348cf0f032b11d"},{"sha":"ea32fd2995f3fd1a4199c193313b6fd5da37fc43","author":{"email":"5496d4fd32b46dcb22e495b96a73063ce8ea956b@gmail.com","name":"Garrett Malmquist"},"message":"Added cwd argument to allow JavaTest targets to require particular working directories.\n\nThis allows the syntax:\n```\njunit_tests(name='tests',\n  sources=globs('*.java'),\n  dependencies=[...],\n  cwd='my/cool/testing/working/directory',\n)\n```\n\njunit_run.py now partitions tests by their working directory, before partitioning them by batch size.\n\nTargets which don't have `cwd` set default to the working directory according to the original logic\nin junit_run.py (that is, they either use the path to the first Target, or whatever's set by --test-junit-cwd).\n\nTesting Done:\nAdded a test under testprojects/ to test cwd behavior.\n\nCI went green here: https://travis-ci.org/pantsbuild/pants/builds/70124545\n\nBugs closed: 1772\n\nReviewed at https://rbcommons.com/s/twitter/r/2440/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/ea32fd2995f3fd1a4199c193313b6fd5da37fc43"},{"sha":"46bc7c6d7b840b0ca83a342cffe9a2487f0f2260","author":{"email":"86f39098c3d6e8fa24cceea9f4753c2782977b2d@gmail.com","name":"John Sirois"},"message":"Deprecate with_description.\n\nFixup one with_description usage in the repo.\n\nTesting Done:\nAfter deprecation:\n```console\n$ ./pants list --documented 1>/dev/null\nINFO] Detected git repository at /home/jsirois/dev/3rdparty/jsirois-pants3 on branch jsirois/python_test_suite/deprecate\nWARN] While parsing FilesystemBuildFile(/home/jsirois/dev/3rdparty/jsirois-pants3/zinc/BUILD):\n    5:   dependencies=[\n    6:     'src/scala/org/pantsbuild/zinc',\n    7:   ]\n*   8: ).with_description(\"zinc -- the scala compiler in nailgun\")\n        DeprecationWarning:\npants.base.target_addressable.with_description is deprecated and will be removed in version 0.0.38:\nUse the target description keyword argument instead of the deprecated with_description target method.\n\n    9:\n...\n```\n\nAfter fix:\n```console\n$ ./pants list --documented zinc/\nINFO] Detected git repository at /home/jsirois/dev/3rdparty/jsirois-pants3 on branch jsirois/python_test_suite/deprecate\nzinc:zinc\n  zinc -- the scala compiler in nailgun\n```\n\nCI went green here:\n  https://travis-ci.org/pantsbuild/pants/builds/70139175\n\nBugs closed: 1777\n\nReviewed at https://rbcommons.com/s/twitter/r/2444/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/46bc7c6d7b840b0ca83a342cffe9a2487f0f2260"},{"sha":"204482179e1756c159234bff3fce51067f214b7e","author":{"email":"040cff05bd320eb0560246813fe142b421636f09@gmail.com","name":"Benjy Weinberger"},"message":"Some refactoring of global options.\n\n- Makes global option registration be via an Optionable, for uniformity\n  with task and subsystem options.\n- Move the bootstrap option registration to the same file as the rest\n  of the global options registration, for clarity.\n- Removed some special-casing of the global scope.\n- Removed the buildroot argument to the options bootstrapper. It was only\n  used so that reflect.py could substitute a placeholder for display in\n  the builddict. We now do this with a simple string replace. I prefer\n  this slightly hackier method, isolated to just inside reflect.py, than\n  having it leak into the signature of options bootstrapper.\n- This change is to support a future change in which registered options will\n  know their category (global, subsystem, task), which in turn will\n  be used for better help and builddict generation.\n\nTesting Done:\nCI passed here: https://travis-ci.org/pantsbuild/pants/builds/70169296\n\nReviewed at https://rbcommons.com/s/twitter/r/2446/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/204482179e1756c159234bff3fce51067f214b7e"},{"sha":"7c973e38f0d637fa4694c6c7c6a769acb71d9e57","author":{"email":"bb1f132dcb86bfc59bf4a043a3139a9ac7c0b658@gmail.com","name":"Stu Hood"},"message":"jvm_options for thrift-linter\n\nYes, another one. Still interested in working on the jvm subsystem that will generically affect nailgun tasks, but it's too late for us for this release.\n\nTesting Done:\nhttps://github.com/pantsbuild/pants/pull/1778\n\nReviewed at https://rbcommons.com/s/twitter/r/2445/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/7c973e38f0d637fa4694c6c7c6a769acb71d9e57"},{"sha":"0efc7b2aed9692c9e05a8280b31f5748a125d9db","author":{"email":"86f39098c3d6e8fa24cceea9f4753c2782977b2d@gmail.com","name":"John Sirois"},"message":"Robustify the pants ivy configuration.\n\nThis turns on required pom downloads from maven-central for atrifact\nresolves to be considered successful.\n\nIt also enables the jakarta commons http-client for downloads which has\nthe effect of enabling retries leading to less transient resolve\nfailures.\n\nInspired by investigatory/expository work in:\n  https://github.com/pantsbuild/pants/issues/1779\n\nTesting Done:\nLocally ran:\n```console\n$ rm -rf ~/.ivy2/pants/com.google.guava/\n$ ./pants clean-all resolve.ivy --args=-verbose :jar-tool\n```\n\nThe pants server console stdout for ivy resolve confirmed jakarta commons\nhttp-client was selected.\n\nCI went green here:\n  https://travis-ci.org/pantsbuild/pants/builds/70274238\n\nBugs closed: 1779, 1784\n\nReviewed at https://rbcommons.com/s/twitter/r/2450/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/0efc7b2aed9692c9e05a8280b31f5748a125d9db"},{"sha":"709597d36240d32d9047afe8d0b257518294c1ae","author":{"email":"bb1f132dcb86bfc59bf4a043a3139a9ac7c0b658@gmail.com","name":"Stu Hood"},"message":"Record all output classes for the jvm isolated compile strategy\n\nThis change causes the isolated strategy to fully record classpath entries for jvm targets, meaning that the content generated by `bundle` should fully match the classpath during `test.junit`. This partially addresses an issue we saw internally with untracked classes (likely a zinc bug), and allows for extra outputs generated by tools like autovalue to be included.\n\n- Record all output classes (files) for the isolated strategy.\n- Log a debug entry when classes were unclaimed by analysis.\n- Add auto-value example to confirm that generated classes end up in a binary via products.\n\nTesting Done:\nhttps://github.com/pantsbuild/pants/pull/1785\n\nReviewed at https://rbcommons.com/s/twitter/r/2451/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/709597d36240d32d9047afe8d0b257518294c1ae"},{"sha":"0acdf8d8ab49a0a6bdf5084a99e0c1bca0231cf6","author":{"email":"695d76d5a2f51dc9340d65ccd0d72ad7560773f9@squareup.com","name":"Eric Ayers"},"message":"Add an option --main to the run.jvm task to override the specification of 'main' on a jvm_binary() target\n\nTesting Done:\nCI green at https://travis-ci.org/pantsbuild/pants/builds/70208866\n\nTested manually and added a new unit test.\n\nBugs closed: 1775\n\nReviewed at https://rbcommons.com/s/twitter/r/2442/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/0acdf8d8ab49a0a6bdf5084a99e0c1bca0231cf6"},{"sha":"69a95616bc5ab498166adf939e5634e6fa2ff0ae","author":{"email":"86f39098c3d6e8fa24cceea9f4753c2782977b2d@gmail.com","name":"John Sirois"},"message":"Prepare the 0.0.35 release.\n\nTesting Done:\nRan `./pants` until it succeeded while weeding out deprecations that\nhave come due.\n\nChecked we were option migration clean with:\n```\n$ ./pants run migrations/options/src/python:migrate_config\n```\n\nRan rst2html on CHANGELOG.rst to sanity-check the render and links in\nthe release notes section.\n\nCI went green here:\n  https://travis-ci.org/pantsbuild/pants/builds/70445674\n\nBugs closed: 1790, 1791\n\nReviewed at https://rbcommons.com/s/twitter/r/2457/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/69a95616bc5ab498166adf939e5634e6fa2ff0ae"},{"sha":"5ad9650b74d6337d5e77e2d37760dd028618e7a6","author":{"email":"86f39098c3d6e8fa24cceea9f4753c2782977b2d@gmail.com","name":"John Sirois"},"message":"Fixup the etree xml import.\n\nThe xml package uses some funky `__init__.py`s and it seems that\nfollowing the import style used in the tutorials at\nhttps://docs.python.org/2/library/xml.etree.elementtree.html is for the\nbest.\n\nWithout this change, at least one test that used IvyUtils would fail\nto import etree.\n\nTesting Done:\nBefore:\n```console\n$ ./pants test tests/python/pants_test/backend/jvm/tasks:ivy_resolve\n...\ncls = <class 'pants.backend.jvm.ivy_utils.IvyUtils'>\npath = '/home/jsirois/.ivy2/pants/internal-5a072f3999a982d831741bc7615c544c6ea25233-default.xml'\n\n   @classmethod\n   def _parse_xml_report(cls, path):\n     logger.debug(\"Parsing ivy report {}\".format(path))\n     ret = IvyInfo()\n>     etree = xml.etree.ElementTree.parse(path)\nE     AttributeError: 'module' object has no attribute 'etree'\n\nsrc/python/pants/backend/jvm/ivy_utils.py:292: AttributeError\n...\n```\n\nAfter the test runs green in isolation.\n\nCI went green here:\n  https://travis-ci.org/pantsbuild/pants/builds/70453510\n\nBugs closed: 1792\n\nReviewed at https://rbcommons.com/s/twitter/r/2459/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/5ad9650b74d6337d5e77e2d37760dd028618e7a6"},{"sha":"6376bc98b423073f22112e7307852ff472d4b165","author":{"email":"040cff05bd320eb0560246813fe142b421636f09@gmail.com","name":"Benjy Weinberger"},"message":"Reimplement help formatting.\n\nUsing the argparse help formatter was no longer viable: we had\nto customize it in so many ways it was easier to simply implement\nour own. The new implementation:\n\n- Supports subsystem args.\n- Separates help info extraction from rendering, which allows\n  more code reuse (and less hackiness) in builddict and bash\n  completion generation tasks.\n- Is better tested than the old code.\n- Uses ANSI colors for readability.\n- Sensibly handles recursively-registered options (it displays\n  them in basic help on the outermost scope the option was\n  registered on, but then only in advanced help in the inner\n  scopes that inherited the registration via recursion).\n\nThis change also makes the implementations of builddict and bash\ncompletion generation simpler and supportive of subsystem options.\n\nThis implementation requires knowledge of what a scope represents\n(a task, goal, subsystem etc.) and also of who registered each\noption on a scope. Note that these overlap but are not identical.\nFor example, a recursive global option is registered by the global\nregistrar on all task scopes.\n\nThis makes a lot of options code quite a lot simpler, so I took\nthe opportunity of this refactoring to simplify even further.\nFor example, we no longer have separate paths for registering\nboolean and non-boolean options.\n\nI also deleted a couple of unimportant builddict tests, which\nrelied more on incidental behavior than on intended properties\nof that code.  It was going to be too much effort to get them\nto pass (as TestOptions don't expose necessary methods, and it\nwould be overkill to add them just to support these trivial tests).\n\nTesting Done:\nCI passes here: https://travis-ci.org/pantsbuild/pants/builds/70451126\n\nA previous run had one odd test failure which I'm currently investigating.\n\nReviewed at https://rbcommons.com/s/twitter/r/2458/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/6376bc98b423073f22112e7307852ff472d4b165"},{"sha":"ebff83e1be5e042d11baf266462899e1a93afeed","author":{"email":"2e2dc5ad6df0796e5dd7a1bf0b74ab46581aa12a@squareup.com","name":"Jessica Rosenfield"},"message":"Visual docsite changes\n\nChanges to the pantsbuild documentation.  Only changes the CSS file.\n\nTesting Done:\nStaged to http://pantsbuild.github.io/staging/zundel/\n\nBugs closed: 1796\n\nReviewed at https://rbcommons.com/s/twitter/r/2463/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/ebff83e1be5e042d11baf266462899e1a93afeed"},{"sha":"f17710cfd3f43f882814ebe637cffea63722420f","author":{"email":"86f39098c3d6e8fa24cceea9f4753c2782977b2d@gmail.com","name":"John Sirois"},"message":"Fix test_execute_fail.\n\nThis fixes test_execute, but not the underlying global state used in\nDummyTask.  Its that state, that appears to have supported a successful\nrun under certain sharding / test method ordering, although I was not\nable to positively identify a sequence of calls that would lead to\ntest_execute ever passing.\n\nIn particular, it had 2 local errors that look systemic:\n\n1. The raises regex did not escape the parens.\n   Before this fix, the regex only could match 'Failed to generate\n   targets' - with 's' being in an unused capture group.\n2. The assertRaisesRegexp callable argument was not a callable.\n   The _result_ of task.execute() was passed instead of the task.execute\n   method.\n\nThese system errors were in addition to the lack of setup of the global\nstrategy explicitly.  That strategy is needed to ensure DummyGen's\nexecute_codegen is called leading to the raise.  Using the isolated\nstrategy (which was the default) with no targets short circuits the\nexecute_codegen call, failing to ever engage the `should_fail` forced\nraise.\n\nTesting Done:\nBefore:\n```console\n$ ./pants test tests/python/pants_test/backend/codegen/tasks:simple_codegen_task\n...\ntests/python/pants_test/backend/codegen/tasks/test_simple_codegen_task.py .....F.\n\n==================== FAILURES ====================\n____ SimpleCodegenTaskTest.test_execute_fail _____\n\nself = <test_simple_codegen_task.SimpleCodegenTaskTest testMethod=test_execute_fail>\n\n   def test_execute_fail(self):\n     task = self._create_dummy_task()\n     task.should_fail = True\n>     self.assertRaisesRegexp(TaskError, 'Failed to generate target(s)', task.execute())\nE     TypeError: 'NoneType' object is not callable\n\ntests/python/pants_test/backend/codegen/tasks/test_simple_codegen_task.py:126: TypeError\n...\n```\n\nAfter - success.\n\nCI went green here:\n  https://travis-ci.org/pantsbuild/pants/builds/70515314\n\nBugs closed: 1794\n\nReviewed at https://rbcommons.com/s/twitter/r/2461/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/f17710cfd3f43f882814ebe637cffea63722420f"},{"sha":"b2202480258b6f2f5f4e020e86cde975088c7792","author":{"email":"611c518744362208b53e7b6cfb4f421f57702d14@gmail.com","name":"Cody Gibb"},"message":"Improved artifact cache usability\n\nProvided a simpler interface for caching, which tasks may opt into: each VersionedTarget (VT) is given a directory in which to place its results, so when executing some task on invalid VersionedTargets, the task may place the artifacts of a VT within its corresponding directory. The act of writing the VT / artifact files to the cache is factored out of individual tasks, and is done \"automatically\" by Task->execute.\n\nImplemented the above functionality in various tasks to showcase various use cases (CppBinaryCreate, CppCompile, CppLibraryCreate, Checkstyle, Scalastyle, JarCreate). Note: this interface only works on isolated strategies, not global.\n\nWrote a test utility for verifying arbitrary unit tests are caching results.\n\nTesting Done:\nCI: https://travis-ci.org/pantsbuild/pants/builds/70269784\n\nAdded C++ integration tests for caching, and applied above mentioned test utility to various tests to verify caching.\n\nNote: There was an issue with Antlr unit tests, which began to fail when using the artifact cache. These tests were disabled: see lengthy comment in tests/python/pants_test/backend/codegen/tasks/test_antlr_gen.py for more details.\n\nReviewed at https://rbcommons.com/s/twitter/r/2449/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/b2202480258b6f2f5f4e020e86cde975088c7792"},{"sha":"782ffe2e515d9db387f5385ebfebbbca66733ba2","author":{"email":"86f39098c3d6e8fa24cceea9f4753c2782977b2d@gmail.com","name":"John Sirois"},"message":"Fix migrate_config to detect explicit [DEFAULT]s.\n\nPreviously it was using a public ConfigParser API and a private\nConfigParser data structure - both of which did not include the\n'DEFAULT' section by design.\n\nTesting Done:\nI reproed the http://github.com/pantsbuild/pants/issues#issue/1758 case\nwith a local diff of:\n```diff\ndiff --git a/pants.ini b/pants.ini\nindex 51aa086..5961063 100644\n--- a/pants.ini\n+++ b/pants.ini\n@@ -9,6 +9,11 @@\n #   pants_workdir: the scratch space used to for live builds in this repo\n\n [DEFAULT]\n+read_artifact_caches: [\"/mnt/nfs/shared-cache/pants-artifact-cache\", \"https://foo.example.com/cache/\"]\n+read_from_artifact_cache: true\n+write_artifact_caches: [\"/mnt/nfs/shared-cache/pants-artifact-cache\", \"https://foo.example.com/cache/\"]\n+write_to_artifact_cache: true\n+\n```\n\nThis led to the following check results with the new code:\n```console\nChecking config file at ./pants.ini for unmigrated keys.\nFound write_to_artifact_cache in section [DEFAULT]. Should be write in section [cache].\nFound read_from_artifact_cache in section [DEFAULT]. Should be read in section [cache].\nFound read_artifact_caches in section [DEFAULT]. Should be read_from in section [cache].\nFound write_artifact_caches in section [DEFAULT]. Should be write_to in section [cache].\nFound jvm_options in section [DEFAULT]. Should be options in section [jvm].\n```\n\nThe 1st 4 messages are what were expected, the last seems unexpected except\nthat the migration has been partially done, with the legacy option left in\nplace pending full code migration to jvm subsystem as commented in\npants.ini.\n\nCI went green here:\n  https://travis-ci.org/pantsbuild/pants/builds/70518341\n\nBugs closed: 1758, 1798\n\nReviewed at https://rbcommons.com/s/twitter/r/2465/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/782ffe2e515d9db387f5385ebfebbbca66733ba2"},{"sha":"3fcfb09127585f25b9490cf9265a89ebbd729e08","author":{"email":"040cff05bd320eb0560246813fe142b421636f09@gmail.com","name":"Benjy Weinberger"},"message":"Support short-form task subsystem flags.\n\nFor example, `./pants test.junit --jvm-options=foobar <target>` will set\nthe jvm options on the test.junit task's instance of the JVM subsystem.\n\n`./pants --jvm-options=foobar test <target>` will, as before, set the\njvm options on the global JVM subsystem, and you can still fully-qualify\nthe task one: `./pants --test-junit-jvm-options=foobar test <target>`.\n\nTesting Done:\nTests for new functionality added.\n\nCI passes: https://travis-ci.org/pantsbuild/pants/builds/70640788.\n\nReviewed at https://rbcommons.com/s/twitter/r/2466/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/3fcfb09127585f25b9490cf9265a89ebbd729e08"},{"sha":"839b8f86d7d9429d395772594b9aacec09d5c86f","author":{"email":"5496d4fd32b46dcb22e495b96a73063ce8ea956b@gmail.com","name":"Garrett Malmquist"},"message":"Helpful error message when 'sources' is specified for jvm_binary.\n\nThis addresses: https://github.com/pantsbuild/pants/issues/871\n\njvm_binary will now give a more human readible error message that\ntypical pants users can understand and act on.\n\nTesting Done:\nAdded unit test to test_jvm_binary.py.\n\nCI went green here: https://travis-ci.org/pantsbuild/pants/builds/70420422\n\nCI went green again: https://travis-ci.org/pantsbuild/pants/builds/70754043\n\nBugs closed: 871, 1789\n\nReviewed at https://rbcommons.com/s/twitter/r/2455/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/839b8f86d7d9429d395772594b9aacec09d5c86f"},{"sha":"53397b47449b027539eebdb515ae407f5c1ddd23","author":{"email":"695d76d5a2f51dc9340d65ccd0d72ad7560773f9@squareup.com","name":"Eric Ayers"},"message":"Allows ./pants --help >/tmp/help.txt to suppress color printing\n\nTesting Done:\nCI green at https://travis-ci.org/pantsbuild/pants/builds/70509267\n\nBugs closed: 1797\n\nReviewed at https://rbcommons.com/s/twitter/r/2464/","distinct":false,"url":"https://api.github.com/repos/digwanderlust/pants/commits/53397b47449b027539eebdb515ae407f5c1ddd23"}]}