I use tox as well. Actually, I use detox and retox (parallel versions of tox, easily installable with pip) which can speed things up quite a bit.
On Wed, Mar 20, 2019 at 1:33 AM Pablo Estrada <[email protected]> wrote: > > Correction - the command is now: tox -e py35-gcp,py35-lint > > And it ran on my machine in 5min 40s. Not blazing fast, but at least > significantly faster than waiting for Jenkins : ) > Best > -P. > > On Tue, Mar 19, 2019 at 5:22 PM Pablo Estrada <[email protected]> wrote: >> >> I use a selection of tox tasks. Here are the tox tasks that I use the most: >> - py27-gcp >> - py35-gcp >> - py27-cython >> - py35-cython >> - py35-lint >> - py27-lint >> >> Most recently, I'll run `tox -e py3-gcp,py3-lint`, which run fairly quickly. >> You can choose which subset works for you. >> My insight is: Lints are pretty fast, so it's fine to add a couple different >> lints. Unittest runs are pretty slow, so I usually go for the one with most >> coverage for my change (x-gcp, or x-cython). >> Best >> -P. >> >> On Mon, Feb 25, 2019 at 4:33 PM Ruoyun Huang <[email protected]> wrote: >>> >>> nvm. Don't take my previous non-scientific comparison (only ran it once) >>> too seriously. :-) >>> >>> I tried to repeat each for multiple times and now the difference >>> diminishes. likely there was a transient error in caching. >>> >>> On Mon, Feb 25, 2019 at 3:38 PM Kenneth Knowles <[email protected]> wrote: >>>> >>>> Ah, that is likely caused by us having ill-defined tasks that cannot be >>>> cached. Or is it that the configuration time is so significant? >>>> >>>> Kenn >>>> >>>> On Mon, Feb 25, 2019 at 11:05 AM Ruoyun Huang <[email protected]> wrote: >>>>> >>>>> Out of curiosity as a light gradle user, I did a side by side comparison, >>>>> and the readings confirm what Ken and Michael suggests. >>>>> >>>>> In the same repository, do gradle clean then followed by either of the >>>>> two commands. Measure their runtime respectively. The latter one takes >>>>> 1/3 running time. >>>>> >>>>> time ./gradlew spotlessApply && ./gradlew checkstyleMain && ./gradlew >>>>> checkstyleTest && ./gradlew javadoc && ./gradlew findbugsMain && >>>>> ./gradlew compileTestJava && ./gradlew compileJava >>>>> real 9m29.330s user 0m11.330s sys 0m1.239s >>>>> >>>>> time ./gradlew spotlessApply checkstyleMain checkstyleTest javadoc >>>>> findbugsMain compileJava compileTestJava >>>>> real 3m35.573s >>>>> user 0m2.701s >>>>> sys 0m0.327s >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Mon, Feb 25, 2019 at 10:47 AM Alex Amato <[email protected]> wrote: >>>>>> >>>>>> @Michael, no particular reason. I think Ken's suggestion makes more >>>>>> sense. >>>>>> >>>>>> On Mon, Feb 25, 2019 at 10:36 AM Udi Meiri <[email protected]> wrote: >>>>>>> >>>>>>> Talking about Python: >>>>>>> I only know of "./gradlew lint", which include style and some py3 >>>>>>> compliance checking. >>>>>>> There is no auto-fix like spotlessApply AFAIK. >>>>>>> >>>>>>> As a side-note, I really dislike our python line continuation indent >>>>>>> rule, since pycharm can't be configured to adhere to it and I find >>>>>>> myself manually adjusting whitespace all the time. >>>>>>> >>>>>>> >>>>>>> On Mon, Feb 25, 2019 at 10:22 AM Kenneth Knowles <[email protected]> >>>>>>> wrote: >>>>>>>> >>>>>>>> FWIW gradle is a depgraph-based build system. You can gain a few >>>>>>>> seconds by putting all but spotlessApply in one command. >>>>>>>> >>>>>>>> ./gradlew spotlessApply && ./gradlew checkstyleMain checkstyleTest >>>>>>>> javadoc findbugsMain compileTestJava compileJava >>>>>>>> >>>>>>>> It might be clever to define a meta-task. Gradle "base plugin" has the >>>>>>>> notable check (build and run tests), assemble (make artifacts), and >>>>>>>> build (assemble + check, badly named!) >>>>>>>> >>>>>>>> I think something like "everything except running tests and building >>>>>>>> artifacts" might be helpful. >>>>>>>> >>>>>>>> Kenn >>>>>>>> >>>>>>>> On Mon, Feb 25, 2019 at 10:13 AM Alex Amato <[email protected]> wrote: >>>>>>>>> >>>>>>>>> I made a thread about this a while back for java, but I don't think >>>>>>>>> the same commands like sptoless work for python. >>>>>>>>> >>>>>>>>> auto fixing lint issues >>>>>>>>> running and quick checks which would fail the PR (without running the >>>>>>>>> whole precommit?) >>>>>>>>> Something like findbugs to detect common issues (i.e. py3 compliance) >>>>>>>>> >>>>>>>>> FWIW, this is what I have been using for java. It will catch pretty >>>>>>>>> much everything except presubmit test failures. >>>>>>>>> >>>>>>>>> ./gradlew spotlessApply && ./gradlew checkstyleMain && ./gradlew >>>>>>>>> checkstyleTest && ./gradlew javadoc && ./gradlew findbugsMain && >>>>>>>>> ./gradlew compileTestJava && ./gradlew compileJava >>>>> >>>>> >>>>> >>>>> -- >>>>> ================ >>>>> Ruoyun Huang >>>>> >>> >>> >>> -- >>> ================ >>> Ruoyun Huang >>>
