aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/sca/ScaProperties.java11
-rw-r--r--sonar-scanner-engine/src/test/java/org/sonar/scanner/sca/ScaPropertiesTest.java38
2 files changed, 42 insertions, 7 deletions
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/sca/ScaProperties.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/sca/ScaProperties.java
index 59b9293aa9d..7aed17f8b09 100644
--- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/sca/ScaProperties.java
+++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/sca/ScaProperties.java
@@ -20,6 +20,7 @@
package org.sonar.scanner.sca;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
+import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -47,8 +48,14 @@ public class ScaProperties {
* @return a map of Tidelift CLI compatible environment variable names to their configuration values
*/
public static Map<String, String> buildFromScannerProperties(DefaultConfiguration configuration) {
- return configuration
- .getProperties()
+ HashMap<String, String> props = new HashMap<>(configuration.getProperties());
+
+ // recursive mode defaults to true
+ if (!props.containsKey("sonar.sca.recursiveManifestSearch")) {
+ props.put("sonar.sca.recursiveManifestSearch", "true");
+ }
+
+ return props
.entrySet()
.stream()
.filter(entry -> entry.getKey().startsWith(SONAR_SCA_PREFIX))
diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sca/ScaPropertiesTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sca/ScaPropertiesTest.java
index 3ac8418e14a..34c25ac31e7 100644
--- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sca/ScaPropertiesTest.java
+++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sca/ScaPropertiesTest.java
@@ -34,16 +34,17 @@ class ScaPropertiesTest {
private final DefaultConfiguration configuration = mock(DefaultConfiguration.class);
@Test
- void buildFromScannerProperties_shouldReturnEmptyMap_whenNoPropertiesExist() {
+ void buildFromScannerProperties_withNoProperties_returnsDefaultMap() {
when(configuration.get(anyString())).thenReturn(Optional.empty());
var result = ScaProperties.buildFromScannerProperties(configuration);
- assertThat(result).isEmpty();
+ assertThat(result).containsExactly(
+ Map.entry("TIDELIFT_RECURSIVE_MANIFEST_SEARCH", "true"));
}
@Test
- void buildFromScannerProperties_shouldIgnoresUnmappedProperties() {
+ void buildFromScannerProperties_withUnmappedProperties_ignoresUnmappedProperties() {
var inputProperties = new HashMap<String, String>();
inputProperties.put("sonar.sca.pythonBinary", "/usr/bin/python3");
inputProperties.put("sonar.sca.unknownProperty", "value");
@@ -54,12 +55,13 @@ class ScaPropertiesTest {
var result = ScaProperties.buildFromScannerProperties(configuration);
assertThat(result).containsExactly(
+ Map.entry("TIDELIFT_RECURSIVE_MANIFEST_SEARCH", "true"),
Map.entry("TIDELIFT_PYTHON_BINARY", "/usr/bin/python3"),
Map.entry("TIDELIFT_UNKNOWN_PROPERTY", "value"));
}
@Test
- void buildFromScannerProperties_shouldMapAllKnownProperties() {
+ void buildFromScannerProperties_withLotsOfProperties_mapsAllProperties() {
var inputProperties = new HashMap<String, String>();
inputProperties.put("sonar.sca.goNoResolve", "true");
inputProperties.put("sonar.sca.gradleConfigurationPattern", "pattern");
@@ -100,7 +102,7 @@ class ScaPropertiesTest {
}
@Test
- void buildFromScannerProperties_shouldIgnoreExcludedManifests() {
+ void buildFromScannerProperties_withExcludedManifestProp_ignoresExcludedManifests() {
var inputProperties = new HashMap<String, String>();
inputProperties.put("sonar.sca.unknownProperty", "value");
inputProperties.put("sonar.sca.excludedManifests", "ignore-me");
@@ -110,7 +112,33 @@ class ScaPropertiesTest {
var result = ScaProperties.buildFromScannerProperties(configuration);
assertThat(result).containsExactly(
+ Map.entry("TIDELIFT_RECURSIVE_MANIFEST_SEARCH", "true"),
Map.entry("TIDELIFT_UNKNOWN_PROPERTY", "value"));
}
+ @Test
+ void buildFromScannerProperties_withoutRecursiveModeProp_defaultsRecursiveModeTrue() {
+ var inputProperties = new HashMap<String, String>();
+ when(configuration.getProperties()).thenReturn(inputProperties);
+ when(configuration.get(anyString())).thenAnswer(i -> Optional.ofNullable(inputProperties.get(i.getArgument(0, String.class))));
+
+ var result = ScaProperties.buildFromScannerProperties(configuration);
+
+ assertThat(result).containsExactly(
+ Map.entry("TIDELIFT_RECURSIVE_MANIFEST_SEARCH", "true"));
+ }
+
+ @Test
+ void buildFromScannerProperties_withRecursiveModeProp_usesPropAsOverride() {
+ var inputProperties = new HashMap<String, String>();
+ inputProperties.put("sonar.sca.recursiveManifestSearch", "false");
+ when(configuration.getProperties()).thenReturn(inputProperties);
+ when(configuration.get(anyString())).thenAnswer(i -> Optional.ofNullable(inputProperties.get(i.getArgument(0, String.class))));
+
+ var result = ScaProperties.buildFromScannerProperties(configuration);
+
+ assertThat(result).containsExactly(
+ Map.entry("TIDELIFT_RECURSIVE_MANIFEST_SEARCH", "false"));
+ }
+
}