diff --git a/src/main/java/com/jfrog/ide/idea/configuration/ServerConfigImpl.java b/src/main/java/com/jfrog/ide/idea/configuration/ServerConfigImpl.java index 80ca2a43..9f977917 100644 --- a/src/main/java/com/jfrog/ide/idea/configuration/ServerConfigImpl.java +++ b/src/main/java/com/jfrog/ide/idea/configuration/ServerConfigImpl.java @@ -34,6 +34,7 @@ import com.jfrog.ide.idea.ui.configuration.ConnectionTimeoutSpinner; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.Strings; +import org.jfrog.build.api.util.NullLog; import org.jfrog.build.client.ProxyConfiguration; import javax.annotation.CheckForNull; @@ -498,7 +499,7 @@ public void readMissingConfFromEnv() { * @return true if connection details loaded from JFrog CLI default server. */ public boolean readConnectionDetailsFromJfrogCli() throws IOException { - JfrogCliDriver driver = new JfrogCliDriver(new HashMap<>(EnvironmentUtil.getEnvironmentMap()), null); + JfrogCliDriver driver = new JfrogCliDriver(new HashMap<>(EnvironmentUtil.getEnvironmentMap()), new NullLog()); if (!driver.isJfrogCliInstalled()) { return false; } diff --git a/src/test/java/com/jfrog/ide/idea/configuration/ConfigurationTest.java b/src/test/java/com/jfrog/ide/idea/configuration/ConfigurationTest.java index 96de4cf6..69b9f296 100644 --- a/src/test/java/com/jfrog/ide/idea/configuration/ConfigurationTest.java +++ b/src/test/java/com/jfrog/ide/idea/configuration/ConfigurationTest.java @@ -3,9 +3,16 @@ import com.intellij.credentialStore.Credentials; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; import com.intellij.util.EnvironmentUtil; +import com.jfrog.ide.common.configuration.JfrogCliDriver; +import org.jfrog.build.api.util.Log; +import org.mockito.MockedConstruction; import org.mockito.MockedStatic; import org.mockito.Mockito; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + import static com.jfrog.ide.idea.configuration.ServerConfigImpl.*; /** @@ -166,6 +173,23 @@ public void testReadMissingConfFromEnv() { } } + /** XRAY-145646: CLI not installed must return false without NPE when Log is null-safe. */ + public void testReadConnectionDetailsFromJfrogCliWhenCliNotInstalled() throws IOException { + try (MockedStatic mockController = Mockito.mockStatic(EnvironmentUtil.class); + MockedConstruction driverConstruction = Mockito.mockConstruction( + JfrogCliDriver.class, + (mock, context) -> { + assertNotNull(context.arguments().get(1)); + assertTrue(context.arguments().get(1) instanceof Log); + Mockito.when(mock.isJfrogCliInstalled()).thenReturn(false); + })) { + mockController.when(EnvironmentUtil::getEnvironmentMap).thenReturn(new HashMap<>()); + + assertFalse(new ServerConfigImpl().readConnectionDetailsFromJfrogCli()); + assertEquals(1, driverConstruction.constructed().size()); + } + } + /** * Create server config for the tests. * diff --git a/src/test/java/com/jfrog/ide/idea/configuration/ConnectionDetailsFromCliTest.java b/src/test/java/com/jfrog/ide/idea/configuration/ConnectionDetailsFromCliTest.java index 429ecd8a..39700d75 100644 --- a/src/test/java/com/jfrog/ide/idea/configuration/ConnectionDetailsFromCliTest.java +++ b/src/test/java/com/jfrog/ide/idea/configuration/ConnectionDetailsFromCliTest.java @@ -2,6 +2,7 @@ import com.intellij.util.EnvironmentUtil; import com.jfrog.ide.common.configuration.JfrogCliDriver; +import org.jfrog.build.api.util.NullLog; import org.apache.commons.io.FileUtils; import org.gradle.internal.impldep.org.junit.Assert; import org.junit.Test; @@ -71,7 +72,7 @@ public void testReadConnectionDetailsFromJfrogCli() throws IOException, Interrup // Config JFrog CLI if (cliParameters != null) { - JfrogCliDriver jfrogCliDriver = new JfrogCliDriver(envVars, null); + JfrogCliDriver jfrogCliDriver = new JfrogCliDriver(envVars, new NullLog()); jfrogCliDriver.runCommand(null, envVars, cliParameters, new ArrayList<>(), null, null); }