]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11659 add analysis's versions to api/project_analyses/search
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Mon, 28 Jan 2019 10:31:54 +0000 (11:31 +0100)
committersonartech <sonartech@sonarsource.com>
Mon, 11 Feb 2019 08:11:48 +0000 (09:11 +0100)
server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java
server/sonar-server/src/main/resources/org/sonar/server/projectanalysis/ws/search-example.json
server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java
sonar-ws/src/main/protobuf/ws-projectanalyses.proto

index e979a955a888a48e8ebcc4a903ea51bda9c1033a..47bf549fb74bb3c57322b7c4c4dcf912e3f90a96 100644 (file)
@@ -78,9 +78,13 @@ class SearchResponseBuilder {
   }
 
   private Analysis.Builder dbToWsAnalysis(SnapshotDto dbAnalysis) {
-    return wsAnalysis.clear()
+    Analysis.Builder builder = wsAnalysis.clear();
+    builder
       .setKey(dbAnalysis.getUuid())
       .setDate(formatDateTime(dbAnalysis.getCreatedAt()));
+    ofNullable(dbAnalysis.getCodePeriodVersion()).ifPresent(builder::setCodePeriodVersion);
+    ofNullable(dbAnalysis.getProjectVersion()).ifPresent(builder::setProjectVersion);
+    return builder;
   }
 
   private Analysis.Builder attachEvents(Analysis.Builder analysis) {
index ce8e689293a9d57848b24ec7be04ee33be9ab4d7..2e42c3bdf00e2a1c8c3512ffc5f0481c2aab1180 100644 (file)
@@ -8,6 +8,8 @@
     {
       "key": "A2",
       "date": "2016-12-12T17:12:45+0100",
+      "codePeriodVersion": "1.2.1",
+      "projectVersion": "1.2.1.423",
       "events": [
         {
           "key": "E21",
@@ -24,6 +26,8 @@
     {
       "key": "A1",
       "date": "2016-12-11T17:12:45+0100",
+      "codePeriodVersion": "1.2",
+      "projectVersion": "1.2.0.322",
       "events": [
         {
           "key": "E11",
@@ -41,6 +45,8 @@
     {
       "key": "P1",
       "date": "2015-11-11T10:00:00+0100",
+      "codePeriodVersion": "1.2",
+      "projectVersion": "1.2.0.321",
       "events": [
         {
           "key": "E31",
index 98aa3471a23ab87cfd1061772fba6520c26d2c54..a51f36f0f6e89f7b7f4ce37e3432c9a0d1e440b5 100644 (file)
@@ -109,9 +109,9 @@ public class SearchActionTest {
   @DataProvider
   public static Object[][] changedBranches() {
     return new Object[][] {
-      { null, "newbranch" },
-      { "newbranch", "anotherbranch" },
-      { "newbranch", null },
+      {null, "newbranch"},
+      {"newbranch", "anotherbranch"},
+      {"newbranch", null},
     };
   }
 
@@ -120,9 +120,17 @@ public class SearchActionTest {
     OrganizationDto organizationDto = db.organizations().insert();
     ComponentDto project = db.components().insertComponent(ComponentTesting.newPrivateProjectDto(organizationDto).setDbKey(KEY_PROJECT_EXAMPLE_001));
     userSession.addProjectPermission(UserRole.USER, project);
-    SnapshotDto a1 = db.components().insertSnapshot(newAnalysis(project).setUuid("A1").setCreatedAt(parseDateTime("2016-12-11T17:12:45+0100").getTime()));
-    SnapshotDto a2 = db.components().insertSnapshot(newAnalysis(project).setUuid("A2").setCreatedAt(parseDateTime("2016-12-12T17:12:45+0100").getTime()));
-    SnapshotDto a3 = db.components().insertSnapshot(newAnalysis(project).setUuid("P1").setCreatedAt(parseDateTime("2015-11-11T10:00:00+0100").getTime()));
+    SnapshotDto a1 = db.components().insertSnapshot(newAnalysis(project)
+      .setUuid("A1").setCreatedAt(parseDateTime("2016-12-11T17:12:45+0100").getTime())
+      .setCodePeriodVersion("1.2").setProjectVersion("1.2.0.322")
+    );
+    SnapshotDto a2 = db.components().insertSnapshot(newAnalysis(project)
+      .setUuid("A2").setCreatedAt(parseDateTime("2016-12-12T17:12:45+0100").getTime())
+      .setCodePeriodVersion("1.2.1").setProjectVersion("1.2.1.423")
+    );
+    SnapshotDto a3 = db.components().insertSnapshot(newAnalysis(project)
+      .setUuid("P1").setCreatedAt(parseDateTime("2015-11-11T10:00:00+0100").getTime())
+      .setCodePeriodVersion("1.2").setProjectVersion("1.2.0.321"));
     db.events().insertEvent(newEvent(a1).setUuid("E11")
       .setName("Quality Gate is Red (was Orange)")
       .setCategory(EventCategory.QUALITY_GATE.getLabel())
@@ -250,7 +258,7 @@ public class SearchActionTest {
 
   @Test
   @UseDataProvider("changedBranches")
-  public void application_definition_change_with_branch(@Nullable String oldBranch, @Nullable  String newBranch) {
+  public void application_definition_change_with_branch(@Nullable String oldBranch, @Nullable String newBranch) {
     OrganizationDto organization = db.organizations().insert();
     ComponentDto application = db.components().insertApplication(organization);
     userSession.registerComponents(application);
@@ -606,6 +614,29 @@ public class SearchActionTest {
     assertThat(result.getAnalysesCount()).isEqualTo(0);
   }
 
+  @Test
+  public void populates_projectVersion_and_codePeriodVersion() {
+    ComponentDto project = db.components().insertPrivateProject();
+    userSession.addProjectPermission(UserRole.USER, project);
+    SnapshotDto[] analyses = new SnapshotDto[] {
+      db.components().insertSnapshot(newAnalysis(project).setCodePeriodVersion(null).setProjectVersion(null)),
+      db.components().insertSnapshot(newAnalysis(project).setCodePeriodVersion("a").setProjectVersion(null)),
+      db.components().insertSnapshot(newAnalysis(project).setCodePeriodVersion(null).setProjectVersion("b")),
+      db.components().insertSnapshot(newAnalysis(project).setCodePeriodVersion("c").setProjectVersion("d"))
+    };
+
+    SearchResponse result = call(project.getDbKey());
+
+    assertThat(result.getAnalysesList())
+      .extracting(Analysis::getKey, Analysis::getCodePeriodVersion, Analysis::getProjectVersion)
+      .containsOnly(
+        tuple(analyses[0].getUuid(), "", ""),
+        tuple(analyses[1].getUuid(), "a", ""),
+        tuple(analyses[2].getUuid(), "", "b"),
+        tuple(analyses[3].getUuid(), "c", "d")
+      );
+  }
+
   @Test
   public void fail_if_not_enough_permissions() {
     userSession.anonymous();
index e1895828b6a90ae58ec6343c8fc8e12a58d88f0f..b2b6c14e15793bab109daedb0a4b42608b6cd1d4 100644 (file)
@@ -56,6 +56,8 @@ message Analysis {
   optional string key = 1;
   optional string date = 2;
   repeated Event events = 3;
+  optional string codePeriodVersion = 4;
+  optional string projectVersion = 5;
 }
 
 message QualityGate {