From 3b929d5d8e9f6d4cef2a070db9e0cb4f1339c0d8 Mon Sep 17 00:00:00 2001 From: Hans Van Akelyen Date: Thu, 21 May 2026 10:57:20 +0200 Subject: [PATCH] fix broken tests --- .../vfs/azure/AzureFileNameParserTest.java | 14 ++++++++++++-- .../vfs/azure/AzureFileObjectSdkPathTest.java | 19 ++++++++++++------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/plugins/tech/azure/src/test/java/org/apache/hop/vfs/azure/AzureFileNameParserTest.java b/plugins/tech/azure/src/test/java/org/apache/hop/vfs/azure/AzureFileNameParserTest.java index 3b406d551c5..91e0e00a0bc 100644 --- a/plugins/tech/azure/src/test/java/org/apache/hop/vfs/azure/AzureFileNameParserTest.java +++ b/plugins/tech/azure/src/test/java/org/apache/hop/vfs/azure/AzureFileNameParserTest.java @@ -23,6 +23,7 @@ import org.apache.commons.vfs2.provider.VfsComponentContext; import org.apache.hop.vfs.azure.config.AzureConfig; import org.apache.hop.vfs.azure.config.AzureConfigSingleton; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -34,6 +35,8 @@ class AzureFileNameParserTest { + private static MockedStatic azureConfigSingleton; + private AzureFileNameParser parser; @BeforeAll @@ -41,11 +44,18 @@ static void init() { AzureConfig azureConfig = new AzureConfig(); azureConfig.setAccount("hopsa"); azureConfig.setKey("aGVsbG93b3JsZA=="); - MockedStatic azureConfigSingleton = - Mockito.mockStatic(AzureConfigSingleton.class); + azureConfigSingleton = Mockito.mockStatic(AzureConfigSingleton.class); azureConfigSingleton.when(AzureConfigSingleton::getConfig).thenReturn(azureConfig); } + @AfterAll + static void tearDown() { + if (azureConfigSingleton != null) { + azureConfigSingleton.close(); + azureConfigSingleton = null; + } + } + @BeforeEach void setup() { parser = new AzureFileNameParser(); diff --git a/plugins/tech/azure/src/test/java/org/apache/hop/vfs/azure/AzureFileObjectSdkPathTest.java b/plugins/tech/azure/src/test/java/org/apache/hop/vfs/azure/AzureFileObjectSdkPathTest.java index a24bee04711..1e5ce893f43 100644 --- a/plugins/tech/azure/src/test/java/org/apache/hop/vfs/azure/AzureFileObjectSdkPathTest.java +++ b/plugins/tech/azure/src/test/java/org/apache/hop/vfs/azure/AzureFileObjectSdkPathTest.java @@ -23,6 +23,7 @@ import org.apache.commons.vfs2.provider.VfsComponentContext; import org.apache.hop.vfs.azure.config.AzureConfig; import org.apache.hop.vfs.azure.config.AzureConfigSingleton; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; @@ -43,19 +44,23 @@ */ class AzureFileObjectSdkPathTest { + private static MockedStatic mocked; + @BeforeAll static void init() { AzureConfig azureConfig = new AzureConfig(); // Obvious dummy values: account is a placeholder, key is base64 of "dummy-key". azureConfig.setAccount("dummy-account"); azureConfig.setKey("ZHVtbXkta2V5"); - try { - // Intentionally not closed - mirrors AzureFileNameParserTest, which leaks the same static - // mock for the JVM lifetime. We just need a config available when the parser asks. - MockedStatic mocked = Mockito.mockStatic(AzureConfigSingleton.class); - mocked.when(AzureConfigSingleton::getConfig).thenReturn(azureConfig); - } catch (org.mockito.exceptions.base.MockitoException alreadyRegistered) { - // Another test in this JVM already mocked it; reuse that registration. + mocked = Mockito.mockStatic(AzureConfigSingleton.class); + mocked.when(AzureConfigSingleton::getConfig).thenReturn(azureConfig); + } + + @AfterAll + static void tearDown() { + if (mocked != null) { + mocked.close(); + mocked = null; } }