Adapt to 2.15 API
The 2.15 API requires a couple of changes:
- Support for draft changes was removed
- SubmitRulEvaluator.Factory#create now requires a CurrentUser
Change-Id: Iccf609f342bd65893ccea66cc0ea34b28ea42609
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
index 98d67b3..ee8801f 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
@@ -22,6 +22,7 @@
import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.project.NoSuchChangeException;
+import com.google.gerrit.server.project.NoSuchProjectException;
import com.google.gerrit.server.project.SubmitRuleEvaluator;
import com.google.gerrit.server.query.change.ChangeData;
import com.google.gwtorm.server.OrmException;
@@ -67,10 +68,13 @@
* @return true or false
* @throws IOException
* @throws NoSuchChangeException
+ * @throws NoSuchProjectException
* @throws OrmException
+ * @throws PermissionBackendException
*/
public boolean hasDependentReview(String project, int number)
- throws IOException, NoSuchChangeException, OrmException {
+ throws IOException, NoSuchChangeException, NoSuchProjectException, OrmException,
+ PermissionBackendException {
RevisionResource r = getRevisionResource(project, number);
RelatedInfo related = getRelated.apply(r);
log.debug(String.format("Checking for related changes on review %d", number));
@@ -135,7 +139,7 @@
// For draft reviews, the patchSet must be set to avoid an NPE.
final List<SubmitRecord> cansubmit =
submitRuleEvaluatorFactory
- .create(changeData)
+ .create(getBotUser(), changeData)
.setPatchSet(changeData.currentPatchSet())
.evaluate();
log.debug(String.format("Checking if change %d is submitable.", change));
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
index 864de7d..404d038 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -30,7 +30,6 @@
import com.google.gerrit.server.data.ChangeAttribute;
import com.google.gerrit.server.events.ChangeEvent;
import com.google.gerrit.server.events.CommentAddedEvent;
-import com.google.gerrit.server.events.DraftPublishedEvent;
import com.google.gerrit.server.events.Event;
import com.google.gerrit.server.events.PatchSetCreatedEvent;
import com.google.gerrit.server.events.RefUpdatedEvent;
@@ -73,7 +72,6 @@
@Override
public synchronized void onEvent(final Event event) {
if (event instanceof TopicChangedEvent
- || event instanceof DraftPublishedEvent
|| event instanceof ReviewerDeletedEvent
|| // A blocking score might be removed when a reviewer is deleted.
event instanceof PatchSetCreatedEvent) {
diff --git a/test.rb b/test.rb
index 92ccfab..3df4ebe 100755
--- a/test.rb
+++ b/test.rb
@@ -165,16 +165,6 @@
check_status(commit2, 'MERGED')
end
- def test_published_draft_is_autosubmitted
- commit_id = create_review(PROJECT1, "review0 on #{PROJECT1}", draft: true)
- approve_review(commit_id)
- check_status(commit_id, 'DRAFT')
-
- publish_draft(commit_id)
-
- check_status(commit_id, 'MERGED')
- end
-
private
def project_dir(project_name)
@@ -191,11 +181,7 @@
reviews = gerrit_query(query)
reviews.each do |review|
review_number = review['number']
- if review['status'] == 'DRAFT'
- execute("#{GERRIT_SSH} gerrit review --delete #{review_number},1")
- else
- execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
- end
+ execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
end
end
@@ -207,14 +193,14 @@
change_id
end
- def create_review(project_name, message, topic = nil, change_id = nil, draft: false)
+ def create_review(project_name, message, topic = nil, change_id = nil)
topic_suffix = "/#{topic}" if topic
message = "#{message}\n\nChange-Id: #{change_id}" if change_id
execute(["cd #{project_dir(project_name)}",
"echo 0 >> a",
"git add .",
%Q(git commit -m "#{message}"),
- "git push origin HEAD:refs/#{draft ? 'drafts' : 'for'}/master#{topic_suffix}"
+ "git push origin HEAD:refs/for/master#{topic_suffix}"
].join(" && "))
commit_id = execute("cd #{project_dir(project_name)} && git rev-parse HEAD")
refute(commit_id.empty?, "missing commit-id")
@@ -225,10 +211,6 @@
execute("#{GERRIT_SSH} gerrit review --strict-labels --verified 1 --code-review 2 #{commit_id}")
end
- def publish_draft(commit_id)
- execute("#{GERRIT_SSH} gerrit review --publish #{commit_id}")
- end
-
def abandon_review(commit_id)
execute("#{GERRIT_SSH} gerrit review --abandon #{commit_id}")
end