Clean up hg cat command

This commit is contained in:
René Pfeuffer
2018-08-15 09:59:35 +02:00
parent 267ef50e51
commit 5d6fcffe5e
2 changed files with 44 additions and 97 deletions

View File

@@ -33,8 +33,7 @@
package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import com.aragost.javahg.commands.ExecutionException;
import com.google.common.io.ByteStreams;
import com.google.common.io.Closeables;
import sonia.scm.repository.Repository;
@@ -45,50 +44,18 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
//~--- JDK imports ------------------------------------------------------------
public class HgCatCommand extends AbstractCommand implements CatCommand {
/**
*
* @author Sebastian Sdorra
*/
public class HgCatCommand extends AbstractCommand implements CatCommand
{
/**
* Constructs ...
*
*
* @param context
* @param repository
*/
HgCatCommand(HgCommandContext context, Repository repository)
{
HgCatCommand(HgCommandContext context, Repository repository) {
super(context, repository);
}
//~--- get methods ----------------------------------------------------------
/**
* Method description
*
*
* @param request
* @param output
*
* @throws IOException
* @throws RepositoryException
*/
@Override
public void getCatResult(CatCommandRequest request, OutputStream output)
throws IOException, RepositoryException
{
public void getCatResult(CatCommandRequest request, OutputStream output) throws IOException, RepositoryException {
InputStream input = getCatResultStream(request);
try
{
try {
ByteStreams.copy(input, output);
}
finally
{
} finally {
Closeables.close(input, true);
}
}
@@ -100,6 +67,10 @@ public class HgCatCommand extends AbstractCommand implements CatCommand
cmd.rev(HgUtil.getRevision(request.getRevision()));
try {
return cmd.execute(request.getPath());
} catch (ExecutionException e) {
throw new RepositoryException(e);
}
}
}

View File

@@ -33,36 +33,21 @@
package sonia.scm.repository.spi;
//~--- non-JDK imports --------------------------------------------------------
import org.junit.Test;
import sonia.scm.repository.RepositoryException;
import static org.junit.Assert.*;
//~--- JDK imports ------------------------------------------------------------
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
*
* @author Sebastian Sdorra
*/
public class HgCatCommandTest extends AbstractHgCommandTestBase
{
import static org.junit.Assert.assertEquals;
//~--- JDK imports ------------------------------------------------------------
public class HgCatCommandTest extends AbstractHgCommandTestBase {
/**
* Method description
*
*
* @throws IOException
* @throws RepositoryException
*/
@Test
public void testCat() throws IOException, RepositoryException
{
public void testCat() throws IOException, RepositoryException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("a.txt");
@@ -70,48 +55,39 @@ public class HgCatCommandTest extends AbstractHgCommandTestBase
assertEquals("a", execute(request));
}
/**
* Method description
*
*
* @throws IOException
* @throws RepositoryException
*/
@Test
public void testSimpleCat() throws IOException, RepositoryException
{
public void testSimpleCat() throws IOException, RepositoryException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("b.txt");
assertEquals("b", execute(request));
}
/**
* Method description
*
*
* @param request
*
* @return
*
* @throws IOException
* @throws RepositoryException
*/
private String execute(CatCommandRequest request)
throws IOException, RepositoryException
{
String content = null;
@Test(expected = RepositoryException.class)
public void testUnknownFile() throws IOException, RepositoryException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("unknown");
execute(request);
}
@Test
public void testSimpleStream() throws IOException, RepositoryException {
CatCommandRequest request = new CatCommandRequest();
request.setPath("b.txt");
InputStream catResultStream = new HgCatCommand(cmdContext, repository).getCatResultStream(request);
assertEquals('b', catResultStream.read());
assertEquals('\n', catResultStream.read());
assertEquals(-1, catResultStream.read());
catResultStream.close();
}
private String execute(CatCommandRequest request) throws IOException, RepositoryException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try
{
new HgCatCommand(cmdContext, repository).getCatResult(request, baos);
}
finally
{
content = baos.toString().trim();
}
return content;
return baos.toString().trim();
}
}