]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7958 add IT 1139/head
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 10 Aug 2016 15:10:22 +0000 (17:10 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Wed, 10 Aug 2016 16:17:07 +0000 (18:17 +0200)
it/it-projects/shared/xoo-sample-module-move-v1/module_a/sonar-project.properties [new file with mode: 0644]
it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo [new file with mode: 0644]
it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo.measures [new file with mode: 0644]
it/it-projects/shared/xoo-sample-module-move-v1/sonar-project.properties [new file with mode: 0644]
it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/sonar-project.properties [new file with mode: 0644]
it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo [new file with mode: 0644]
it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo.measures [new file with mode: 0644]
it/it-projects/shared/xoo-sample-module-move-v2/new_module/sonar-project.properties [new file with mode: 0644]
it/it-projects/shared/xoo-sample-module-move-v2/sonar-project.properties [new file with mode: 0644]
it/it-tests/src/test/java/it/measure/MeasuresWsTest.java

diff --git a/it/it-projects/shared/xoo-sample-module-move-v1/module_a/sonar-project.properties b/it/it-projects/shared/xoo-sample-module-move-v1/module_a/sonar-project.properties
new file mode 100644 (file)
index 0000000..627ee34
--- /dev/null
@@ -0,0 +1,4 @@
+sonar.projectKey=module_a
+sonar.projectName=Module A
+# mandatory to reproduce the problem
+sonar.moduleKey=module_a
diff --git a/it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo b/it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo
new file mode 100644 (file)
index 0000000..41871e1
--- /dev/null
@@ -0,0 +1,16 @@
+package sample;
+
+public class Sample {
+       
+       public Sample(int i) {
+               int j = i++;
+       }
+       
+       private String myMethod() {
+               if (foo == bar) {
+                       return "hello";
+               } else {
+                       throw new IllegalStateException();
+               }
+       }
+}
diff --git a/it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo.measures b/it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo.measures
new file mode 100644 (file)
index 0000000..3f73ea8
--- /dev/null
@@ -0,0 +1,11 @@
+ncloc:13
+#Used by dashboard/widgets tests
+complexity:3
+complexity_in_classes:3
+classes:1
+comment_lines:3
+public_api:5
+public_undocumented_api:2
+duplicated_files:1
+duplicated_blocks:2
+duplicated_lines:3
diff --git a/it/it-projects/shared/xoo-sample-module-move-v1/sonar-project.properties b/it/it-projects/shared/xoo-sample-module-move-v1/sonar-project.properties
new file mode 100644 (file)
index 0000000..80a6207
--- /dev/null
@@ -0,0 +1,12 @@
+# Root project information
+sonar.projectKey=sample
+sonar.projectName=Sample
+sonar.projectVersion=1.0-SNAPSHOT
+
+sonar.language=xoo
+
+# Some properties that will be inherited by the modules
+sonar.sources=src/main/xoo
+
+# List of the module identifiers
+sonar.modules=module_a
diff --git a/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/sonar-project.properties b/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/sonar-project.properties
new file mode 100644 (file)
index 0000000..627ee34
--- /dev/null
@@ -0,0 +1,4 @@
+sonar.projectKey=module_a
+sonar.projectName=Module A
+# mandatory to reproduce the problem
+sonar.moduleKey=module_a
diff --git a/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo b/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo
new file mode 100644 (file)
index 0000000..41871e1
--- /dev/null
@@ -0,0 +1,16 @@
+package sample;
+
+public class Sample {
+       
+       public Sample(int i) {
+               int j = i++;
+       }
+       
+       private String myMethod() {
+               if (foo == bar) {
+                       return "hello";
+               } else {
+                       throw new IllegalStateException();
+               }
+       }
+}
diff --git a/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo.measures b/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo.measures
new file mode 100644 (file)
index 0000000..3f73ea8
--- /dev/null
@@ -0,0 +1,11 @@
+ncloc:13
+#Used by dashboard/widgets tests
+complexity:3
+complexity_in_classes:3
+classes:1
+comment_lines:3
+public_api:5
+public_undocumented_api:2
+duplicated_files:1
+duplicated_blocks:2
+duplicated_lines:3
diff --git a/it/it-projects/shared/xoo-sample-module-move-v2/new_module/sonar-project.properties b/it/it-projects/shared/xoo-sample-module-move-v2/new_module/sonar-project.properties
new file mode 100644 (file)
index 0000000..22721e8
--- /dev/null
@@ -0,0 +1,4 @@
+sonar.projectKey=new_module
+sonar.projectName=New Module
+
+sonar.modules=module_a
diff --git a/it/it-projects/shared/xoo-sample-module-move-v2/sonar-project.properties b/it/it-projects/shared/xoo-sample-module-move-v2/sonar-project.properties
new file mode 100644 (file)
index 0000000..ce727e4
--- /dev/null
@@ -0,0 +1,12 @@
+# Root project information
+sonar.projectKey=sample
+sonar.projectName=Sample
+sonar.projectVersion=1.0-SNAPSHOT
+
+sonar.language=xoo
+
+# Some properties that will be inherited by the modules
+sonar.sources=src/main/xoo
+
+# List of the module identifiers
+sonar.modules=new_module
index 038dd0294cddac85b0a35e9600f4a4b2d04e4d0a..84eda2908bfc04fe6dca1ed660a17d896f56cb47 100644 (file)
@@ -45,7 +45,9 @@ import static util.ItUtils.setServerProperty;
 public class MeasuresWsTest {
   @ClassRule
   public static final Orchestrator orchestrator = Category1Suite.ORCHESTRATOR;
+
   private static final String FILE_KEY = "sample:src/main/xoo/sample/Sample.xoo";
+  private static final String DIR_KEY = "sample:src/main/xoo/sample";
   WsClient wsClient;
 
   @BeforeClass
@@ -63,13 +65,14 @@ public class MeasuresWsTest {
   @Before
   public void inspectProject() {
     orchestrator.resetData();
-    orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample")));
 
     wsClient = ItUtils.newAdminWsClient(orchestrator);
   }
 
   @Test
   public void component_tree() {
+    scanXooSample();
+
     ComponentTreeWsResponse response = wsClient.measures().componentTree(new ComponentTreeWsRequest()
       .setBaseComponentKey("sample")
       .setMetricKeys(singletonList("ncloc"))
@@ -79,12 +82,75 @@ public class MeasuresWsTest {
     assertThat(response.getBaseComponent().getKey()).isEqualTo("sample");
     assertThat(response.getMetrics().getMetricsList()).extracting("key").containsOnly("ncloc");
     List<WsMeasures.Component> components = response.getComponentsList();
-    assertThat(components).hasSize(2).extracting("key").containsOnly("sample:src/main/xoo/sample", FILE_KEY);
+    assertThat(components).hasSize(2).extracting("key").containsOnly(DIR_KEY, FILE_KEY);
     assertThat(components.get(0).getMeasuresList().get(0).getValue()).isEqualTo("13");
   }
 
+  /**
+   * @see SONAR-7958
+   */
+  @Test
+  public void component_tree_supports_module_move_down() {
+    String projectKey = "sample";
+    String newModuleKey = "sample:new_module";
+    String moduleAKey = "module_a";
+    String dirKey = "module_a:src/main/xoo/sample";
+    String fileKey = "module_a:src/main/xoo/sample/Sample.xoo";
+
+    scanXooSampleModuleMoveV1();
+
+    verifyComponentTreeWithChildren(projectKey, moduleAKey);
+    verifyComponentTreeWithChildren(moduleAKey, dirKey);
+    verifyComponentTreeWithChildren(dirKey, fileKey);
+
+    scanXooSampleModuleMoveV2();
+
+    verifyComponentTreeWithChildren(projectKey, newModuleKey);
+    verifyComponentTreeWithChildren(newModuleKey, moduleAKey);
+    verifyComponentTreeWithChildren(moduleAKey, dirKey);
+    verifyComponentTreeWithChildren(dirKey, fileKey);
+  }
+
+  /**
+   * @see SONAR-7958
+   */
+  @Test
+  public void component_tree_supports_module_move_up() {
+    String projectKey = "sample";
+    String newModuleKey = "sample:new_module";
+    String moduleAKey = "module_a";
+    String dirKey = "module_a:src/main/xoo/sample";
+    String fileKey = "module_a:src/main/xoo/sample/Sample.xoo";
+
+    scanXooSampleModuleMoveV2();
+
+    verifyComponentTreeWithChildren(projectKey, newModuleKey);
+    verifyComponentTreeWithChildren(newModuleKey, moduleAKey);
+    verifyComponentTreeWithChildren(moduleAKey, dirKey);
+    verifyComponentTreeWithChildren(dirKey, fileKey);
+
+    scanXooSampleModuleMoveV1();
+
+    verifyComponentTreeWithChildren(projectKey, moduleAKey);
+    verifyComponentTreeWithChildren(moduleAKey, dirKey);
+    verifyComponentTreeWithChildren(dirKey, fileKey);
+  }
+
+  private void verifyComponentTreeWithChildren(String baseComponentKey, String... childKeys) {
+    ComponentTreeWsResponse response = wsClient.measures().componentTree(new ComponentTreeWsRequest()
+      .setBaseComponentKey(baseComponentKey)
+      .setMetricKeys(singletonList("ncloc"))
+      .setStrategy("children"));
+
+    assertThat(response.getBaseComponent().getKey()).isEqualTo(baseComponentKey);
+    assertThat(response.getComponentsList())
+      .extracting("key").containsOnly(childKeys);
+  }
+
   @Test
   public void component() {
+    scanXooSample();
+
     ComponentWsResponse response = wsClient.measures().component(new ComponentWsRequest()
       .setComponentKey("sample")
       .setMetricKeys(singletonList("ncloc"))
@@ -94,6 +160,17 @@ public class MeasuresWsTest {
     assertThat(component.getKey()).isEqualTo("sample");
     assertThat(component.getMeasuresList()).isNotEmpty();
     assertThat(response.getMetrics().getMetricsList()).extracting("key").containsOnly("ncloc");
+  }
+
+  private void scanXooSample() {
+    orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample")));
+  }
+
+  private void scanXooSampleModuleMoveV1() {
+    orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample-module-move-v1")));
+  }
 
+  private void scanXooSampleModuleMoveV2() {
+    orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample-module-move-v2")));
   }
 }