import org.junit.Test;
public class CheckoutTest extends CLIRepositoryTestCase {
+ /**
+ * Executes specified git command (with arguments), captures exception and
+ * returns its message as an array of lines. Throws an AssertionError if no
+ * exception is thrown.
+ *
+ * @param command
+ * a valid git command line, e.g. "git branch -h"
+ * @return message contained within the exception
+ */
+ private String[] executeExpectingException(String command) {
+ try {
+ execute(command);
+ throw new AssertionError("Expected Die");
+ } catch (Exception e) {
+ return e.getMessage().split(System.lineSeparator());
+ }
+ }
@Test
public void testCheckoutSelf() throws Exception {
public void testCheckoutNonExistingBranch() throws Exception {
assertStringArrayEquals(
"error: pathspec 'side' did not match any file(s) known to git.",
- execute("git checkout side"));
+ executeExpectingException("git checkout side"));
}
@Test
public void testCheckoutUnresolvedHead() throws Exception {
assertStringArrayEquals(
"error: pathspec 'HEAD' did not match any file(s) known to git.",
- execute("git checkout HEAD"));
+ executeExpectingException("git checkout HEAD"));
}
@Test
writeTrashFile("a", "New Hello world a");
git.add().addFilepattern(".").call();
- String[] execute = execute("git checkout branch_1");
+ String[] execute = executeExpectingException(
+ "git checkout branch_1");
assertEquals(
"error: Your local changes to the following files would be overwritten by checkout:",
execute[0]);
CLIText.get().switchedToBranch,
Repository.shortenRefName(ref.getName())));
} catch (RefNotFoundException e) {
- outw.println(MessageFormat.format(
- CLIText.get().pathspecDidNotMatch,
- name));
+ throw die(MessageFormat
+ .format(CLIText.get().pathspecDidNotMatch, name), e);
} catch (RefAlreadyExistsException e) {
- throw die(MessageFormat.format(CLIText.get().branchAlreadyExists,
- name));
+ throw die(MessageFormat
+ .format(CLIText.get().branchAlreadyExists, name));
} catch (CheckoutConflictException e) {
- outw.println(CLIText.get().checkoutConflict);
- for (String path : e.getConflictingPaths())
- outw.println(MessageFormat.format(
+ StringBuilder builder = new StringBuilder();
+ builder.append(CLIText.get().checkoutConflict);
+ builder.append(System.lineSeparator());
+ for (String path : e.getConflictingPaths()) {
+ builder.append(MessageFormat.format(
CLIText.get().checkoutConflictPathLine, path));
+ builder.append(System.lineSeparator());
+ }
+ throw die(builder.toString(), e);
}
}
}