aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest
diff options
context:
space:
mode:
authorMatteo Mara <matteo.mara@sonarsource.com>2023-12-15 14:31:39 +0100
committersonartech <sonartech@sonarsource.com>2023-12-21 20:02:33 +0000
commit4d04d1b26abaf409d0c68b97f0cac05e251ff16d (patch)
treef833caff22fb99819fe5900decdfb8b0666b9799 /sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest
parent32e97e99a805f50e099b16ac55a65703d284979b (diff)
downloadsonarqube-4d04d1b26abaf409d0c68b97f0cac05e251ff16d.tar.gz
sonarqube-4d04d1b26abaf409d0c68b97f0cac05e251ff16d.zip
SONAR-21195 Refactor file indexing into two distinct steps
Diffstat (limited to 'sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest')
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakePluginInstaller.java21
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/LocalPlugin.java33
2 files changed, 50 insertions, 4 deletions
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakePluginInstaller.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakePluginInstaller.java
index fb48e11b424..5aaabab3980 100644
--- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakePluginInstaller.java
+++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/FakePluginInstaller.java
@@ -36,15 +36,21 @@ import org.sonar.scanner.bootstrap.ScannerPlugin;
public class FakePluginInstaller implements PluginInstaller {
private final Map<String, ScannerPlugin> pluginsByKeys = new HashMap<>();
- private final List<Object[]> mediumTestPlugins = new ArrayList<>();
+ private final List<LocalPlugin> mediumTestPlugins = new ArrayList<>();
+ private final List<LocalPlugin> optionalMediumTestPlugins = new ArrayList<>();
public FakePluginInstaller add(String pluginKey, File jarFile, long lastUpdatedAt) {
pluginsByKeys.put(pluginKey, new ScannerPlugin(pluginKey, lastUpdatedAt, PluginType.BUNDLED, PluginInfo.create(jarFile)));
return this;
}
- public FakePluginInstaller add(String pluginKey, Plugin instance, long lastUpdatedAt) {
- mediumTestPlugins.add(new Object[] {pluginKey, instance, lastUpdatedAt});
+ public FakePluginInstaller add(String pluginKey, Plugin instance) {
+ mediumTestPlugins.add(new LocalPlugin(pluginKey, instance, Set.of()));
+ return this;
+ }
+
+ public FakePluginInstaller addOptional(String pluginKey, Set<String> requiredForLanguages, Plugin instance) {
+ optionalMediumTestPlugins.add(new LocalPlugin(pluginKey, instance, requiredForLanguages));
return this;
}
@@ -64,7 +70,14 @@ public class FakePluginInstaller implements PluginInstaller {
}
@Override
- public List<Object[]> installLocals() {
+ public List<LocalPlugin> installLocals() {
return mediumTestPlugins;
}
+
+ @Override
+ public List<LocalPlugin> installOptionalLocals(Set<String> languageKeys) {
+ return optionalMediumTestPlugins.stream()
+ .filter(plugin -> languageKeys.stream().anyMatch(lang -> plugin.requiredForLanguages().contains(lang)))
+ .toList();
+ }
}
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/LocalPlugin.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/LocalPlugin.java
new file mode 100644
index 00000000000..20bd4895973
--- /dev/null
+++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/mediumtest/LocalPlugin.java
@@ -0,0 +1,33 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2023 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.scanner.mediumtest;
+
+import java.util.Set;
+import org.sonar.api.Plugin;
+import org.sonar.core.platform.PluginInfo;
+import org.sonar.core.plugin.PluginType;
+import org.sonar.scanner.bootstrap.ScannerPlugin;
+
+public record LocalPlugin(String pluginKey, Plugin pluginInstance, Set<String> requiredForLanguages) {
+
+ public ScannerPlugin toScannerPlugin() {
+ return new ScannerPlugin(pluginKey, 1L, PluginType.BUNDLED, new PluginInfo(pluginKey));
+ }
+}