diff options
author | Jukka Jokiniva <jukka.jokiniva@qt.io> | 2018-10-02 11:58:51 +0300 |
---|---|---|
committer | Jukka Jokiniva <jukka.jokiniva@qt.io> | 2019-01-10 11:38:27 +0000 |
commit | 01ff86b7df744ada936443e0b2329ace41ebb692 (patch) | |
tree | 350dc01060a93f37ab9dde0a6da799018dd39615 | |
parent | cc08d78aa972d839120e640f8de7ff76a16e46b0 (diff) |
Modify commit messages to not contain the sanity review
Fixes: QTBI-1536
Change-Id: Ib47036d99fac9f76a996a34078ec34c537e595bf
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
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"); + } +} |