aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJukka Jokiniva <jukka.jokiniva@qt.io>2018-10-02 11:58:51 +0300
committerJukka Jokiniva <jukka.jokiniva@qt.io>2019-01-10 11:38:27 +0000
commit01ff86b7df744ada936443e0b2329ace41ebb692 (patch)
tree350dc01060a93f37ab9dde0a6da799018dd39615
parentcc08d78aa972d839120e640f8de7ff76a16e46b0 (diff)
Modify commit messages to not contain the sanity review
Fixes: QTBI-1536 Change-Id: Ib47036d99fac9f76a996a34078ec34c537e595bf Reviewed-by: Paul Wicking <paul.wicking@qt.io>
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtChangeMessageModifier.java31
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtModule.java5
-rw-r--r--src/test/java/com/googlesource/gerrit/plugins/qtcodereview/QtCommitFooterIT.java81
3 files changed, 116 insertions, 1 deletions
diff --git a/src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtChangeMessageModifier.java b/src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtChangeMessageModifier.java
new file mode 100644
index 0000000..32cbdd7
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtChangeMessageModifier.java
@@ -0,0 +1,31 @@
+//
+// Copyright (C) 2019 The Qt Company
+//
+
+package com.googlesource.gerrit.plugins.qtcodereview;
+
+import com.google.gerrit.reviewdb.client.Branch;
+import com.google.gerrit.server.git.ChangeMessageModifier;
+import com.google.inject.Singleton;
+import org.eclipse.jgit.revwalk.RevCommit;
+
+@Singleton
+public class QtChangeMessageModifier implements ChangeMessageModifier {
+
+ // Remove extra commit message footers
+ @Override
+ public String onSubmit(String commitMessage, RevCommit original, RevCommit mergeTip, Branch.NameKey destination) {
+ StringBuilder stringBuilder = new StringBuilder("");
+ String[] lines = commitMessage.split("\n");
+
+ for (String line : lines) {
+ if (!line.startsWith("Reviewed-on: ") &&
+ !line.startsWith("Tested-by: ") &&
+ !line.startsWith("Sanity-Review: ") &&
+ !line.startsWith("ChangeLog: ") ) {
+ stringBuilder.append(line).append("\n");
+ }
+ }
+ return stringBuilder.toString();
+ }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtModule.java b/src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtModule.java
index 0753356..76c5aa1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtModule.java
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2018 The Qt Company
+// Copyright (C) 2019 The Qt Company
//
package com.googlesource.gerrit.plugins.qtcodereview;
@@ -8,7 +8,9 @@ import static com.google.gerrit.server.change.ChangeResource.CHANGE_KIND;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.config.FactoryModule;
+import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.RestApiModule;
+import com.google.gerrit.server.git.ChangeMessageModifier;
import com.google.inject.Inject;
import com.google.inject.AbstractModule;
@@ -21,6 +23,7 @@ public class QtModule extends FactoryModule {
protected void configure() {
factory(QtChangeUpdateOp.Factory.class);
+ DynamicSet.bind(binder(), ChangeMessageModifier.class).to(QtChangeMessageModifier.class);
install(
new RestApiModule() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/qtcodereview/QtCommitFooterIT.java b/src/test/java/com/googlesource/gerrit/plugins/qtcodereview/QtCommitFooterIT.java
new file mode 100644
index 0000000..830bdfb
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/qtcodereview/QtCommitFooterIT.java
@@ -0,0 +1,81 @@
+// Copyright (C) 2019 The Qt Company
+
+package com.googlesource.gerrit.plugins.qtcodereview;
+
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.gerrit.extensions.client.ListChangesOption.ALL_REVISIONS;
+import static com.google.gerrit.extensions.client.ListChangesOption.COMMIT_FOOTERS;
+import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
+import static com.google.gerrit.server.project.testing.Util.category;
+import static com.google.gerrit.server.project.testing.Util.value;
+
+import com.google.gerrit.acceptance.LightweightPluginDaemonTest;
+import com.google.gerrit.acceptance.PushOneCommit;
+import com.google.gerrit.acceptance.TestPlugin;
+import com.google.gerrit.acceptance.UseSsh;
+
+import com.google.gerrit.extensions.api.projects.ProjectInput;
+import com.google.gerrit.extensions.client.SubmitType;
+import com.google.gerrit.extensions.common.ChangeInfo;
+import com.google.gerrit.common.data.LabelType;
+import com.google.gerrit.common.data.Permission;
+import com.google.gerrit.extensions.api.changes.ReviewInput;
+import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.gerrit.server.project.testing.Util;
+
+import org.junit.Test;
+
+@TestPlugin(
+ name = "gerrit-plugin-qt-workflow",
+ sysModule = "com.googlesource.gerrit.plugins.qtcodereview.QtModule",
+ sshModule = "com.googlesource.gerrit.plugins.qtcodereview.QtSshModule"
+)
+
+@UseSsh
+public class QtCommitFooterIT extends LightweightPluginDaemonTest {
+
+ @Override
+ protected void updateProjectInput(ProjectInput in) {
+ // Reviewed-on and Tested-by footers are generated only in cherry pick mode
+ in.submitType = SubmitType.CHERRY_PICK;
+ }
+
+ @Test
+ public void removeCommitFooterLines() throws Exception {
+ LabelType sanity = category("Sanity-Review", value(1, "Passes"), value(0, "No score"), value(-1, "Failed"));
+ LabelType verified = category("Verified", value(1, "Passes"), value(0, "No score"), value(-1, "Failed"));
+ LabelType changelog = category("ChangeLog", value(1, "Passes"), value(0, "No score"), value(-1, "Failed"));
+ try (ProjectConfigUpdate u = updateProject(project)) {
+ u.getConfig().getLabelSections().put(sanity.getName(), sanity);
+ u.getConfig().getLabelSections().put(verified.getName(), verified);
+ u.getConfig().getLabelSections().put(changelog.getName(), changelog);
+ AccountGroup.UUID registered = systemGroupBackend.getGroup(REGISTERED_USERS).getUUID();
+ String heads = "refs/heads/*";
+ Util.allow(u.getConfig(), Permission.forLabel("Sanity-Review"), -1, 1, registered, heads);
+ Util.allow(u.getConfig(), Permission.forLabel("Code-Review"), -2, +2, registered, heads);
+ Util.allow(u.getConfig(), Permission.forLabel("Verified"), -1, +1, registered, heads);
+ Util.allow(u.getConfig(), Permission.forLabel("ChangeLog"), -1, +1, registered, heads);
+ u.save();
+ }
+
+ PushOneCommit.Result change = createChange();
+ setApiUser(user);
+ ReviewInput input = new ReviewInput();
+ input.label("Code-Review", 2);
+ input.label(verified.getName(), 1);
+ input.label(sanity.getName(), 1);
+ input.label(changelog.getName(), 1);
+ gApi.changes().id(change.getChangeId()).current().review(input);
+
+ setApiUser(admin);
+ gApi.changes().id(change.getChangeId()).current().submit();
+
+ ChangeInfo cf = gApi.changes().id(change.getChangeId()).get(ALL_REVISIONS, COMMIT_FOOTERS);
+ String commitMsg = cf.revisions.get(cf.currentRevision).commitWithFooters;
+ assertThat(commitMsg).contains("Reviewed-by");
+ assertThat(commitMsg).doesNotContain("Reviewed-on");
+ assertThat(commitMsg).doesNotContain("Sanity-Review");
+ assertThat(commitMsg).doesNotContain("Tested-by");
+ assertThat(commitMsg).doesNotContain("ChangeLog");
+ }
+}