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/CAG%3D_DutVDx0HPSKfW4Az11svUjUPTvT0X1Er0_RhCVd6godD9w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
