diff --git a/core/src/test/java/hudson/triggers/TimerTriggerTest.java b/core/src/test/java/hudson/triggers/TimerTriggerTest.java index ef6edf44004a290d86ab3502ff2ffb0b2dc08ceb..8489776eee4c9b6a3d3c07a9cd1074f1b15ec7a9 100644 --- a/core/src/test/java/hudson/triggers/TimerTriggerTest.java +++ b/core/src/test/java/hudson/triggers/TimerTriggerTest.java @@ -24,9 +24,14 @@ package hudson.triggers; import antlr.ANTLRException; +import hudson.scheduler.CronTabList; +import hudson.scheduler.Hash; +import org.junit.Assert; import org.junit.Test; import org.jvnet.hudson.test.Issue; +import java.util.TimeZone; + /** * @author Kanstantsin Shautsou */ @@ -36,4 +41,22 @@ public class TimerTriggerTest { public void testNoNPE() throws ANTLRException { new TimerTrigger("").run(); } + + @Issue("JENKINS-43328") + @Test + public void testTimeZoneOffset() throws Exception { + TimeZone defaultTz = TimeZone.getDefault(); + TimeZone.setDefault(TimeZone.getTimeZone("Europe/Berlin")); + try { + String cron = "TZ=GMT\nH 0 * * *"; + CronTabList ctl = CronTabList.create(cron, Hash.from("whatever")); + Assert.assertEquals("previous occurrence is in GMT", "GMT", ctl.previous().getTimeZone().getID()); + + cron = "TZ=America/Denver\nH 0 * * *"; + ctl = CronTabList.create(cron, Hash.from("whatever")); + Assert.assertEquals("next occurrence is in America/Denver", "America/Denver", ctl.next().getTimeZone().getID()); + } finally { + TimeZone.setDefault(defaultTz); + } + } }