From 8925f3e2875b913d5e2abfcebf17697a41aed356 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Fri, 25 Jul 2014 11:37:35 -0700 Subject: [PATCH] Support empty ChangeUpdates To create a change in the notedb and ensure the meta ref exists, we need a root commit, but thus far we don't have anything else to put in the root commit, so it is effectively empty. Ensure this code path works. Change-Id: I3e5496c7019f083401ef24e430e2b9f89c9936b4 --- .../gerrit/server/notedb/ChangeUpdate.java | 7 ++++--- .../gerrit/server/notedb/ChangeNotesTest.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeUpdate.java index 8f5ab23afc..69b98c8366 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeUpdate.java @@ -473,12 +473,13 @@ public class ChangeUpdate extends AbstractChangeUpdate { private boolean isEmpty() { return approvals.isEmpty() - && reviewers.isEmpty() + && changeMessage == null && commentsForBase.isEmpty() && commentsForPs.isEmpty() + && reviewers.isEmpty() && status == null - && submitRecords == null - && changeMessage == null; + && subject == null + && submitRecords == null; } private static StringBuilder addFooter(StringBuilder sb, FooterKey footer) { diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/notedb/ChangeNotesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/notedb/ChangeNotesTest.java index d9740c5c7c..117806a0f2 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/notedb/ChangeNotesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/notedb/ChangeNotesTest.java @@ -22,6 +22,8 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.SECONDS; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import com.google.common.collect.ImmutableList; @@ -618,6 +620,20 @@ public class ChangeNotesTest { Iterables.getOnlyElement(notes.getSubmitRecords())); } + @Test + public void emptyChangeUpdate() throws Exception { + ChangeUpdate update = newUpdate(newChange(), changeOwner); + update.commit(); + assertNull(update.getRevision()); + } + + public void emptyExceptSubject() throws Exception { + ChangeUpdate update = newUpdate(newChange(), changeOwner); + update.setSubject("Create change"); + update.commit(); + assertNotNull(update.getRevision()); + } + @Test public void multipleUpdatesInBatch() throws Exception { Change c = newChange();