Refactor test of capabilities output

A subsequent patch will dynamically generate the capability
advertisement, so the capability advertisements produced are not always
the same. Separate the checking of the advertisements into its own test
method.

Change-Id: I768d14b9d1a244d5d886c42ffd62ef3957b518fb
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
This commit is contained in:
Jonathan Tan 2018-05-02 16:35:48 -07:00 committed by Jonathan Nieder
parent e319a6f8d4
commit c9d4609ecb
1 changed files with 33 additions and 11 deletions

View File

@ -336,12 +336,12 @@ public UploadPack create(Object req, Repository db)
} }
/* /*
* Invokes UploadPack with protocol v2 and sends it the given lines. * Invokes UploadPack with protocol v2 and sends it the given lines,
* Returns UploadPack's output stream, not including the capability * and returns UploadPack's output stream.
* advertisement by the server.
*/ */
private ByteArrayInputStream uploadPackV2(RequestPolicy requestPolicy, private ByteArrayInputStream uploadPackV2Setup(RequestPolicy requestPolicy,
RefFilter refFilter, String... inputLines) throws Exception { RefFilter refFilter, String... inputLines) throws Exception {
ByteArrayOutputStream send = new ByteArrayOutputStream(); ByteArrayOutputStream send = new ByteArrayOutputStream();
PacketLineOut pckOut = new PacketLineOut(send); PacketLineOut pckOut = new PacketLineOut(send);
for (String line : inputLines) { for (String line : inputLines) {
@ -365,10 +365,37 @@ private ByteArrayInputStream uploadPackV2(RequestPolicy requestPolicy,
ByteArrayOutputStream recv = new ByteArrayOutputStream(); ByteArrayOutputStream recv = new ByteArrayOutputStream();
up.upload(new ByteArrayInputStream(send.toByteArray()), recv, null); up.upload(new ByteArrayInputStream(send.toByteArray()), recv, null);
ByteArrayInputStream recvStream = new ByteArrayInputStream(recv.toByteArray()); return new ByteArrayInputStream(recv.toByteArray());
}
/*
* Invokes UploadPack with protocol v2 and sends it the given lines.
* Returns UploadPack's output stream, not including the capability
* advertisement by the server.
*/
private ByteArrayInputStream uploadPackV2(RequestPolicy requestPolicy,
RefFilter refFilter, String... inputLines) throws Exception {
ByteArrayInputStream recvStream =
uploadPackV2Setup(requestPolicy, refFilter, inputLines);
PacketLineIn pckIn = new PacketLineIn(recvStream);
// drain capabilities
while (pckIn.readString() != PacketLineIn.END) {
// do nothing
}
return recvStream;
}
private ByteArrayInputStream uploadPackV2(String... inputLines) throws Exception {
return uploadPackV2(null, null, inputLines);
}
@Test
public void testV2Capabilities() throws Exception {
ByteArrayInputStream recvStream =
uploadPackV2Setup(null, null, PacketLineIn.END);
PacketLineIn pckIn = new PacketLineIn(recvStream); PacketLineIn pckIn = new PacketLineIn(recvStream);
// capability advertisement (always sent)
assertThat(pckIn.readString(), is("version 2")); assertThat(pckIn.readString(), is("version 2"));
assertThat( assertThat(
Arrays.asList(pckIn.readString(), pckIn.readString()), Arrays.asList(pckIn.readString(), pckIn.readString()),
@ -380,11 +407,6 @@ private ByteArrayInputStream uploadPackV2(RequestPolicy requestPolicy,
// commands without requiring test changes. // commands without requiring test changes.
hasItems("ls-refs", "fetch=shallow")); hasItems("ls-refs", "fetch=shallow"));
assertTrue(pckIn.readString() == PacketLineIn.END); assertTrue(pckIn.readString() == PacketLineIn.END);
return recvStream;
}
private ByteArrayInputStream uploadPackV2(String... inputLines) throws Exception {
return uploadPackV2(null, null, inputLines);
} }
@Test @Test