From 593c7f08b8afa34f5bb683a34265f81b11094a62 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 10 Aug 2016 17:10:22 +0200 Subject: [PATCH] SONAR-7958 add IT --- .../module_a/sonar-project.properties | 4 + .../module_a/src/main/xoo/sample/Sample.xoo | 16 ++++ .../src/main/xoo/sample/Sample.xoo.measures | 11 +++ .../sonar-project.properties | 12 +++ .../module_a/sonar-project.properties | 4 + .../module_a/src/main/xoo/sample/Sample.xoo | 16 ++++ .../src/main/xoo/sample/Sample.xoo.measures | 11 +++ .../new_module/sonar-project.properties | 4 + .../sonar-project.properties | 12 +++ .../test/java/it/measure/MeasuresWsTest.java | 81 ++++++++++++++++++- 10 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 it/it-projects/shared/xoo-sample-module-move-v1/module_a/sonar-project.properties create mode 100644 it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo create mode 100644 it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo.measures create mode 100644 it/it-projects/shared/xoo-sample-module-move-v1/sonar-project.properties create mode 100644 it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/sonar-project.properties create mode 100644 it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo create mode 100644 it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo.measures create mode 100644 it/it-projects/shared/xoo-sample-module-move-v2/new_module/sonar-project.properties create mode 100644 it/it-projects/shared/xoo-sample-module-move-v2/sonar-project.properties 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 index 00000000000..627ee34d167 --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v1/module_a/sonar-project.properties @@ -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 index 00000000000..41871e123a3 --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo @@ -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 index 00000000000..3f73ea8f695 --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v1/module_a/src/main/xoo/sample/Sample.xoo.measures @@ -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 index 00000000000..80a6207ca5c --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v1/sonar-project.properties @@ -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 index 00000000000..627ee34d167 --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/sonar-project.properties @@ -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 index 00000000000..41871e123a3 --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo @@ -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 index 00000000000..3f73ea8f695 --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v2/new_module/module_a/src/main/xoo/sample/Sample.xoo.measures @@ -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 index 00000000000..22721e824fa --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v2/new_module/sonar-project.properties @@ -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 index 00000000000..ce727e4ea81 --- /dev/null +++ b/it/it-projects/shared/xoo-sample-module-move-v2/sonar-project.properties @@ -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 diff --git a/it/it-tests/src/test/java/it/measure/MeasuresWsTest.java b/it/it-tests/src/test/java/it/measure/MeasuresWsTest.java index 038dd0294cd..84eda2908bf 100644 --- a/it/it-tests/src/test/java/it/measure/MeasuresWsTest.java +++ b/it/it-tests/src/test/java/it/measure/MeasuresWsTest.java @@ -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 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"))); } } -- 2.39.5