]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8518 "sonar.profile" makes the analysis fail in preview mode 1521/head
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Tue, 10 Jan 2017 14:00:03 +0000 (15:00 +0100)
committerDuarte Meneses <duarte.meneses@sonarsource.com>
Wed, 11 Jan 2017 10:45:58 +0000 (11:45 +0100)
it/it-tests/src/test/java/it/analysis/IssuesModeTest.java
sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/QualityProfileProvider.java
sonar-scanner-engine/src/test/java/org/sonar/scanner/repository/QualityProfileProviderTest.java

index 8b1e7bd799b98c19fa4432c8c724068fe10e71dc..905ceb7abb8aa62bc9df468d437f07ad6f2b9fc4 100644 (file)
@@ -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
index f24a6e688b36e48f11d71141dff012087967f47b..cd0fb7d8ef3ece78db8e20772060414e7af819db 100644 (file)
@@ -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<QualityProfile> 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.");
index e48ae464e58a9e70a31c0927c2f2e5ec13a03dd4..604b89a9885ce3a695bc1b4c1e52b28c509a655e 100644 (file)
@@ -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"));