From a0d3b8605f2d65f2adefbcd3c2c2089c85937200 Mon Sep 17 00:00:00 2001 From: Libo Song Date: Fri, 12 Jan 2024 14:06:20 -0500 Subject: [PATCH 1/2] Not necessary to defer today(). --- src/main/java/com/hubspot/jinjava/lib/fn/Functions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..3b9dd688b 100644 --- a/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java +++ b/src/main/java/com/hubspot/jinjava/lib/fn/Functions.java @@ -170,7 +170,7 @@ public static ZonedDateTime today(String... var) { } } - ZonedDateTime dateTime = getDateTimeArg(null, zoneOffset); + ZonedDateTime dateTime = getDateTimeArg(System.currentTimeMillis(), zoneOffset); return dateTime.toLocalDate().atStartOfDay(zoneOffset); } From 2d4f109cfe506d49a732a81f9748879eeb97502b Mon Sep 17 00:00:00 2001 From: Libo Song Date: Fri, 12 Jan 2024 14:14:44 -0500 Subject: [PATCH 2/2] Fix tests. --- .../java/com/hubspot/jinjava/lib/fn/Functions.java | 9 +++++++-- .../com/hubspot/jinjava/lib/fn/TodayFunctionTest.java | 10 +++------- .../jinjava/util/EagerExpressionResolverTest.java | 7 ------- 3 files changed, 10 insertions(+), 16 deletions(-) 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 3b9dd688b..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(System.currentTimeMillis(), 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())