From ddb12b003f5f7654bd8aeb45e4b4c879358ead00 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 28 Jul 2016 12:16:24 +0900 Subject: [PATCH] LfsServerTest: Treat response body as UTF-8 when decoding error message Change-Id: I495f0b60b7128fff27502641e6a5d05f888d4e8a Signed-off-by: David Pursehouse --- .../jgit/lfs/server/fs/LfsServerTest.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/org.eclipse.jgit.lfs.server.test/tst/org/eclipse/jgit/lfs/server/fs/LfsServerTest.java b/org.eclipse.jgit.lfs.server.test/tst/org/eclipse/jgit/lfs/server/fs/LfsServerTest.java index b4a4228901..2dab6ea5ef 100644 --- a/org.eclipse.jgit.lfs.server.test/tst/org/eclipse/jgit/lfs/server/fs/LfsServerTest.java +++ b/org.eclipse.jgit.lfs.server.test/tst/org/eclipse/jgit/lfs/server/fs/LfsServerTest.java @@ -42,10 +42,10 @@ */ package org.eclipse.jgit.lfs.server.fs; +import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.Assert.assertEquals; import java.io.BufferedInputStream; -import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -80,6 +80,7 @@ import org.eclipse.jgit.lfs.lib.Constants; import org.eclipse.jgit.lfs.lib.LongObjectId; import org.eclipse.jgit.lfs.test.LongObjectIdTestUtils; import org.eclipse.jgit.util.FileUtils; +import org.eclipse.jgit.util.IO; import org.junit.After; import org.junit.Before; @@ -189,15 +190,17 @@ public abstract class LfsServerTest { if (statusLine.getStatusCode() >= 400) { String error; try { - BufferedInputStream bis = new BufferedInputStream( - response.getEntity().getContent()); - ByteArrayOutputStream buf = new ByteArrayOutputStream(); - int result = bis.read(); - while (result != -1) { - buf.write((byte) result); - result = bis.read(); + ByteBuffer buf = IO.readWholeStream(new BufferedInputStream( + response.getEntity().getContent()), 1024); + if (buf.hasArray()) { + error = new String(buf.array(), + buf.arrayOffset() + buf.position(), buf.remaining(), + UTF_8); + } else { + final byte[] b = new byte[buf.remaining()]; + buf.duplicate().get(b); + error = new String(b, UTF_8); } - error = buf.toString(); } catch (IOException e) { error = statusLine.getReasonPhrase(); } -- 2.39.5