isKeepLog() wasn't stubbing properly for me. Additionally I need to produce a mock logic for getNextBuild() if I use a Mockito implementation for this. The mock framework doesn't cycle through builds properly with getNextBuild() in its current state.
On Tue, Jul 9, 2019 at 3:03 AM Ullrich Hafner <[email protected]> wrote: > BTW: mockito can stub final methods as well: > https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2#unmockable > <https://github.com/mockito/mockito/wiki/What's-new-in-Mockito-2#unmockable> > > Which method did you try to stub that is final? Maybe you can change that > part in your code by using a facade or adapter... > > Am 09.07.2019 um 03:34 schrieb 'Benjamin Beggs' via Jenkins Developers < > [email protected]>: > > I almost had this working with Mockito but hit a wall...it's possible > PowerMock will solve the issue. I'll give this a go! > > On Monday, July 8, 2019 at 6:58:44 PM UTC-4, Gavin Mogan wrote: >> >> You can probably use powermock to override the static >> Calendar.getInstance() >> >> But I don't easily know if that function is used to generate the internal >> build time, but you can probably track it down with a breakpoint in >> build.class >> >> On Mon, Jul 8, 2019 at 3:36 PM 'Benjamin Beggs' via Jenkins Developers < >> [email protected]> wrote: >> >>> I think a full implementation with Mockito is untenable. It seems I >>> would need to mock an excessive amount of function returns and the result >>> may still be inflexible and finnicky. >>> >>> I'll follow the JenkinsRule method you're talking about...I expect I can >>> still mock the date data. Thanks for the help here. :) >>> >>> On Monday, July 8, 2019 at 6:08:33 PM UTC-4, Gavin Mogan wrote: >>>> >>>> That shouldn't be the case if you use JenkinsRule, actually create the >>>> project, and run a quick echo pipeline a few times. >>>> >>>> I know from working on the java 11 stuff, that mockito has trouble >>>> mocking functions that are final, it'll silently not do so. Its going to >>>> save you a ton of headaches to use JenkinsRule. >>>> >>>> @Rule >>>> public JenkinsRule j = new JenkinsRule() >>>> >>>> p = j.createFreeStyleProject("name"); >>>> jenkins.assertBuildStatus(Result.SUCCESS, p.scheduleBuild2(0)); // >>>> build 1 >>>> jenkins.assertBuildStatus(Result.SUCCESS, p.scheduleBuild2(0)); // >>>> build 2 >>>> jenkins.assertBuildStatus(Result.SUCCESS, p.scheduleBuild2(0)); // >>>> build 3 >>>> >>>> but i see you are messing with dates, so that might be trickier, i'm >>>> not sure. >>>> >>>> You can try subclassing FreeStyleProject, and overriding the function >>>> to return the value you want. >>>> If that works fine, then its how the function matching/overriding works >>>> in mockito, if it doesn't work, then its the weird final/static stuff that >>>> mockito has trouble with. You might need to also use powermock and prepare >>>> for test. >>>> >>>> On Mon, Jul 8, 2019 at 12:40 PM 'Benjamin Beggs' via Jenkins Developers >>>> <[email protected]> wrote: >>>> >>>>> The issue here is with my build history instantiation. All build >>>>> retrieve calls return null regardless of method (getFirstBuild, >>>>> getLastBuild, getBuildByNumber, etc). >>>>> >>>>> On Monday, July 8, 2019 at 3:24:47 PM UTC-4, Benjamin Beggs wrote: >>>>>> >>>>>> I will investigate this further, thanks for pointing this >>>>>> implementation out to me. >>>>>> >>>>>> On Monday, July 8, 2019 at 1:52:40 PM UTC-4, Jesse Glick wrote: >>>>>>> >>>>>>> On Mon, Jul 8, 2019 at 1:39 PM 'Benjamin Beggs' via Jenkins >>>>>>> Developers >>>>>>> <[email protected]> wrote: >>>>>>> > Do you have an example of a similar implementation for unit >>>>>>> testing using jenkinsrule? I may try just porting the tests over to >>>>>>> this. >>>>>>> >>>>>>> I would definitely advise using `JenkinsRule` over mocking >>>>>>> frameworks. >>>>>>> Slower, but much more realistic (and much more likely to continue >>>>>>> running after internal refactorings). Example: >>>>>>> >>>>>>> >>>>>>> https://github.com/jenkinsci/jenkins/blob/a6f5b2b1288d15cd2ea5c2fd9b8916e6397bf795/test/src/test/java/hudson/tasks/LogRotatorTest.java#L67-L82 >>>>>>> >>>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Jenkins Developers" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/jenkinsci-dev/610d3de0-c377-4c4c-bd2d-db00c84b6f41%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/jenkinsci-dev/610d3de0-c377-4c4c-bd2d-db00c84b6f41%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Jenkins Developers" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/jenkinsci-dev/529dd72d-c30c-44df-83b5-e4ffacfa7694%40googlegroups.com >>> <https://groups.google.com/d/msgid/jenkinsci-dev/529dd72d-c30c-44df-83b5-e4ffacfa7694%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> > -- > You received this message because you are subscribed to the Google Groups > "Jenkins Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jenkinsci-dev/1dd9d470-5c0a-4ff3-bc3e-78610c593b28%40googlegroups.com > <https://groups.google.com/d/msgid/jenkinsci-dev/1dd9d470-5c0a-4ff3-bc3e-78610c593b28%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "Jenkins Developers" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/jenkinsci-dev/_kNEe9ggaW0/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jenkinsci-dev/761DC01E-FF74-4A6D-9EFC-0764243AE27C%40gmail.com > <https://groups.google.com/d/msgid/jenkinsci-dev/761DC01E-FF74-4A6D-9EFC-0764243AE27C%40gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAMSuSKTR9bbQCWM_2b3L9oGBSsQAqrj59t7O2-pd7ppSTXZpdA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
