From 4c259cc815d660a4e616c90b78a57e56d3b9fd3d Mon Sep 17 00:00:00 2001 From: David Kunzmann Date: Thu, 15 Aug 2024 13:37:53 +0200 Subject: [PATCH] Fix Quality Gate issues (#1933) --- .../java/org/sonar/plugins/python/IPynb.java | 21 ++++++++++++++ .../org/sonar/plugins/python/IPynbTest.java | 29 +++++++++++++++++++ .../indexer/SonarLintPythonIndexerTest.java | 1 - 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/sonar-python-plugin/src/main/java/org/sonar/plugins/python/IPynb.java b/sonar-python-plugin/src/main/java/org/sonar/plugins/python/IPynb.java index 4648035e72..2cee647847 100644 --- a/sonar-python-plugin/src/main/java/org/sonar/plugins/python/IPynb.java +++ b/sonar-python-plugin/src/main/java/org/sonar/plugins/python/IPynb.java @@ -19,6 +19,7 @@ */ package org.sonar.plugins.python; +import java.util.Objects; import org.sonar.api.config.Configuration; import org.sonar.api.resources.AbstractLanguage; @@ -41,4 +42,24 @@ public String[] getFileSuffixes() { String[] suffixes = filterEmptyStrings(configuration.getStringArray(PythonPlugin.IPYNB_FILE_SUFFIXES_KEY)); return suffixes.length == 0 ? DEFAULT_FILE_SUFFIXES : suffixes; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()){ + return false; + } + if (!super.equals(o)) { + return false; + } + IPynb iPynb = (IPynb) o; + return Objects.equals(configuration, iPynb.configuration); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), configuration); + } } diff --git a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/IPynbTest.java b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/IPynbTest.java index 172f30c987..9a78b5ab2b 100644 --- a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/IPynbTest.java +++ b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/IPynbTest.java @@ -24,6 +24,8 @@ import org.sonar.api.config.internal.MapSettings; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.sonar.plugins.python.PythonPlugin.IPYNB_FILE_SUFFIXES_KEY; class IPynbTest { @@ -53,4 +55,31 @@ void empty_file_suffixes() { IPynb language = new IPynb(settings.asConfig()); assertThat(language.getFileSuffixes()).hasSize(1).contains("ipynb"); } + + @Test + void equals() { + ConfigurationBridge emptyConfig = new ConfigurationBridge(new MapSettings()); + IPynb one = new IPynb(emptyConfig); + IPynb other = new IPynb(emptyConfig); + IPynb nullConfig = null; + + MapSettings settings = new MapSettings(); + settings.setProperty(IPYNB_FILE_SUFFIXES_KEY, "ipynb,my_custom_extension"); + IPynb customConfig = new IPynb(settings.asConfig()); + + assertEquals(one, one); + assertEquals(one, other); + assertNotEquals(one, nullConfig); + assertNotEquals(one, customConfig); + assertNotEquals(one, new Python(new ConfigurationBridge(new MapSettings()))); + } + + @Test + void hashcode() { + ConfigurationBridge emptyConfig = new ConfigurationBridge(new MapSettings()); + IPynb one = new IPynb(emptyConfig); + IPynb other = new IPynb(emptyConfig); + assertEquals(one.hashCode(), other.hashCode()); + assertNotEquals(one.hashCode(), "test".hashCode()); + } } diff --git a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/indexer/SonarLintPythonIndexerTest.java b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/indexer/SonarLintPythonIndexerTest.java index bfe806e17a..bab5cb6f9b 100644 --- a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/indexer/SonarLintPythonIndexerTest.java +++ b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/indexer/SonarLintPythonIndexerTest.java @@ -34,7 +34,6 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.slf4j.event.Level; import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.sensor.internal.SensorContextTester; import org.sonar.api.testfixtures.log.LogTesterJUnit5;