diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2016-08-31 16:05:43 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2016-09-06 10:13:55 +0200 |
commit | f79030e299ce766ec510ce2019c7b5e77105a1cd (patch) | |
tree | 380ff3dad2fb6378b5a2338eef4d28ea9fcbefb6 /sonar-scanner-engine/src | |
parent | a8b6d946372e3dd3f1a0bacace78b9d02867897f (diff) | |
download | sonarqube-f79030e299ce766ec510ce2019c7b5e77105a1cd.tar.gz sonarqube-f79030e299ce766ec510ce2019c7b5e77105a1cd.zip |
SONAR-7678 server-side stateless settings
* Settings class becomes abstract as multiple implementations
are used. Can't become an interface for binary
backward-compatibility of API
* tests should use MapSettings, an in-memory implementation
of Settings
* web server uses a thread-specific cache of settings when
processing HTTP requests
* web server does not have a cache of settings during startup,
except for the system settings loaded from sonar.properties
* Compute Engine uses a thread-specific cache of settings when
processing a task. Cache is clear at end of task.
* some useless methods of PersistentSettings are removed
Diffstat (limited to 'sonar-scanner-engine/src')
34 files changed, 189 insertions, 156 deletions
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/GlobalSettings.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/GlobalSettings.java index b327d79017a..5305f666d39 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/GlobalSettings.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/GlobalSettings.java @@ -20,10 +20,13 @@ package org.sonar.scanner.bootstrap; import com.google.common.collect.ImmutableMap; +import java.util.HashMap; import java.util.Map; +import java.util.Optional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.CoreProperties; +import org.sonar.api.config.Encryption; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.Settings; import org.sonar.api.utils.MessageException; @@ -46,11 +49,12 @@ public class GlobalSettings extends Settings { private final GlobalProperties bootstrapProps; private final GlobalRepositories globalReferentials; private final GlobalMode mode; + private final Map<String, String> properties = new HashMap<>(); public GlobalSettings(GlobalProperties bootstrapProps, PropertyDefinitions propertyDefinitions, GlobalRepositories globalReferentials, GlobalMode mode) { - super(propertyDefinitions); + super(propertyDefinitions, new Encryption(null)); this.mode = mode; getEncryption().setPathToSecretKey(bootstrapProps.property(CoreProperties.ENCRYPTION_SECRET_KEY_PATH)); this.bootstrapProps = bootstrapProps; @@ -69,10 +73,26 @@ public class GlobalSettings extends Settings { } @Override - protected void doOnGetProperties(String key) { + protected Optional<String> get(String key) { if (mode.isIssues() && key.endsWith(".secured") && !key.contains(".license")) { throw MessageException.of("Access to the secured property '" + key + "' is not possible in issues mode. The SonarQube plugin which requires this property must be deactivated in issues mode."); } + return Optional.ofNullable(properties.get(key)); + } + + @Override + public Map<String, String> getProperties() { + return properties; + } + + @Override + protected void set(String key, String value) { + properties.put(key, value); + } + + @Override + protected void remove(String key) { + properties.remove(key); } } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleSettings.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleSettings.java index 59bbd4472bc..c5f4dbaa3d7 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleSettings.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleSettings.java @@ -20,8 +20,10 @@ package org.sonar.scanner.scan; import com.google.common.collect.Lists; +import java.util.HashMap; import java.util.List; -import org.sonar.api.CoreProperties; +import java.util.Map; +import java.util.Optional; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.config.Settings; import org.sonar.api.utils.MessageException; @@ -37,13 +39,13 @@ public class ModuleSettings extends Settings { private final ProjectRepositories projectRepos; private final DefaultAnalysisMode analysisMode; + private final Map<String, String> properties = new HashMap<>(); public ModuleSettings(GlobalSettings batchSettings, ProjectDefinition moduleDefinition, ProjectRepositories projectSettingsRepo, DefaultAnalysisMode analysisMode, AnalysisContextReportPublisher contextReportPublisher) { - super(batchSettings.getDefinitions()); + super(batchSettings.getDefinitions(), batchSettings.getEncryption()); this.projectRepos = projectSettingsRepo; this.analysisMode = analysisMode; - getEncryption().setPathToSecretKey(batchSettings.getString(CoreProperties.ENCRYPTION_SECRET_KEY_PATH)); init(moduleDefinition, batchSettings); contextReportPublisher.dumpModuleSettings(moduleDefinition); @@ -87,10 +89,26 @@ public class ModuleSettings extends Settings { } @Override - protected void doOnGetProperties(String key) { + protected Optional<String> get(String key) { if (analysisMode.isIssues() && key.endsWith(".secured") && !key.contains(".license")) { throw MessageException.of("Access to the secured property '" + key + "' is not possible in issues mode. The SonarQube plugin which requires this property must be deactivated in issues mode."); } + return Optional.ofNullable(properties.get(key)); + } + + @Override + protected void set(String key, String value) { + properties.put(key, value); + } + + @Override + protected void remove(String key) { + properties.remove(key); + } + + @Override + public Map<String, String> getProperties() { + return properties; } } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectSettings.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectSettings.java index c4784114b8b..9f96c6e9f1e 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectSettings.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectSettings.java @@ -19,9 +19,10 @@ */ package org.sonar.scanner.scan; -import org.sonar.api.CoreProperties; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; import org.sonar.api.batch.bootstrap.ProjectReactor; -import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.Settings; import org.sonar.api.utils.MessageException; import org.sonar.scanner.analysis.DefaultAnalysisMode; @@ -33,12 +34,11 @@ public class ProjectSettings extends Settings { private final GlobalSettings globalSettings; private final ProjectRepositories projectRepositories; private final DefaultAnalysisMode mode; + private final Map<String, String> properties = new HashMap<>(); - public ProjectSettings(ProjectReactor reactor, GlobalSettings globalSettings, PropertyDefinitions propertyDefinitions, - ProjectRepositories projectRepositories, DefaultAnalysisMode mode) { - super(propertyDefinitions); + public ProjectSettings(ProjectReactor reactor, GlobalSettings globalSettings, ProjectRepositories projectRepositories, DefaultAnalysisMode mode) { + super(globalSettings.getDefinitions(), globalSettings.getEncryption()); this.mode = mode; - getEncryption().setPathToSecretKey(globalSettings.getString(CoreProperties.ENCRYPTION_SECRET_KEY_PATH)); this.globalSettings = globalSettings; this.projectRepositories = projectRepositories; init(reactor); @@ -53,10 +53,26 @@ public class ProjectSettings extends Settings { } @Override - protected void doOnGetProperties(String key) { + protected Optional<String> get(String key) { if (mode.isIssues() && key.endsWith(".secured") && !key.contains(".license")) { throw MessageException.of("Access to the secured property '" + key + "' is not possible in issues mode. The SonarQube plugin which requires this property must be deactivated in issues mode."); } + return Optional.ofNullable(properties.get(key)); + } + + @Override + protected void set(String key, String value) { + properties.put(key, value); + } + + @Override + protected void remove(String key) { + properties.remove(key); + } + + @Override + public Map<String, String> getProperties() { + return properties; } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ProjectConfiguratorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ProjectConfiguratorTest.java index 7e291ee34d3..95b1673bf82 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ProjectConfiguratorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ProjectConfiguratorTest.java @@ -25,9 +25,9 @@ import org.junit.Before; import org.junit.Test; import org.sonar.api.CoreProperties; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.resources.Project; import org.sonar.api.utils.System2; -import org.sonar.scanner.ProjectConfigurator; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -48,13 +48,13 @@ public class ProjectConfiguratorTest { when(system2.now()).thenReturn(now); Project project = new Project("key"); - new ProjectConfigurator(new Settings(), system2).configure(project); + new ProjectConfigurator(new MapSettings(), system2).configure(project); assertThat(now - project.getAnalysisDate().getTime()).isLessThan(1000); } @Test public void analysis_date_could_be_explicitly_set() { - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_DATE_PROPERTY, "2005-01-30"); Project project = new Project("key"); new ProjectConfigurator(settings, system2).configure(project); @@ -64,7 +64,7 @@ public class ProjectConfiguratorTest { @Test public void analysis_timestamp_could_be_explicitly_set() { - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_DATE_PROPERTY, "2005-01-30T08:45:10+0000"); Project project = new Project("key"); new ProjectConfigurator(settings, system2).configure(project); @@ -76,7 +76,7 @@ public class ProjectConfiguratorTest { @Test(expected = RuntimeException.class) public void fail_if_analyis_date_is_not_valid() { - Settings configuration = new Settings(); + Settings configuration = new MapSettings(); configuration.setProperty(CoreProperties.PROJECT_DATE_PROPERTY, "2005/30/01"); Project project = new Project("key"); new ProjectConfigurator(configuration, system2).configure(project); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/BatchPluginPredicateTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/BatchPluginPredicateTest.java index 99f9d9eb981..01f32880499 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/BatchPluginPredicateTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/BatchPluginPredicateTest.java @@ -22,8 +22,7 @@ package org.sonar.scanner.bootstrap; import org.junit.Test; import org.sonar.api.CoreProperties; import org.sonar.api.config.Settings; -import org.sonar.scanner.bootstrap.BatchPluginPredicate; -import org.sonar.scanner.bootstrap.GlobalMode; +import org.sonar.api.config.MapSettings; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -31,7 +30,7 @@ import static org.mockito.Mockito.when; public class BatchPluginPredicateTest { - Settings settings = new Settings(); + Settings settings = new MapSettings(); GlobalMode mode = mock(GlobalMode.class); @Test diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/FileCacheProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/FileCacheProviderTest.java index 251b8c84b28..70602d7634f 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/FileCacheProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/FileCacheProviderTest.java @@ -21,13 +21,12 @@ package org.sonar.scanner.bootstrap; import java.io.File; import java.io.IOException; - import org.junit.Rule; -import org.junit.rules.TemporaryFolder; import org.junit.Test; +import org.junit.rules.TemporaryFolder; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.home.cache.FileCache; -import org.sonar.scanner.bootstrap.FileCacheProvider; import static org.assertj.core.api.Assertions.assertThat; @@ -38,7 +37,7 @@ public class FileCacheProviderTest { @Test public void provide() { FileCacheProvider provider = new FileCacheProvider(); - FileCache cache = provider.provide(new Settings()); + FileCache cache = provider.provide(new MapSettings()); assertThat(cache).isNotNull(); assertThat(cache.getDir()).isNotNull().exists(); @@ -47,7 +46,7 @@ public class FileCacheProviderTest { @Test public void keep_singleton_instance() { FileCacheProvider provider = new FileCacheProvider(); - Settings settings = new Settings(); + Settings settings = new MapSettings(); FileCache cache1 = provider.provide(settings); FileCache cache2 = provider.provide(settings); @@ -57,7 +56,7 @@ public class FileCacheProviderTest { @Test public void honor_sonarUserHome() throws IOException { FileCacheProvider provider = new FileCacheProvider(); - Settings settings = new Settings(); + Settings settings = new MapSettings(); File f = temp.newFolder(); settings.appendProperty("sonar.userHome", f.getAbsolutePath()); FileCache cache = provider.provide(settings); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java index 4ae6eaf0e82..24d1023ade2 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java @@ -32,21 +32,21 @@ import org.junit.rules.TemporaryFolder; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.resources.Project; import org.sonar.api.utils.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.core.util.CloseableIterator; import org.sonar.duplications.index.CloneGroup; import org.sonar.duplications.index.ClonePart; -import org.sonar.scanner.protocol.output.ScannerReport.Duplicate; -import org.sonar.scanner.protocol.output.ScannerReport.Duplication; -import org.sonar.scanner.report.ReportPublisher; -import org.sonar.scanner.cpd.CpdExecutor; import org.sonar.scanner.cpd.index.SonarCpdBlockIndex; import org.sonar.scanner.index.BatchComponent; import org.sonar.scanner.index.BatchComponentCache; +import org.sonar.scanner.protocol.output.ScannerReport.Duplicate; +import org.sonar.scanner.protocol.output.ScannerReport.Duplication; import org.sonar.scanner.protocol.output.ScannerReportReader; import org.sonar.scanner.protocol.output.ScannerReportWriter; +import org.sonar.scanner.report.ReportPublisher; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -76,7 +76,7 @@ public class CpdExecutorTest { public void setUp() throws IOException { File outputDir = temp.newFolder(); - settings = new Settings(); + settings = new MapSettings(); index = mock(SonarCpdBlockIndex.class); publisher = mock(ReportPublisher.class); when(publisher.getWriter()).thenReturn(new ScannerReportWriter(outputDir)); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/DefaultCpdBlockIndexerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/DefaultCpdBlockIndexerTest.java index 17338bab8af..f748f296d8a 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/DefaultCpdBlockIndexerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/DefaultCpdBlockIndexerTest.java @@ -23,7 +23,7 @@ import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.sonar.api.config.Settings; -import org.sonar.scanner.cpd.deprecated.DefaultCpdBlockIndexer; +import org.sonar.api.config.MapSettings; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.anyString; @@ -39,7 +39,7 @@ public class DefaultCpdBlockIndexerTest { @Before public void init() { - settings = new Settings(); + settings = new MapSettings(); engine = new DefaultCpdBlockIndexer(null, null, settings, null); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/JavaCpdBlockIndexerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/JavaCpdBlockIndexerTest.java index d59fb62a858..f43120e5c84 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/JavaCpdBlockIndexerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/JavaCpdBlockIndexerTest.java @@ -19,6 +19,9 @@ */ package org.sonar.scanner.cpd.deprecated; +import java.io.File; +import java.io.IOException; +import java.util.List; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Rule; @@ -33,13 +36,10 @@ import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.fs.internal.DefaultFileSystem; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.duplications.block.Block; -import org.sonar.scanner.cpd.deprecated.JavaCpdBlockIndexer; import org.sonar.scanner.cpd.index.SonarCpdBlockIndex; import org.sonar.scanner.index.BatchComponentCache; -import java.io.File; -import java.io.IOException; -import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.eq; @@ -76,13 +76,13 @@ public class JavaCpdBlockIndexerTest { File ioFile = file.file(); FileUtils.copyURLToFile(this.getClass().getResource("ManyStatements.java"), ioFile); - settings = new Settings(); + settings = new MapSettings(); engine = new JavaCpdBlockIndexer(fs, settings, index); } @Test public void languageSupported() { - JavaCpdBlockIndexer engine = new JavaCpdBlockIndexer(mock(FileSystem.class), new Settings(), index); + JavaCpdBlockIndexer engine = new JavaCpdBlockIndexer(mock(FileSystem.class), new MapSettings(), index); assertThat(engine.isLanguageSupported(JAVA)).isTrue(); assertThat(engine.isLanguageSupported("php")).isFalse(); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializerTest.java index c9fbc50229e..17e18d36f21 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/pattern/IssueExclusionPatternInitializerTest.java @@ -24,9 +24,9 @@ import org.junit.Before; import org.junit.Test; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.utils.SonarException; import org.sonar.core.config.IssueExclusionProperties; -import org.sonar.scanner.issue.ignore.pattern.IssueExclusionPatternInitializer; import static org.assertj.core.api.Assertions.assertThat; @@ -38,7 +38,7 @@ public class IssueExclusionPatternInitializerTest { @Before public void init() { - settings = new Settings(new PropertyDefinitions(IssueExclusionProperties.all())); + settings = new MapSettings(new PropertyDefinitions(IssueExclusionProperties.all())); patternsInitializer = new IssueExclusionPatternInitializer(settings); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/pattern/IssueInclusionPatternInitializerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/pattern/IssueInclusionPatternInitializerTest.java index e34f19ea649..0e323768f64 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/pattern/IssueInclusionPatternInitializerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ignore/pattern/IssueInclusionPatternInitializerTest.java @@ -23,8 +23,8 @@ import org.junit.Before; import org.junit.Test; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.core.config.IssueExclusionProperties; -import org.sonar.scanner.issue.ignore.pattern.IssueInclusionPatternInitializer; import static org.assertj.core.api.Assertions.assertThat; @@ -36,7 +36,7 @@ public class IssueInclusionPatternInitializerTest { @Before public void init() { - settings = new Settings(new PropertyDefinitions(IssueExclusionProperties.all())); + settings = new MapSettings(new PropertyDefinitions(IssueExclusionProperties.all())); patternsInitializer = new IssueInclusionPatternInitializer(settings); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/platform/DefaultServerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/platform/DefaultServerTest.java index 70fe5399662..e743714e568 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/platform/DefaultServerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/platform/DefaultServerTest.java @@ -22,6 +22,7 @@ package org.sonar.scanner.platform; import org.junit.Test; import org.sonar.api.CoreProperties; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.scanner.bootstrap.BatchWsClient; import static org.assertj.core.api.Assertions.assertThat; @@ -32,7 +33,7 @@ public class DefaultServerTest { @Test public void shouldLoadServerProperties() { - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.SERVER_ID, "123"); settings.setProperty(CoreProperties.SERVER_VERSION, "2.2"); settings.setProperty(CoreProperties.SERVER_STARTTIME, "2010-05-18T17:59:00+0000"); @@ -57,7 +58,7 @@ public class DefaultServerTest { @Test public void publicRootUrl() { - Settings settings = new Settings(); + Settings settings = new MapSettings(); BatchWsClient client = mock(BatchWsClient.class); when(client.baseUrl()).thenReturn("http://foo.com/"); DefaultServer metadata = new DefaultServer(settings, client); @@ -71,7 +72,7 @@ public class DefaultServerTest { @Test(expected = RuntimeException.class) public void invalid_startup_date_throws_exception() { - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.SERVER_STARTTIME, "invalid"); BatchWsClient client = mock(BatchWsClient.class); DefaultServer metadata = new DefaultServer(settings, client); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/DefaultPostJobContextTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/DefaultPostJobContextTest.java index caa182c49c2..8a977c8644f 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/DefaultPostJobContextTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/DefaultPostJobContextTest.java @@ -27,11 +27,11 @@ import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.postjob.issue.PostJobIssue; import org.sonar.api.batch.rule.Severity; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.resources.File; import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.issue.IssueCache; import org.sonar.scanner.issue.tracking.TrackedIssue; -import org.sonar.scanner.postjob.DefaultPostJobContext; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -49,7 +49,7 @@ public class DefaultPostJobContextTest { public void prepare() { issueCache = mock(IssueCache.class); resourceCache = new BatchComponentCache(); - settings = new Settings(); + settings = new MapSettings(); analysisMode = mock(AnalysisMode.class); context = new DefaultPostJobContext(settings, issueCache, resourceCache, analysisMode); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/PostJobOptimizerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/PostJobOptimizerTest.java index 3875f6974f0..edff0dc0c18 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/PostJobOptimizerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/PostJobOptimizerTest.java @@ -25,7 +25,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.sonar.api.batch.postjob.internal.DefaultPostJobDescriptor; import org.sonar.api.config.Settings; -import org.sonar.scanner.postjob.PostJobOptimizer; +import org.sonar.api.config.MapSettings; import static org.assertj.core.api.Assertions.assertThat; @@ -39,7 +39,7 @@ public class PostJobOptimizerTest { @Before public void prepare() { - settings = new Settings(); + settings = new MapSettings(); optimizer = new PostJobOptimizer(settings); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MetadataPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MetadataPublisherTest.java index d88135649a9..c79cef9cbaa 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MetadataPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MetadataPublisherTest.java @@ -28,12 +28,12 @@ import org.junit.rules.TemporaryFolder; import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.resources.Project; import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.protocol.output.ScannerReport; import org.sonar.scanner.protocol.output.ScannerReportReader; import org.sonar.scanner.protocol.output.ScannerReportWriter; -import org.sonar.scanner.report.MetadataPublisher; import org.sonar.scanner.rule.ModuleQProfiles; import org.sonar.scanner.rule.QProfile; import org.sonar.scanner.scan.ImmutableProjectReactor; @@ -63,7 +63,7 @@ public class MetadataPublisherTest { org.sonar.api.resources.Resource sampleFile = org.sonar.api.resources.File.create("src/Foo.php").setEffectiveKey("foo:src/Foo.php"); componentCache.add(project, null); componentCache.add(sampleFile, project); - settings = new Settings(); + settings = new MapSettings(); qProfiles = mock(ModuleQProfiles.class); underTest = new MetadataPublisher(componentCache, new ImmutableProjectReactor(projectDef), settings, qProfiles); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ReportPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ReportPublisherTest.java index 4f8dcd58f19..7ff2e9403b1 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ReportPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ReportPublisherTest.java @@ -32,6 +32,7 @@ import org.mockito.Mockito; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.platform.Server; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.TempFolder; @@ -40,9 +41,6 @@ import org.sonar.api.utils.log.LoggerLevel; import org.sonar.core.config.CorePropertyDefinitions; import org.sonar.scanner.analysis.DefaultAnalysisMode; import org.sonar.scanner.bootstrap.BatchWsClient; -import org.sonar.scanner.report.AnalysisContextReportPublisher; -import org.sonar.scanner.report.ReportPublisher; -import org.sonar.scanner.report.ReportPublisherStep; import org.sonar.scanner.scan.ImmutableProjectReactor; import static org.apache.commons.io.FileUtils.readFileToString; @@ -62,7 +60,7 @@ public class ReportPublisherTest { public ExpectedException exception = ExpectedException.none(); DefaultAnalysisMode mode = mock(DefaultAnalysisMode.class); - Settings settings = new Settings(new PropertyDefinitions(CorePropertyDefinitions.all())); + Settings settings = new MapSettings(new PropertyDefinitions(CorePropertyDefinitions.all())); BatchWsClient wsClient = mock(BatchWsClient.class, Mockito.RETURNS_DEEP_STUBS); Server server = mock(Server.class); ImmutableProjectReactor reactor = mock(ImmutableProjectReactor.class); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/QProfileVerifierTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/QProfileVerifierTest.java index 00c9ea3d8dd..aa12313ba27 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/QProfileVerifierTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/QProfileVerifierTest.java @@ -27,10 +27,8 @@ import org.junit.rules.TemporaryFolder; import org.slf4j.Logger; import org.sonar.api.batch.fs.internal.DefaultFileSystem; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.utils.MessageException; -import org.sonar.scanner.rule.ModuleQProfiles; -import org.sonar.scanner.rule.QProfile; -import org.sonar.scanner.rule.QProfileVerifier; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -46,7 +44,7 @@ public class QProfileVerifierTest { private DefaultFileSystem fs; private ModuleQProfiles profiles; - private Settings settings = new Settings(); + private Settings settings = new MapSettings(); @Before public void before() throws Exception { diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/RulesProfileProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/RulesProfileProviderTest.java index 3dc3651276b..a15845f3afb 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/RulesProfileProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/rule/RulesProfileProviderTest.java @@ -23,12 +23,9 @@ import java.util.Arrays; import org.junit.Test; import org.sonar.api.batch.rule.internal.ActiveRulesBuilder; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.profiles.RulesProfile; import org.sonar.api.rule.RuleKey; -import org.sonar.scanner.rule.ModuleQProfiles; -import org.sonar.scanner.rule.QProfile; -import org.sonar.scanner.rule.RulesProfileProvider; -import org.sonar.scanner.rule.RulesProfileWrapper; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; @@ -38,7 +35,7 @@ import static org.mockito.Mockito.when; public class RulesProfileProviderTest { ModuleQProfiles qProfiles = mock(ModuleQProfiles.class); - Settings settings = new Settings(); + Settings settings = new MapSettings(); RulesProfileProvider provider = new RulesProfileProvider(); @Test diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/LanguageVerifierTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/LanguageVerifierTest.java index 652a7c106a7..e4af7a57587 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/LanguageVerifierTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/LanguageVerifierTest.java @@ -26,6 +26,7 @@ import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; import org.sonar.api.batch.fs.internal.DefaultFileSystem; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.resources.Languages; import org.sonar.api.utils.MessageException; import org.sonar.scanner.FakeJava; @@ -42,7 +43,7 @@ public class LanguageVerifierTest { @Rule public ExpectedException thrown = ExpectedException.none(); - private Settings settings = new Settings(); + private Settings settings = new MapSettings(); private LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(FakeJava.INSTANCE)); private DefaultFileSystem fs; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ModuleSettingsTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ModuleSettingsTest.java index 05c1e9f5724..f779b0d80f4 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ModuleSettingsTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ModuleSettingsTest.java @@ -33,11 +33,13 @@ import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.utils.MessageException; import org.sonar.scanner.analysis.DefaultAnalysisMode; +import org.sonar.scanner.bootstrap.GlobalMode; +import org.sonar.scanner.bootstrap.GlobalProperties; import org.sonar.scanner.bootstrap.GlobalSettings; +import org.sonar.scanner.protocol.input.GlobalRepositories; import org.sonar.scanner.report.AnalysisContextReportPublisher; import org.sonar.scanner.repository.FileData; import org.sonar.scanner.repository.ProjectRepositories; -import org.sonar.scanner.scan.ModuleSettings; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -81,9 +83,7 @@ public class ModuleSettingsTest { @Test public void test_loading_of_module_settings() { - GlobalSettings globalSettings = mock(GlobalSettings.class); - when(globalSettings.getDefinitions()).thenReturn(new PropertyDefinitions()); - when(globalSettings.getProperties()).thenReturn(ImmutableMap.of( + GlobalSettings globalSettings = newGlobalSettings(ImmutableMap.of( "overridding", "batch", "on-batch", "true")); @@ -96,15 +96,12 @@ public class ModuleSettingsTest { assertThat(moduleSettings.getString("overridding")).isEqualTo("module"); assertThat(moduleSettings.getString("on-batch")).isEqualTo("true"); assertThat(moduleSettings.getString("on-module")).isEqualTo("true"); - } // SONAR-6386 @Test public void test_loading_of_parent_module_settings_for_new_module() { - GlobalSettings globalSettings = mock(GlobalSettings.class); - when(globalSettings.getDefinitions()).thenReturn(new PropertyDefinitions()); - when(globalSettings.getProperties()).thenReturn(ImmutableMap.of( + GlobalSettings globalSettings = newGlobalSettings(ImmutableMap.of( "overridding", "batch", "on-batch", "true")); @@ -122,16 +119,14 @@ public class ModuleSettingsTest { @Test public void should_not_fail_when_accessing_secured_properties() { - GlobalSettings batchSettings = mock(GlobalSettings.class); - when(batchSettings.getDefinitions()).thenReturn(new PropertyDefinitions()); - when(batchSettings.getProperties()).thenReturn(ImmutableMap.of( + GlobalSettings globalSettings = newGlobalSettings(ImmutableMap.of( "sonar.foo.secured", "bar")); ProjectRepositories projSettingsRepo = createSettings("struts-core", ImmutableMap.of("sonar.foo.license.secured", "bar2")); ProjectDefinition module = ProjectDefinition.create().setKey("struts-core"); - ModuleSettings moduleSettings = new ModuleSettings(batchSettings, module, projSettingsRepo, mode, mock(AnalysisContextReportPublisher.class)); + ModuleSettings moduleSettings = new ModuleSettings(globalSettings, module, projSettingsRepo, mode, mock(AnalysisContextReportPublisher.class)); assertThat(moduleSettings.getString("sonar.foo.license.secured")).isEqualTo("bar2"); assertThat(moduleSettings.getString("sonar.foo.secured")).isEqualTo("bar"); @@ -139,9 +134,7 @@ public class ModuleSettingsTest { @Test public void should_fail_when_accessing_secured_properties_in_issues() { - GlobalSettings batchSettings = mock(GlobalSettings.class); - when(batchSettings.getDefinitions()).thenReturn(new PropertyDefinitions()); - when(batchSettings.getProperties()).thenReturn(ImmutableMap.of( + GlobalSettings globalSettings = newGlobalSettings(ImmutableMap.of( "sonar.foo.secured", "bar")); ProjectRepositories projSettingsRepo = createSettings("struts-core", ImmutableMap.of("sonar.foo.license.secured", "bar2")); @@ -150,7 +143,7 @@ public class ModuleSettingsTest { ProjectDefinition module = ProjectDefinition.create().setKey("struts-core"); - ModuleSettings moduleSettings = new ModuleSettings(batchSettings, module, projSettingsRepo, mode, mock(AnalysisContextReportPublisher.class)); + ModuleSettings moduleSettings = new ModuleSettings(globalSettings, module, projSettingsRepo, mode, mock(AnalysisContextReportPublisher.class)); assertThat(moduleSettings.getString("sonar.foo.license.secured")).isEqualTo("bar2"); @@ -160,4 +153,10 @@ public class ModuleSettingsTest { "Access to the secured property 'sonar.foo.secured' is not possible in issues mode. The SonarQube plugin which requires this property must be deactivated in issues mode."); moduleSettings.getString("sonar.foo.secured"); } + + private GlobalSettings newGlobalSettings(Map<String, String> props) { + GlobalProperties globalProps = new GlobalProperties(props); + return new GlobalSettings(globalProps, new PropertyDefinitions(), + new GlobalRepositories(), new GlobalMode(globalProps)); + } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorValidatorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorValidatorTest.java index 35648c6c72e..9c9a24cc01d 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorValidatorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectReactorValidatorTest.java @@ -19,11 +19,6 @@ */ package org.sonar.scanner.scan; -import static org.mockito.Mockito.when; - -import org.sonar.api.utils.MessageException; -import org.sonar.scanner.analysis.DefaultAnalysisMode; -import org.sonar.scanner.scan.ProjectReactorValidator; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -32,8 +27,12 @@ import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.bootstrap.ProjectReactor; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; +import org.sonar.api.utils.MessageException; +import org.sonar.scanner.analysis.DefaultAnalysisMode; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class ProjectReactorValidatorTest { @@ -47,7 +46,7 @@ public class ProjectReactorValidatorTest { @Before public void prepare() { mode = mock(DefaultAnalysisMode.class); - settings = new Settings(); + settings = new MapSettings(); validator = new ProjectReactorValidator(settings, mode); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectSettingsTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectSettingsTest.java index e28b44a5f61..5b889fb1340 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectSettingsTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/ProjectSettingsTest.java @@ -40,7 +40,6 @@ import org.sonar.scanner.bootstrap.GlobalSettings; import org.sonar.scanner.protocol.input.GlobalRepositories; import org.sonar.scanner.repository.FileData; import org.sonar.scanner.repository.ProjectRepositories; -import org.sonar.scanner.scan.ProjectSettings; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -77,7 +76,7 @@ public class ProjectSettingsTest { project.setProperty("project.prop", "project"); projectRef = new ProjectRepositories(emptySettings, emptyFileData, null); - ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, new PropertyDefinitions(), projectRef, mode); + ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, projectRef, mode); assertThat(batchSettings.getString("project.prop")).isEqualTo("project"); } @@ -89,7 +88,7 @@ public class ProjectSettingsTest { settings.put("struts", "sonar.java.coveragePlugin", "jacoco"); projectRef = new ProjectRepositories(settings, emptyFileData, null); - ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, new PropertyDefinitions(), projectRef, mode); + ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, projectRef, mode); assertThat(batchSettings.getString("sonar.java.coveragePlugin")).isEqualTo("jacoco"); } @@ -103,7 +102,7 @@ public class ProjectSettingsTest { projectRef = new ProjectRepositories(settings, emptyFileData, null); - ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, new PropertyDefinitions(), projectRef, mode); + ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, projectRef, mode); assertThat(batchSettings.getString("sonar.java.coveragePlugin")).isEqualTo("jacoco"); } @@ -115,7 +114,7 @@ public class ProjectSettingsTest { settings.put("struts", "sonar.foo.license.secured", "bar2"); projectRef = new ProjectRepositories(settings, emptyFileData, null); - ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, new PropertyDefinitions(), projectRef, mode); + ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, projectRef, mode); assertThat(batchSettings.getString("sonar.foo.license.secured")).isEqualTo("bar2"); assertThat(batchSettings.getString("sonar.foo.secured")).isEqualTo("bar"); @@ -130,7 +129,7 @@ public class ProjectSettingsTest { when(mode.isIssues()).thenReturn(true); projectRef = new ProjectRepositories(settings, emptyFileData, null); - ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, new PropertyDefinitions(), projectRef, mode); + ProjectSettings batchSettings = new ProjectSettings(new ProjectReactor(project), bootstrapProps, projectRef, mode); assertThat(batchSettings.getString("sonar.foo.license.secured")).isEqualTo("bar2"); thrown.expect(MessageException.class); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/ExclusionFiltersTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/ExclusionFiltersTest.java index c084c7c78e8..0007577b88c 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/ExclusionFiltersTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/ExclusionFiltersTest.java @@ -19,6 +19,8 @@ */ package org.sonar.scanner.scan.filesystem; +import java.io.File; +import java.io.IOException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -26,10 +28,8 @@ import org.sonar.api.CoreProperties; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.scan.filesystem.FileExclusions; -import org.sonar.scanner.scan.filesystem.ExclusionFilters; -import java.io.File; -import java.io.IOException; import static org.assertj.core.api.Assertions.assertThat; @@ -40,7 +40,7 @@ public class ExclusionFiltersTest { @Test public void no_inclusions_nor_exclusions() throws IOException { - ExclusionFilters filter = new ExclusionFilters(new FileExclusions(new Settings())); + ExclusionFilters filter = new ExclusionFilters(new FileExclusions(new MapSettings())); filter.prepare(); java.io.File file = temp.newFile(); @@ -51,7 +51,7 @@ public class ExclusionFiltersTest { @Test public void match_inclusion() throws IOException { - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_INCLUSIONS_PROPERTY, "**/*Dao.java"); ExclusionFilters filter = new ExclusionFilters(new FileExclusions(settings)); filter.prepare(); @@ -66,7 +66,7 @@ public class ExclusionFiltersTest { @Test public void match_at_least_one_inclusion() throws IOException { - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_INCLUSIONS_PROPERTY, "**/*Dao.java,**/*Dto.java"); ExclusionFilters filter = new ExclusionFilters(new FileExclusions(settings)); @@ -83,7 +83,7 @@ public class ExclusionFiltersTest { @Test public void match_exclusions() throws IOException { - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_INCLUSIONS_PROPERTY, "src/main/java/**/*"); settings.setProperty(CoreProperties.PROJECT_TEST_INCLUSIONS_PROPERTY, "src/test/java/**/*"); settings.setProperty(CoreProperties.PROJECT_EXCLUSIONS_PROPERTY, "**/*Dao.java"); @@ -108,7 +108,7 @@ public class ExclusionFiltersTest { File baseDir = temp.newFile(); File excludedFile = new File(baseDir, "src/main/java/org/bar/Bar.java"); - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_INCLUSIONS_PROPERTY, "src/main/java/**/*"); settings.setProperty(CoreProperties.PROJECT_EXCLUSIONS_PROPERTY, "file:" + excludedFile.getCanonicalPath()); ExclusionFilters filter = new ExclusionFilters(new FileExclusions(settings)); @@ -124,7 +124,7 @@ public class ExclusionFiltersTest { @Test public void trim_pattern() { - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_EXCLUSIONS_PROPERTY, " **/*Dao.java "); ExclusionFilters filter = new ExclusionFilters(new FileExclusions(settings)); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputFileBuilderFactoryTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputFileBuilderFactoryTest.java index 5dd278b89db..c8346db929f 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputFileBuilderFactoryTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputFileBuilderFactoryTest.java @@ -23,13 +23,8 @@ import org.junit.Test; import org.mockito.Mockito; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.fs.internal.FileMetadata; -import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.scan.filesystem.PathResolver; -import org.sonar.scanner.scan.filesystem.DefaultModuleFileSystem; -import org.sonar.scanner.scan.filesystem.InputFileBuilder; -import org.sonar.scanner.scan.filesystem.InputFileBuilderFactory; -import org.sonar.scanner.scan.filesystem.LanguageDetectionFactory; -import org.sonar.scanner.scan.filesystem.StatusDetectionFactory; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -43,7 +38,7 @@ public class InputFileBuilderFactoryTest { DefaultModuleFileSystem fs = mock(DefaultModuleFileSystem.class); InputFileBuilderFactory factory = new InputFileBuilderFactory(ProjectDefinition.create().setKey("struts"), pathResolver, langDetectionFactory, - statusDetectionFactory, new Settings(), new FileMetadata()); + statusDetectionFactory, new MapSettings(), new FileMetadata()); InputFileBuilder builder = factory.create(fs); assertThat(builder.langDetection()).isNotNull(); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputFileBuilderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputFileBuilderTest.java index 0e496f4fe16..63fe01d8eb5 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputFileBuilderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputFileBuilderTest.java @@ -19,6 +19,8 @@ */ package org.sonar.scanner.scan.filesystem; +import java.io.File; +import java.nio.charset.StandardCharsets; import org.apache.commons.io.FileUtils; import org.junit.Rule; import org.junit.Test; @@ -26,15 +28,9 @@ import org.junit.rules.TemporaryFolder; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.FileMetadata; -import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.scan.filesystem.PathResolver; import org.sonar.api.utils.PathUtils; -import org.sonar.scanner.scan.filesystem.DefaultModuleFileSystem; -import org.sonar.scanner.scan.filesystem.InputFileBuilder; -import org.sonar.scanner.scan.filesystem.LanguageDetection; -import org.sonar.scanner.scan.filesystem.StatusDetection; -import java.io.File; -import java.nio.charset.StandardCharsets; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.any; @@ -68,7 +64,7 @@ public class InputFileBuilderTest { .thenReturn(InputFile.Status.ADDED); InputFileBuilder builder = new InputFileBuilder("struts", new PathResolver(), - langDetection, statusDetection, fs, new Settings(), new FileMetadata()); + langDetection, statusDetection, fs, new MapSettings(), new FileMetadata()); DefaultInputFile inputFile = builder.create(srcFile); builder.completeAndComputeMetadata(inputFile, InputFile.Type.MAIN); @@ -91,7 +87,7 @@ public class InputFileBuilderTest { when(fs.baseDir()).thenReturn(basedir); InputFileBuilder builder = new InputFileBuilder("struts", new PathResolver(), - langDetection, statusDetection, fs, new Settings(), new FileMetadata()); + langDetection, statusDetection, fs, new MapSettings(), new FileMetadata()); DefaultInputFile inputFile = builder.create(srcFile); assertThat(inputFile).isNull(); @@ -111,7 +107,7 @@ public class InputFileBuilderTest { when(langDetection.language(any(InputFile.class))).thenReturn(null); InputFileBuilder builder = new InputFileBuilder("struts", new PathResolver(), - langDetection, statusDetection, fs, new Settings(), new FileMetadata()); + langDetection, statusDetection, fs, new MapSettings(), new FileMetadata()); DefaultInputFile inputFile = builder.create(srcFile); inputFile = builder.completeAndComputeMetadata(inputFile, InputFile.Type.MAIN); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionFactoryTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionFactoryTest.java index 82c47c1aa0b..0064dd10ebf 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionFactoryTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionFactoryTest.java @@ -20,13 +20,11 @@ package org.sonar.scanner.scan.filesystem; import org.junit.Test; -import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.resources.Languages; import org.sonar.scanner.FakeJava; import org.sonar.scanner.repository.language.DefaultLanguagesRepository; import org.sonar.scanner.repository.language.LanguagesRepository; -import org.sonar.scanner.scan.filesystem.LanguageDetection; -import org.sonar.scanner.scan.filesystem.LanguageDetectionFactory; import static org.assertj.core.api.Assertions.assertThat; @@ -34,7 +32,7 @@ public class LanguageDetectionFactoryTest { @Test public void testCreate() throws Exception { LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(FakeJava.INSTANCE)); - LanguageDetectionFactory factory = new LanguageDetectionFactory(new Settings(), languages); + LanguageDetectionFactory factory = new LanguageDetectionFactory(new MapSettings(), languages); LanguageDetection languageDetection = factory.create(); assertThat(languageDetection).isNotNull(); assertThat(languageDetection.patternsByLanguage()).hasSize(1); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java index d5013ed0ba7..16e66383578 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/LanguageDetectionTest.java @@ -19,6 +19,8 @@ */ package org.sonar.scanner.scan.filesystem; +import java.io.File; +import java.io.IOException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -27,14 +29,12 @@ import org.sonar.api.CoreProperties; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.resources.Language; import org.sonar.api.resources.Languages; import org.sonar.api.utils.MessageException; import org.sonar.scanner.repository.language.DefaultLanguagesRepository; import org.sonar.scanner.repository.language.LanguagesRepository; -import org.sonar.scanner.scan.filesystem.LanguageDetection; -import java.io.File; -import java.io.IOException; import static junit.framework.Assert.fail; import static org.assertj.core.api.Assertions.assertThat; @@ -59,7 +59,7 @@ public class LanguageDetectionTest { @Test public void search_by_file_extension() throws Exception { LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(new MockLanguage("java", "java", "jav"), new MockLanguage("cobol", "cbl", "cob"))); - LanguageDetection detection = new LanguageDetection(new Settings(), languages); + LanguageDetection detection = new LanguageDetection(new MapSettings(), languages); assertThat(detection.language(newInputFile("Foo.java"))).isEqualTo("java"); assertThat(detection.language(newInputFile("src/Foo.java"))).isEqualTo("java"); @@ -76,7 +76,7 @@ public class LanguageDetectionTest { @Test public void should_not_fail_if_no_language() throws Exception { - LanguageDetection detection = spy(new LanguageDetection(new Settings(), new DefaultLanguagesRepository(new Languages()))); + LanguageDetection detection = spy(new LanguageDetection(new MapSettings(), new DefaultLanguagesRepository(new Languages()))); assertThat(detection.language(newInputFile("Foo.java"))).isNull(); } @@ -84,7 +84,7 @@ public class LanguageDetectionTest { public void plugin_can_declare_a_file_extension_twice_for_case_sensitivity() throws Exception { LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(new MockLanguage("abap", "abap", "ABAP"))); - LanguageDetection detection = new LanguageDetection(new Settings(), languages); + LanguageDetection detection = new LanguageDetection(new MapSettings(), languages); assertThat(detection.language(newInputFile("abc.abap"))).isEqualTo("abap"); } @@ -95,12 +95,12 @@ public class LanguageDetectionTest { LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(new MockLanguage("java", "java"), new MockLanguage("abap"))); // No side-effect on non-ABAP projects - LanguageDetection detection = new LanguageDetection(new Settings(), languages); + LanguageDetection detection = new LanguageDetection(new MapSettings(), languages); assertThat(detection.language(newInputFile("abc"))).isNull(); assertThat(detection.language(newInputFile("abc.abap"))).isNull(); assertThat(detection.language(newInputFile("abc.java"))).isEqualTo("java"); - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_LANGUAGE_PROPERTY, "abap"); detection = new LanguageDetection(settings, languages); assertThat(detection.language(newInputFile("abc"))).isEqualTo("abap"); @@ -112,7 +112,7 @@ public class LanguageDetectionTest { public void force_language_using_deprecated_property() throws Exception { LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(new MockLanguage("java", "java"), new MockLanguage("php", "php"))); - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_LANGUAGE_PROPERTY, "java"); LanguageDetection detection = new LanguageDetection(settings, languages); assertThat(detection.language(newInputFile("abc"))).isNull(); @@ -127,7 +127,7 @@ public class LanguageDetectionTest { thrown.expectMessage("No language is installed with key 'unknown'. Please update property 'sonar.language'"); LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(new MockLanguage("java", "java"), new MockLanguage("php", "php"))); - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty(CoreProperties.PROJECT_LANGUAGE_PROPERTY, "unknown"); new LanguageDetection(settings, languages); } @@ -135,7 +135,7 @@ public class LanguageDetectionTest { @Test public void fail_if_conflicting_language_suffix() throws Exception { LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(new MockLanguage("xml", "xhtml"), new MockLanguage("web", "xhtml"))); - LanguageDetection detection = new LanguageDetection(new Settings(), languages); + LanguageDetection detection = new LanguageDetection(new MapSettings(), languages); try { detection.language(newInputFile("abc.xhtml")); fail(); @@ -151,7 +151,7 @@ public class LanguageDetectionTest { public void solve_conflict_using_filepattern() throws Exception { LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(new MockLanguage("xml", "xhtml"), new MockLanguage("web", "xhtml"))); - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty("sonar.lang.patterns.xml", "xml/**"); settings.setProperty("sonar.lang.patterns.web", "web/**"); LanguageDetection detection = new LanguageDetection(settings, languages); @@ -162,7 +162,7 @@ public class LanguageDetectionTest { @Test public void fail_if_conflicting_filepattern() throws Exception { LanguagesRepository languages = new DefaultLanguagesRepository(new Languages(new MockLanguage("abap", "abap"), new MockLanguage("cobol", "cobol"))); - Settings settings = new Settings(); + Settings settings = new MapSettings(); settings.setProperty("sonar.lang.patterns.abap", "*.abap,*.txt"); settings.setProperty("sonar.lang.patterns.cobol", "*.cobol,*.txt"); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/ConsoleReportTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/ConsoleReportTest.java index ba0bd7ff7c7..227934bc39f 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/ConsoleReportTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/ConsoleReportTest.java @@ -19,6 +19,8 @@ */ package org.sonar.scanner.scan.report; +import java.util.Arrays; +import java.util.Collections; import javax.annotation.Nullable; import org.junit.Before; import org.junit.Rule; @@ -26,14 +28,12 @@ import org.junit.Test; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.rule.Severity; import org.sonar.api.utils.log.LogTester; import org.sonar.scanner.issue.IssueCache; import org.sonar.scanner.issue.tracking.TrackedIssue; import org.sonar.scanner.scan.filesystem.InputPathCache; -import org.sonar.scanner.scan.report.ConsoleReport; -import java.util.Arrays; -import java.util.Collections; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -51,7 +51,7 @@ public class ConsoleReportTest { @Before public void prepare() { - settings = new Settings(); + settings = new MapSettings(); issueCache = mock(IssueCache.class); inputPathCache = mock(InputPathCache.class); report = new ConsoleReport(settings, issueCache, inputPathCache); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/JSONReportTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/JSONReportTest.java index c8f8bef4113..e7109daa410 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/JSONReportTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/JSONReportTest.java @@ -39,6 +39,7 @@ import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.rule.Rules; import org.sonar.api.batch.rule.internal.RulesBuilder; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.issue.Issue; import org.sonar.api.platform.Server; import org.sonar.api.resources.Project; @@ -49,7 +50,6 @@ import org.sonar.scanner.issue.tracking.TrackedIssue; import org.sonar.scanner.protocol.input.ScannerInput; import org.sonar.scanner.repository.user.UserRepositoryLoader; import org.sonar.scanner.scan.filesystem.InputPathCache; -import org.sonar.scanner.scan.report.JSONReport; import static net.javacrumbs.jsonunit.assertj.JsonAssert.assertThatJson; import static org.assertj.core.api.Assertions.assertThat; @@ -69,7 +69,7 @@ public class JSONReportTest { DefaultFileSystem fs; Server server = mock(Server.class); Rules rules = mock(Rules.class); - Settings settings = new Settings(); + Settings settings = new MapSettings(); IssueCache issueCache = mock(IssueCache.class); private UserRepositoryLoader userRepository; diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorContextTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorContextTest.java index a5eace1c537..8c32a380fde 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorContextTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorContextTest.java @@ -34,6 +34,7 @@ import org.sonar.api.batch.rule.ActiveRules; import org.sonar.api.batch.rule.internal.ActiveRulesBuilder; import org.sonar.api.batch.sensor.internal.SensorStorage; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.internal.SonarRuntimeImpl; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.utils.Version; @@ -65,7 +66,7 @@ public class DefaultSensorContextTest { MetricFinder metricFinder = mock(MetricFinder.class); when(metricFinder.<Integer>findByKey(CoreMetrics.NCLOC_KEY)).thenReturn(CoreMetrics.NCLOC); when(metricFinder.<String>findByKey(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)).thenReturn(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION); - settings = new Settings(); + settings = new MapSettings(); sensorStorage = mock(SensorStorage.class); analysisMode = mock(AnalysisMode.class); runtime = SonarRuntimeImpl.forSonarQube(Version.parse("5.5"), SonarQubeSide.SCANNER); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorStorageTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorStorageTest.java index c0d8053ece5..e9ae12fd688 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorStorageTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorStorageTest.java @@ -33,6 +33,7 @@ import org.sonar.api.batch.sensor.highlighting.internal.DefaultHighlighting; import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure; import org.sonar.api.batch.sensor.symbol.internal.DefaultSymbolTable; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Measure; import org.sonar.api.resources.File; @@ -75,7 +76,7 @@ public class DefaultSensorStorageTest { MetricFinder metricFinder = mock(MetricFinder.class); when(metricFinder.<Integer>findByKey(CoreMetrics.NCLOC_KEY)).thenReturn(CoreMetrics.NCLOC); when(metricFinder.<String>findByKey(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION_KEY)).thenReturn(CoreMetrics.FUNCTION_COMPLEXITY_DISTRIBUTION); - settings = new Settings(); + settings = new MapSettings(); moduleIssues = mock(ModuleIssues.class); project = new Project("myProject"); measureCache = mock(MeasureCache.class); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/SensorOptimizerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/SensorOptimizerTest.java index 582ba2576fb..3fac6d4f0e8 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/SensorOptimizerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/SensorOptimizerTest.java @@ -31,8 +31,8 @@ import org.sonar.api.batch.rule.ActiveRules; import org.sonar.api.batch.rule.internal.ActiveRulesBuilder; import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.rule.RuleKey; -import org.sonar.scanner.sensor.SensorOptimizer; import static org.assertj.core.api.Assertions.assertThat; @@ -51,7 +51,7 @@ public class SensorOptimizerTest { @Before public void prepare() throws Exception { fs = new DefaultFileSystem(temp.newFolder().toPath()); - settings = new Settings(); + settings = new MapSettings(); optimizer = new SensorOptimizer(fs, new ActiveRulesBuilder().build(), settings); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/coverage/CoverageExclusionsTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/coverage/CoverageExclusionsTest.java index b2238fe214a..3a59eecdce3 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/coverage/CoverageExclusionsTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/coverage/CoverageExclusionsTest.java @@ -19,25 +19,24 @@ */ package org.sonar.scanner.sensor.coverage; -import org.junit.rules.TemporaryFolder; - -import org.sonar.api.batch.fs.internal.DefaultFileSystem; -import org.sonar.api.batch.fs.internal.DefaultInputFile; import com.google.common.collect.ImmutableMap; +import java.util.Map; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.junit.rules.TemporaryFolder; +import org.sonar.api.batch.fs.internal.DefaultFileSystem; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.Settings; +import org.sonar.api.config.MapSettings; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Measure; import org.sonar.api.resources.File; import org.sonar.api.resources.Resource; import org.sonar.api.utils.KeyValueFormat; import org.sonar.core.config.ExclusionProperties; -import org.sonar.scanner.sensor.coverage.CoverageExclusions; -import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -58,7 +57,7 @@ public class CoverageExclusionsTest { @Before public void createFilter() { - settings = new Settings(new PropertyDefinitions(ExclusionProperties.all())); + settings = new MapSettings(new PropertyDefinitions(ExclusionProperties.all())); fs = new DefaultFileSystem(temp.getRoot()); filter = new CoverageExclusions(settings, fs); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/source/SymbolizableBuilderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/source/SymbolizableBuilderTest.java index c2f2f0aeb58..9f50909105c 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/source/SymbolizableBuilderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/source/SymbolizableBuilderTest.java @@ -30,7 +30,6 @@ import org.sonar.api.resources.Resource; import org.sonar.api.source.Symbolizable; import org.sonar.scanner.index.BatchComponent; import org.sonar.scanner.sensor.DefaultSensorStorage; -import org.sonar.scanner.source.SymbolizableBuilder; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; |