From: Duarte Meneses Date: Tue, 10 Jan 2017 14:00:03 +0000 (+0100) Subject: SONAR-8518 "sonar.profile" makes the analysis fail in preview mode X-Git-Tag: 6.3-RC1~577 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F1521%2Fhead;p=sonarqube.git SONAR-8518 "sonar.profile" makes the analysis fail in preview mode --- 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 8b1e7bd799b..905ceb7abb8 100644 --- a/it/it-tests/src/test/java/it/analysis/IssuesModeTest.java +++ b/it/it-tests/src/test/java/it/analysis/IssuesModeTest.java @@ -206,6 +206,22 @@ public class IssuesModeTest { assertThat(result.getLogs()).doesNotContain("'One Issue Per Line' skipped because there is no related file in current project"); 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"); + + SonarScanner 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 diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/QualityProfileProvider.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/QualityProfileProvider.java index f24a6e688b3..cd0fb7d8ef3 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/QualityProfileProvider.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/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.scanner.analysis.AnalysisProperties; -import org.sonar.scanner.analysis.DefaultAnalysisMode; import org.sonar.scanner.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/scanner/repository/QualityProfileProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/QualityProfileProviderTest.java index e48ae464e58..604b89a9885 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/QualityProfileProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/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.scanner.analysis.AnalysisProperties; -import org.sonar.scanner.analysis.DefaultAnalysisMode; import org.sonar.scanner.repository.ProjectRepositories; import org.sonar.scanner.repository.QualityProfileLoader; import org.sonar.scanner.repository.QualityProfileProvider; @@ -56,8 +55,6 @@ public class QualityProfileProviderTest { @Mock private QualityProfileLoader loader; @Mock - private DefaultAnalysisMode mode; - @Mock private AnalysisProperties props; @Mock private ProjectKey key; @@ -81,7 +78,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)); @@ -92,7 +89,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()); @@ -105,7 +102,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")); @@ -114,19 +111,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); @@ -134,7 +118,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"));