123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- /*
- * Copyright (C) 2012, 2014 IBM Corporation and others. and others
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0 which is available at
- * https://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- package org.eclipse.jgit.pgm;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertFalse;
- import static org.junit.Assert.assertTrue;
- import static org.junit.Assert.fail;
-
- import java.io.File;
-
- import org.eclipse.jgit.api.Git;
- import org.eclipse.jgit.lib.CLIRepositoryTestCase;
- import org.eclipse.jgit.lib.Constants;
- import org.eclipse.jgit.lib.RefUpdate;
- import org.eclipse.jgit.pgm.internal.CLIText;
- import org.eclipse.jgit.revwalk.RevCommit;
- import org.junit.Before;
- import org.junit.Test;
-
- public class BranchTest extends CLIRepositoryTestCase {
- @Override
- @Before
- public void setUp() throws Exception {
- super.setUp();
- try (Git git = new Git(db)) {
- git.commit().setMessage("initial commit").call();
- }
- }
-
- @Test
- public void testHelpAfterDelete() throws Exception {
- String err = toString(executeUnchecked("git branch -d"));
- String help = toString(executeUnchecked("git branch -h"));
- String errAndHelp = toString(executeUnchecked("git branch -d -h"));
- assertEquals(CLIText.fatalError(CLIText.get().branchNameRequired), err);
- assertEquals(toString(err, help), errAndHelp);
- }
-
- @Test
- public void testList() throws Exception {
- assertEquals("* master", toString(execute("git branch")));
- assertEquals("* master 6fd41be initial commit",
- toString(execute("git branch -v")));
- }
-
- @Test
- public void testListDetached() throws Exception {
- RefUpdate updateRef = db.updateRef(Constants.HEAD, true);
- updateRef.setNewObjectId(db.resolve("6fd41be"));
- updateRef.update();
- assertEquals(
- toString("* (no branch) 6fd41be initial commit",
- "master 6fd41be initial commit"),
- toString(execute("git branch -v")));
- }
-
- @Test
- public void testListContains() throws Exception {
- try (Git git = new Git(db)) {
- git.branchCreate().setName("initial").call();
- RevCommit second = git.commit().setMessage("second commit")
- .call();
- assertEquals(toString(" initial", "* master"),
- toString(execute("git branch --contains 6fd41be")));
- assertEquals("* master",
- toString(execute("git branch --contains " + second.name())));
- }
- }
-
- @Test
- public void testExistingBranch() throws Exception {
- assertEquals("fatal: A branch named 'master' already exists.",
- toString(executeUnchecked("git branch master")));
- }
-
- @Test
- public void testRenameSingleArg() throws Exception {
- try {
- toString(execute("git branch -m"));
- fail("Must die");
- } catch (Die e) {
- // expected, requires argument
- }
- String result = toString(execute("git branch -m slave"));
- assertEquals("", result);
- result = toString(execute("git branch -a"));
- assertEquals("* slave", result);
- }
-
- @Test
- public void testRenameTwoArgs() throws Exception {
- String result = toString(execute("git branch -m master slave"));
- assertEquals("", result);
- result = toString(execute("git branch -a"));
- assertEquals("* slave", result);
- }
-
- @Test
- public void testCreate() throws Exception {
- try {
- toString(execute("git branch a b"));
- fail("Must die");
- } catch (Die e) {
- // expected, too many arguments
- }
- String result = toString(execute("git branch second"));
- assertEquals("", result);
- result = toString(execute("git branch"));
- assertEquals(toString("* master", "second"), result);
- result = toString(execute("git branch -v"));
- assertEquals(toString("* master 6fd41be initial commit",
- "second 6fd41be initial commit"), result);
- }
-
- @Test
- public void testDelete() throws Exception {
- try {
- toString(execute("git branch -d"));
- fail("Must die");
- } catch (Die e) {
- // expected, requires argument
- }
- String result = toString(execute("git branch second"));
- assertEquals("", result);
- result = toString(execute("git branch -d second"));
- assertEquals("", result);
- result = toString(execute("git branch"));
- assertEquals("* master", result);
- }
-
- @Test
- public void testDeleteMultiple() throws Exception {
- String result = toString(execute("git branch second",
- "git branch third", "git branch fourth"));
- assertEquals("", result);
- result = toString(execute("git branch -d second third fourth"));
- assertEquals("", result);
- result = toString(execute("git branch"));
- assertEquals("* master", result);
- }
-
- @Test
- public void testDeleteForce() throws Exception {
- try {
- toString(execute("git branch -D"));
- fail("Must die");
- } catch (Die e) {
- // expected, requires argument
- }
- String result = toString(execute("git branch second"));
- assertEquals("", result);
- result = toString(execute("git checkout second"));
- assertEquals("Switched to branch 'second'", result);
-
- File a = writeTrashFile("a", "a");
- assertTrue(a.exists());
- execute("git add a", "git commit -m 'added a'");
-
- result = toString(execute("git checkout master"));
- assertEquals("Switched to branch 'master'", result);
-
- result = toString(execute("git branch"));
- assertEquals(toString("* master", "second"), result);
-
- try {
- toString(execute("git branch -d second"));
- fail("Must die");
- } catch (Die e) {
- // expected, the current HEAD is on second and not merged to master
- }
- result = toString(execute("git branch -D second"));
- assertEquals("", result);
-
- result = toString(execute("git branch"));
- assertEquals("* master", result);
- }
-
- @Test
- public void testDeleteForceMultiple() throws Exception {
- String result = toString(execute("git branch second",
- "git branch third", "git branch fourth"));
-
- assertEquals("", result);
- result = toString(execute("git checkout second"));
- assertEquals("Switched to branch 'second'", result);
-
- File a = writeTrashFile("a", "a");
- assertTrue(a.exists());
- execute("git add a", "git commit -m 'added a'");
-
- result = toString(execute("git checkout master"));
- assertEquals("Switched to branch 'master'", result);
-
- result = toString(execute("git branch"));
- assertEquals(toString("fourth", "* master", "second", "third"), result);
-
- try {
- toString(execute("git branch -d second third fourth"));
- fail("Must die");
- } catch (Die e) {
- // expected, the current HEAD is on second and not merged to master
- }
- result = toString(execute("git branch"));
- assertEquals(toString("fourth", "* master", "second", "third"), result);
-
- result = toString(execute("git branch -D second third fourth"));
- assertEquals("", result);
-
- result = toString(execute("git branch"));
- assertEquals("* master", result);
- }
-
- @Test
- public void testCreateFromOldCommit() throws Exception {
- File a = writeTrashFile("a", "a");
- assertTrue(a.exists());
- execute("git add a", "git commit -m 'added a'");
- File b = writeTrashFile("b", "b");
- assertTrue(b.exists());
- execute("git add b", "git commit -m 'added b'");
- String result = toString(execute("git log -n 1 --reverse"));
- String firstCommitId = result.substring("commit ".length(),
- result.indexOf('\n'));
-
- result = toString(execute("git branch -f second " + firstCommitId));
- assertEquals("", result);
-
- result = toString(execute("git branch"));
- assertEquals(toString("* master", "second"), result);
-
- result = toString(execute("git checkout second"));
- assertEquals("Switched to branch 'second'", result);
- assertFalse(b.exists());
- }
- }
|