]> source.dussan.org Git - jgit.git/commitdiff
Add pgm test for checkout of existing branch with checkout conflict 59/19059/8
authorAxel Richard <axel.richard@obeo.fr>
Thu, 28 Nov 2013 13:14:32 +0000 (14:14 +0100)
committerMatthias Sohn <matthias.sohn@sap.com>
Mon, 2 Dec 2013 21:55:55 +0000 (22:55 +0100)
Add a test that checks out an existing branch with a dirty working tree
and involves a checkout conflict. This test should pass with a message:
"error: Your local changes to the following files would be overwritten
by checkout: a".

Change-Id: I5428a04a7630d9e0101404ea1aedd796f127bd7d
Signed-off-by: Axel Richard <axel.richard@obeo.fr>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java

index 48cb5c54ca85750d5c9cf13f9cf8b32c9b52f231..a6ea48c0eaefdfee462cd00ca4dd8d31794a1638 100644 (file)
  */
 package org.eclipse.jgit.pgm;
 
+import java.io.File;
+
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.lib.CLIRepositoryTestCase;
+import org.eclipse.jgit.util.FileUtils;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -107,6 +110,29 @@ public class CheckoutTest extends CLIRepositoryTestCase {
                assertEquals("", execute("git checkout HEAD"));
        }
 
+       @Test
+       public void testCheckoutExistingBranchWithConflict() throws Exception {
+               Git git = new Git(db);
+               writeTrashFile("a", "Hello world a");
+               git.add().addFilepattern(".").call();
+               git.commit().setMessage("commit file a").call();
+               git.branchCreate().setName("branch_1").call();
+               git.rm().addFilepattern("a").call();
+               FileUtils.mkdirs(new File(db.getWorkTree(), "a"));
+               writeTrashFile("a/b", "Hello world b");
+               git.add().addFilepattern("a/b").call();
+               git.commit().setMessage("commit folder a").call();
+               git.rm().addFilepattern("a").call();
+               writeTrashFile("a", "New Hello world a");
+               git.add().addFilepattern(".").call();
+
+               String[] execute = execute("git checkout branch_1");
+               Assert.assertEquals(
+                               "error: Your local changes to the following files would be overwritten by checkout:",
+                               execute[0]);
+               Assert.assertEquals("\ta", execute[1]);
+       }
+
        static private void assertEquals(String expected, String[] actual) {
                // if there is more than one line, ignore last one if empty
                Assert.assertEquals(