]> source.dussan.org Git - jgit.git/commitdiff
Allow commandline tests to use raw output 46/8746/2
authorJonathan Nieder <jrn@google.com>
Fri, 16 Nov 2012 23:16:18 +0000 (15:16 -0800)
committerJonathan Nieder <jrn@google.com>
Fri, 16 Nov 2012 23:45:52 +0000 (15:45 -0800)
Introduce a new CLIGitCommand.rawExecute() helper that behaves
just like execute() except that instead of processing its output
it returns it raw.

So now you can do

final byte[] expect = { 0, 1, 2, 3 };
final byte[] actual = CLIGitCommand.rawExecute(
"git show HEAD:goo.raw", db);
assertArrayEquals(expect, actual);

to test the output from "git show HEAD:goo.raw" without being
distracted by encoding issues.

Noticed while writing tests for a new "jgit archive" command that
writes its output in ZIP format.

Change-Id: I2fe6020a537975d0ccf414b7125d85d6cd86898c

org.eclipse.jgit.pgm.test/src/org/eclipse/jgit/pgm/CLIGitCommand.java

index 982aa95216cb7dffa7d8cdbe42eea711b5da729e..78706da3147b2ad63da0f5c949778d3607a758b1 100644 (file)
@@ -70,6 +70,16 @@ public class CLIGitCommand {
 
        public static List<String> execute(String str, Repository db)
                        throws Exception {
+               try {
+                       return IO.readLines(new String(rawExecute(str, db)));
+               } catch (Die e) {
+                       return IO.readLines(MessageFormat.format(CLIText.get().fatalError,
+                                       e.getMessage()));
+               }
+       }
+
+       public static byte[] rawExecute(String str, Repository db)
+                       throws Exception {
                String[] args = split(str);
                if (!args[0].equalsIgnoreCase("git") || args.length < 2)
                        throw new IllegalArgumentException(
@@ -91,14 +101,11 @@ public class CLIGitCommand {
                try {
                        cmd.execute(bean.getArguments().toArray(
                                        new String[bean.getArguments().size()]));
-               } catch (Die e) {
-                       return IO.readLines(MessageFormat.format(CLIText.get().fatalError,
-                                       e.getMessage()));
                } finally {
                        if (cmd.outw != null)
                                cmd.outw.flush();
                }
-               return IO.readLines(baos.toString());
+               return baos.toByteArray();
        }
 
        /**