Merge "Merge branch 'stable-3.8' into stable-3.9" into stable-3.9
diff --git a/java/com/google/gerrit/server/query/change/ChangeData.java b/java/com/google/gerrit/server/query/change/ChangeData.java
index 0c02920..9522b83 100644
--- a/java/com/google/gerrit/server/query/change/ChangeData.java
+++ b/java/com/google/gerrit/server/query/change/ChangeData.java
@@ -1244,8 +1244,6 @@
         mergeable = true;
       } else if (c.isAbandoned()) {
         return null;
-      } else if (c.isWorkInProgress()) {
-        return null;
       } else {
         if (!lazyload()) {
           return null;
diff --git a/javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java b/javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java
index d6874d8..cab92aa 100644
--- a/javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java
+++ b/javatests/com/google/gerrit/acceptance/api/change/ChangeIT.java
@@ -4545,6 +4545,8 @@
   public void changeQueryReturnsMergeableWhenGerritIndexMergeable() throws Exception {
     String changeId = createChange().getChangeId();
     assertThat(gApi.changes().query(changeId).get().get(0).mergeable).isTrue();
+    gApi.changes().id(changeId).setWorkInProgress();
+    assertThat(gApi.changes().query(changeId).get().get(0).mergeable).isTrue();
   }
 
   @Test
diff --git a/javatests/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java b/javatests/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
index 6af5b06..ecae27e 100644
--- a/javatests/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
+++ b/javatests/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java
@@ -195,7 +195,7 @@
             .create(
                 admin.newIdent(),
                 testRepo,
-                "parent 2",
+                "parent 1",
                 ImmutableMap.of("foo", "foo-2", "bar", "bar-2"))
             .to("refs/heads/master");
 
@@ -214,7 +214,7 @@
             .create(
                 admin.newIdent(),
                 testRepo,
-                "parent 1",
+                "parent 2",
                 ImmutableMap.of("foo", "foo-1", "bar", "bar-1"))
             .to("refs/heads/stable");
 
@@ -573,6 +573,25 @@
   }
 
   @Test
+  public void submitParentIsWorkInProgressChange() throws Throwable {
+    PushOneCommit.Result parent = pushTo("refs/for/master%wip");
+    PushOneCommit.Result change = createChange();
+    Change.Id num = parent.getChange().getId();
+    if (getSubmitType() == CHERRY_PICK) {
+      submit(change.getChangeId());
+    } else {
+      submitWithConflict(
+          change.getChangeId(),
+          "Failed to submit 2 changes due to the following problems:\n"
+              + "Change "
+              + num
+              + ": Change "
+              + num
+              + " is work in progress");
+    }
+  }
+
+  @Test
   public void submitWithHiddenBranchInSameTopic() throws Throwable {
     assume().that(isSubmitWholeTopicEnabled()).isTrue();
     PushOneCommit.Result visible = createChange("refs/for/master%topic=" + name("topic"));