From 5e0737cffa5c34f73d719a3522409105c5040e69 Mon Sep 17 00:00:00 2001 From: Duarte Meneses Date: Tue, 10 Jan 2017 15:00:03 +0100 Subject: [PATCH] SONAR-8518 "sonar.profile" makes the analysis fail in preview mode --- .../test/java/it/analysis/IssuesModeTest.java | 16 +++++++++++++ .../repository/QualityProfileProvider.java | 11 ++++----- .../QualityProfileProviderTest.java | 24 ++++--------------- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/it/it-tests/src/test/java/it/analysis/IssuesModeTest.java b/it/it-tests/src/test/java/it/analysis/IssuesModeTest.java index 5817eed3030..0c3a23d6747 100644 --- a/it/it-tests/src/test/java/it/analysis/IssuesModeTest.java +++ b/it/it-tests/src/test/java/it/analysis/IssuesModeTest.java @@ -208,6 +208,22 @@ public class IssuesModeTest { ItUtils.assertIssuesInJsonReport(result, 3, 0, 17); } + // SONAR-8518 + @Test + public void shoud_support_sonar_profile_prop() throws IOException { + restoreProfile("one-issue-per-line.xml"); + restoreProfile("empty.xml"); + orchestrator.getServer().provisionProject("sample", "xoo-sample"); + orchestrator.getServer().associateProjectToQualityProfile("sample", "xoo", "empty"); + + SonarRunner runner = configureRunner("shared/xoo-sample", + "sonar.verbose", "true", + "sonar.analysis.mode", "issues", + "sonar.profile", "one-issue-per-line"); + BuildResult result = orchestrator.executeBuild(runner); + ItUtils.assertIssuesInJsonReport(result, 17, 0, 0); + } + // SONAR-5715 @Test public void test_issues_mode_on_project_with_space_in_filename() throws IOException { diff --git a/sonar-scanner-engine/src/main/java/org/sonar/batch/repository/QualityProfileProvider.java b/sonar-scanner-engine/src/main/java/org/sonar/batch/repository/QualityProfileProvider.java index 0b62b406a41..2cb4d897acc 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/batch/repository/QualityProfileProvider.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/batch/repository/QualityProfileProvider.java @@ -27,7 +27,6 @@ import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import org.sonar.api.utils.log.Profiler; import org.sonar.batch.analysis.AnalysisProperties; -import org.sonar.batch.analysis.DefaultAnalysisMode; import org.sonar.batch.rule.ModuleQProfiles; import org.sonarqube.ws.QualityProfiles.SearchWsResponse.QualityProfile; @@ -36,14 +35,14 @@ public class QualityProfileProvider extends ProviderAdapter { private static final String LOG_MSG = "Load quality profiles"; private ModuleQProfiles profiles = null; - public ModuleQProfiles provide(ProjectKey projectKey, QualityProfileLoader loader, ProjectRepositories projectRepositories, AnalysisProperties props, DefaultAnalysisMode mode) { + public ModuleQProfiles provide(ProjectKey projectKey, QualityProfileLoader loader, ProjectRepositories projectRepositories, AnalysisProperties props) { if (this.profiles == null) { List profileList; Profiler profiler = Profiler.create(LOG).startInfo(LOG_MSG); if (!projectRepositories.exists()) { - profileList = loader.loadDefault(getSonarProfile(props, mode)); + profileList = loader.loadDefault(getSonarProfile(props)); } else { - profileList = loader.load(projectKey.get(), getSonarProfile(props, mode)); + profileList = loader.load(projectKey.get(), getSonarProfile(props)); } profiler.stopInfo(); profiles = new ModuleQProfiles(profileList); @@ -53,9 +52,9 @@ public class QualityProfileProvider extends ProviderAdapter { } @CheckForNull - private static String getSonarProfile(AnalysisProperties props, DefaultAnalysisMode mode) { + private static String getSonarProfile(AnalysisProperties props) { String profile = null; - if (!mode.isIssues() && props.properties().containsKey(ModuleQProfiles.SONAR_PROFILE_PROP)) { + if (props.properties().containsKey(ModuleQProfiles.SONAR_PROFILE_PROP)) { profile = props.property(ModuleQProfiles.SONAR_PROFILE_PROP); LOG.warn("Ability to set quality profile from command line using '" + ModuleQProfiles.SONAR_PROFILE_PROP + "' is deprecated and will be dropped in a future SonarQube version. Please configure quality profile used by your project on SonarQube server."); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/batch/repository/QualityProfileProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/batch/repository/QualityProfileProviderTest.java index bdbdb0ea703..68490734071 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/batch/repository/QualityProfileProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/batch/repository/QualityProfileProviderTest.java @@ -31,7 +31,6 @@ import org.sonar.api.batch.bootstrap.ProjectKey; import org.sonar.api.utils.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.batch.analysis.AnalysisProperties; -import org.sonar.batch.analysis.DefaultAnalysisMode; import org.sonar.batch.rule.ModuleQProfiles; import org.sonarqube.ws.QualityProfiles.SearchWsResponse.QualityProfile; @@ -53,8 +52,6 @@ public class QualityProfileProviderTest { @Mock private QualityProfileLoader loader; @Mock - private DefaultAnalysisMode mode; - @Mock private AnalysisProperties props; @Mock private ProjectKey key; @@ -78,7 +75,7 @@ public class QualityProfileProviderTest { @Test public void testProvide() { when(loader.load(eq("project"), isNull(String.class))).thenReturn(response); - ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props, mode); + ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props); assertResponse(qps); verify(loader).load(eq("project"), isNull(String.class)); @@ -89,7 +86,7 @@ public class QualityProfileProviderTest { public void testProjectDoesntExist() { when(projectRepo.exists()).thenReturn(false); when(loader.loadDefault(anyString())).thenReturn(response); - ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props, mode); + ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props); assertResponse(qps); verify(loader).loadDefault(anyString()); @@ -102,7 +99,7 @@ public class QualityProfileProviderTest { when(props.property(ModuleQProfiles.SONAR_PROFILE_PROP)).thenReturn("custom"); when(props.properties()).thenReturn(ImmutableMap.of(ModuleQProfiles.SONAR_PROFILE_PROP, "custom")); - ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props, mode); + ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props); assertResponse(qps); verify(loader).load(eq("project"), eq("custom")); @@ -111,19 +108,6 @@ public class QualityProfileProviderTest { + "' is deprecated and will be dropped in a future SonarQube version. Please configure quality profile used by your project on SonarQube server."); } - @Test - public void testIgnoreSonarProfileIssuesMode() { - when(mode.isIssues()).thenReturn(true); - when(loader.load(eq("project"), (String) eq(null))).thenReturn(response); - when(props.property(ModuleQProfiles.SONAR_PROFILE_PROP)).thenReturn("custom"); - - ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props, mode); - assertResponse(qps); - - verify(loader).load(eq("project"), (String) eq(null)); - verifyNoMoreInteractions(loader); - } - @Test public void testProfilePropDefault() { when(projectRepo.exists()).thenReturn(false); @@ -131,7 +115,7 @@ public class QualityProfileProviderTest { when(props.property(ModuleQProfiles.SONAR_PROFILE_PROP)).thenReturn("custom"); when(props.properties()).thenReturn(ImmutableMap.of(ModuleQProfiles.SONAR_PROFILE_PROP, "custom")); - ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props, mode); + ModuleQProfiles qps = qualityProfileProvider.provide(key, loader, projectRepo, props); assertResponse(qps); verify(loader).loadDefault(eq("custom")); -- 2.39.5