From: Sébastien Lesaint Date: Mon, 28 Jan 2019 10:31:54 +0000 (+0100) Subject: SONAR-11659 add analysis's versions to api/project_analyses/search X-Git-Tag: 7.7~167 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1cd4c68c628f0541d2e440dae09b8fb1674268d0;p=sonarqube.git SONAR-11659 add analysis's versions to api/project_analyses/search --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java index e979a955a88..47bf549fb74 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/projectanalysis/ws/SearchResponseBuilder.java @@ -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) { diff --git a/server/sonar-server/src/main/resources/org/sonar/server/projectanalysis/ws/search-example.json b/server/sonar-server/src/main/resources/org/sonar/server/projectanalysis/ws/search-example.json index ce8e689293a..2e42c3bdf00 100644 --- a/server/sonar-server/src/main/resources/org/sonar/server/projectanalysis/ws/search-example.json +++ b/server/sonar-server/src/main/resources/org/sonar/server/projectanalysis/ws/search-example.json @@ -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", diff --git a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java index 98aa3471a23..a51f36f0f6e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/projectanalysis/ws/SearchActionTest.java @@ -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(); diff --git a/sonar-ws/src/main/protobuf/ws-projectanalyses.proto b/sonar-ws/src/main/protobuf/ws-projectanalyses.proto index e1895828b6a..b2b6c14e157 100644 --- a/sonar-ws/src/main/protobuf/ws-projectanalyses.proto +++ b/sonar-ws/src/main/protobuf/ws-projectanalyses.proto @@ -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 {