diff options
author | Matthias Sohn <matthias.sohn@sap.com> | 2022-01-18 18:09:03 +0100 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2022-01-18 18:09:03 +0100 |
commit | d017a655dfbdac2393ec645c6864e190cf55516c (patch) | |
tree | 78ac24871d7ff3ce5ea999c8276e301950ee7080 /org.eclipse.jgit.test | |
parent | d30447e2699d217fe70b52c4fa74674445e48f64 (diff) | |
parent | de1abd323763dc88c46dbbfaca6e23b640a4ce5e (diff) | |
download | jgit-d017a655dfbdac2393ec645c6864e190cf55516c.tar.gz jgit-d017a655dfbdac2393ec645c6864e190cf55516c.zip |
Merge branch 'stable-6.0'
* stable-6.0:
UploadPack v2 protocol: Stop negotiation for orphan refs
Complete update to servlet api 4.0.0
Change-Id: I55ab6e8fd4a76e4313e37b12f9fc5d5e4b84a681
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java index 1c5a521801..7131905850 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java @@ -1107,6 +1107,61 @@ public class UploadPackTest { } @Test + public void testV2FetchServerStopsNegotiationForRefWithoutParents() + throws Exception { + RevCommit fooCommit = remote.commit().message("x").create(); + RevCommit barCommit = remote.commit().message("y").create(); + remote.update("refs/changes/01/1/1", fooCommit); + remote.update("refs/changes/02/2/1", barCommit); + + ByteArrayInputStream recvStream = uploadPackV2("command=fetch\n", + PacketLineIn.delimiter(), + "want " + fooCommit.toObjectId().getName() + "\n", + "have " + barCommit.toObjectId().getName() + "\n", + PacketLineIn.end()); + PacketLineIn pckIn = new PacketLineIn(recvStream); + + assertThat(pckIn.readString(), is("acknowledgments")); + assertThat(pckIn.readString(), + is("ACK " + barCommit.toObjectId().getName())); + assertThat(pckIn.readString(), is("ready")); + assertTrue(PacketLineIn.isDelimiter(pckIn.readString())); + assertThat(pckIn.readString(), is("packfile")); + parsePack(recvStream); + assertTrue(client.getObjectDatabase().has(fooCommit.toObjectId())); + } + + @Test + public void testV2FetchServerDoesNotStopNegotiationWhenOneRefWithoutParentAndOtherWithParents() + throws Exception { + RevCommit fooCommit = remote.commit().message("x").create(); + RevCommit barParent = remote.commit().message("y").create(); + RevCommit barChild = remote.commit().message("y").parent(barParent) + .create(); + RevCommit fooBarParent = remote.commit().message("z").create(); + RevCommit fooBarChild = remote.commit().message("y") + .parent(fooBarParent) + .create(); + remote.update("refs/changes/01/1/1", fooCommit); + remote.update("refs/changes/02/2/1", barChild); + remote.update("refs/changes/03/3/1", fooBarChild); + + ByteArrayInputStream recvStream = uploadPackV2("command=fetch\n", + PacketLineIn.delimiter(), + "want " + fooCommit.toObjectId().getName() + "\n", + "want " + barChild.toObjectId().getName() + "\n", + "want " + fooBarChild.toObjectId().getName() + "\n", + "have " + fooBarParent.toObjectId().getName() + "\n", + PacketLineIn.end()); + PacketLineIn pckIn = new PacketLineIn(recvStream); + + assertThat(pckIn.readString(), is("acknowledgments")); + assertThat(pckIn.readString(), + is("ACK " + fooBarParent.toObjectId().getName())); + assertTrue(PacketLineIn.isEnd(pckIn.readString())); + } + + @Test public void testV2FetchThinPack() throws Exception { String commonInBlob = "abcdefghijklmnopqrstuvwxyz"; |