diff --git a/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java b/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java index bdb9f7509..396a0f9be 100644 --- a/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java +++ b/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java @@ -169,8 +169,13 @@ public static ZonedDateTime today(String... var) { ); } } - - ZonedDateTime dateTime = getDateTimeArg(null, zoneOffset); + long currentMillis = JinjavaInterpreter + .getCurrentMaybe() + .map(JinjavaInterpreter::getConfig) + .map(JinjavaConfig::getDateTimeProvider) + .map(DateTimeProvider::getCurrentTimeMillis) + .orElse(System.currentTimeMillis()); + ZonedDateTime dateTime = getDateTimeArg(currentMillis, zoneOffset); return dateTime.toLocalDate().atStartOfDay(zoneOffset); } diff --git a/src/test/java/com/hubspot/jinjava/lib/fn/TodayFunctionTest.java b/src/test/java/com/hubspot/jinjava/lib/fn/TodayFunctionTest.java index c94faef4f..659cca991 100644 --- a/src/test/java/com/hubspot/jinjava/lib/fn/TodayFunctionTest.java +++ b/src/test/java/com/hubspot/jinjava/lib/fn/TodayFunctionTest.java @@ -6,7 +6,6 @@ import com.hubspot.jinjava.Jinjava; import com.hubspot.jinjava.JinjavaConfig; import com.hubspot.jinjava.interpret.Context; -import com.hubspot.jinjava.interpret.DeferredValueException; import com.hubspot.jinjava.interpret.InvalidArgumentException; import com.hubspot.jinjava.interpret.JinjavaInterpreter; import com.hubspot.jinjava.mode.EagerExecutionMode; @@ -65,7 +64,6 @@ public void itIgnoresNullTimezone() { assertThat(Functions.today((String) null).getZone()).isEqualTo(ZoneOffset.UTC); } - @Test(expected = DeferredValueException.class) public void itDefersWhenExecutingEagerly() { JinjavaInterpreter.pushCurrent( new JinjavaInterpreter( @@ -77,10 +75,8 @@ public void itDefersWhenExecutingEagerly() { .build() ) ); - try { - Functions.today(ZONE_NAME); - } finally { - JinjavaInterpreter.popCurrent(); - } + + ZonedDateTime today = Functions.today(ZONE_NAME); + assertThat(today.getYear()).isGreaterThan(2023); } } diff --git a/src/test/java/com/hubspot/jinjava/util/EagerExpressionResolverTest.java b/src/test/java/com/hubspot/jinjava/util/EagerExpressionResolverTest.java index 2a95cfdc4..df2ed1f64 100644 --- a/src/test/java/com/hubspot/jinjava/util/EagerExpressionResolverTest.java +++ b/src/test/java/com/hubspot/jinjava/util/EagerExpressionResolverTest.java @@ -772,13 +772,6 @@ public void itSplitsResolvedExpression() { .containsExactlyInAnyOrder("['a', 'b']", "'a'", "'b'"); } - @Test - public void itHandlesToday() { - context.put("foo", "bar"); - assertThat(eagerResolveExpression("foo ~ today()").toString()) - .isEqualTo("'bar' ~ today()"); - } - @Test public void itHandlesRandom() { assertThat(eagerResolveExpression("range(1)|random").toString())