diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
index c472128..cb36aaa 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
@@ -634,34 +634,6 @@
   }
 
   @Test
-  public void testTopicEditedListener_withQuotes() throws Exception {
-    Project.NameKey manifestNameKey = defaultSetup();
-    // Create initial change
-    PushOneCommit.Result result =
-        createChange(testRepo, "master", "subject", "filename", "content", "testtopic");
-    // Project name is scoped by test, so we need to get it from our initial change
-    String projectName = result.getChange().project().get();
-    createBranch(BranchNameKey.create(projectName, "ds_one"));
-    createBranch(BranchNameKey.create(projectName, "ds_two"));
-    pushDefaultConfig("automerger.config", manifestNameKey.get(), projectName, "ds_one", "ds_two");
-    // After we upload our config, we upload a new patchset to create the downstreams
-    amendChange(result.getChangeId());
-    result.assertOkStatus();
-    gApi.changes().id(result.getChangeId()).topic("multiple words");
-    gApi.changes().id(result.getChangeId()).topic("with\"quotes\"inside");
-    // Gerrit fails to submit changes in the same topic together if it contains quotes.
-    gApi.changes().id(result.getChangeId()).topic("without quotes anymore");
-    // Check that there are the correct number of changes in the topic
-    List<ChangeInfo> changesInTopic =
-        gApi.changes()
-            .query("topic:{" + gApi.changes().id(result.getChangeId()).topic() + "}")
-            .get();
-    assertThat(changesInTopic).hasSize(3);
-    // +2 and submit
-    merge(result);
-  }
-
-  @Test
   public void testTopicEditedListener_withBraces() throws Exception {
     Project.NameKey manifestNameKey = defaultSetup();
     // Create initial change
