From cd3687683c9a19abfed1bb7c1a32a623f34d6ccd Mon Sep 17 00:00:00 2001 From: Marcus Fihlon Date: Thu, 30 Apr 2026 09:59:54 +0200 Subject: [PATCH 1/3] test: disable `ActivityImageService` manual test class in default build The test method was already disabled, but the Spring test context for the class was still being created during the regular test run. Moving `@Disabled` to the class prevents the Testcontainers-based application context from loading for this manual-only test and stops `verify` from failing. Signed-off-by: Marcus Fihlon --- .../javahippie/fitpub/service/ActivityImageServiceTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/net/javahippie/fitpub/service/ActivityImageServiceTest.java b/src/test/java/net/javahippie/fitpub/service/ActivityImageServiceTest.java index 687eb45..0343ab4 100644 --- a/src/test/java/net/javahippie/fitpub/service/ActivityImageServiceTest.java +++ b/src/test/java/net/javahippie/fitpub/service/ActivityImageServiceTest.java @@ -27,12 +27,16 @@ import static org.junit.jupiter.api.Assertions.*; /** * Manual test for ActivityImageService. * These tests are disabled by default and should only be run manually. + * + * To run this test manually: + * mvn test -Dtest=ActivityImageServiceTest */ @SpringBootTest(properties = { "fitpub.image.osm-tiles.enabled=true" }) @ActiveProfiles("test") @Import(TestcontainersConfiguration.class) +@Disabled("Manual test - run explicitly when needed") class ActivityImageServiceTest { @Autowired @@ -55,7 +59,6 @@ class ActivityImageServiceTest { * mvn test -Dtest=ActivityImageServiceTest#testGenerateActivityImage_Manual */ @Test - @Disabled("Manual test - run explicitly when needed") @DisplayName("Generate activity image from test FIT file") void testGenerateActivityImage_Manual() throws Exception { // Load test FIT file -- 2.49.1 From 37aa63ff281e7d428f101f0571b9e7942cf86b37 Mon Sep 17 00:00:00 2001 From: Marcus Fihlon Date: Thu, 30 Apr 2026 10:14:18 +0200 Subject: [PATCH 2/3] fix: handle missing timezone in activity title generation Default title generation could fail when parsed activity data had no timezone set. This change adds a null/blank fallback in `ActivityFormatter` so titles can still be generated without throwing a `NullPointerException`. Signed-off-by: Marcus Fihlon --- .../java/net/javahippie/fitpub/util/ActivityFormatter.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/javahippie/fitpub/util/ActivityFormatter.java b/src/main/java/net/javahippie/fitpub/util/ActivityFormatter.java index 26e4f32..0b32b3d 100644 --- a/src/main/java/net/javahippie/fitpub/util/ActivityFormatter.java +++ b/src/main/java/net/javahippie/fitpub/util/ActivityFormatter.java @@ -98,6 +98,10 @@ public class ActivityFormatter { * */ private static LocalDateTime getUtcDateTimeInZone(LocalDateTime utcDateTime, String timezone) { + if (timezone == null || timezone.isBlank()) { + return utcDateTime; + } + try { return utcDateTime.atZone(ZoneOffset.UTC) .withZoneSameInstant(ZoneId.of(timezone)) -- 2.49.1 From 649d1e8c5f843aed61fb322a0304cc85a01572c4 Mon Sep 17 00:00:00 2001 From: Marcus Fihlon Date: Thu, 30 Apr 2026 11:37:38 +0200 Subject: [PATCH 3/3] fix(testcontainers): align versions and stabilize PostGIS setup Unify Testcontainers dependencies to a consistent version and remove custom container tweaks that caused instability with Podman. - align all Testcontainers dependencies to 2.0.5 - remove `HostPortWaitStrategy` (PostgreSQLContainer already defines an appropriate wait strategy) - remove `withReuse(true)` (may retain state across runs and break reproducibility) Signed-off-by: Marcus Fihlon --- pom.xml | 9 ++++----- .../fitpub/config/TestcontainersConfiguration.java | 5 +---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 008ac47..8ecf1b2 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ UTF-8 17 0.12.3 - 2.0.3 + 2.0.5 @@ -170,15 +170,14 @@ org.testcontainers testcontainers-junit-jupiter - 2.0.2 + ${testcontainers.version} test - org.testcontainers testcontainers-postgresql - 2.0.1 + ${testcontainers.version} test @@ -193,4 +192,4 @@ - \ No newline at end of file + diff --git a/src/test/java/net/javahippie/fitpub/config/TestcontainersConfiguration.java b/src/test/java/net/javahippie/fitpub/config/TestcontainersConfiguration.java index 3053571..4819da6 100644 --- a/src/test/java/net/javahippie/fitpub/config/TestcontainersConfiguration.java +++ b/src/test/java/net/javahippie/fitpub/config/TestcontainersConfiguration.java @@ -4,7 +4,6 @@ import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.context.annotation.Bean; import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy; import org.testcontainers.utility.DockerImageName; /** @@ -23,8 +22,6 @@ public class TestcontainersConfiguration { ) .withDatabaseName("testdb") .withUsername("test") - .withPassword("test") - .waitingFor(new HostPortWaitStrategy()) - .withReuse(true); + .withPassword("test"); } } -- 2.49.1