|
|
|
@ -46,6 +46,10 @@ import java.io.File;
|
|
|
|
|
|
|
|
|
|
import org.eclipse.jgit.api.Git; |
|
|
|
|
import org.eclipse.jgit.lib.CLIRepositoryTestCase; |
|
|
|
|
import org.eclipse.jgit.lib.FileMode; |
|
|
|
|
import org.eclipse.jgit.lib.Ref; |
|
|
|
|
import org.eclipse.jgit.treewalk.FileTreeIterator; |
|
|
|
|
import org.eclipse.jgit.treewalk.FileTreeIterator.FileEntry; |
|
|
|
|
import org.eclipse.jgit.util.FileUtils; |
|
|
|
|
import org.junit.Assert; |
|
|
|
|
import org.junit.Test; |
|
|
|
@ -133,6 +137,52 @@ public class CheckoutTest extends CLIRepositoryTestCase {
|
|
|
|
|
Assert.assertEquals("\ta", execute[1]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Steps: |
|
|
|
|
* <ol> |
|
|
|
|
* <li>Add file 'a' and 'b' |
|
|
|
|
* <li>Commit |
|
|
|
|
* <li>Create branch '1' |
|
|
|
|
* <li>modify file 'a' |
|
|
|
|
* <li>Commit |
|
|
|
|
* <li>Delete file 'a' in the working tree |
|
|
|
|
* <li>Checkout branch '1' |
|
|
|
|
* </ol> |
|
|
|
|
* The working tree should contain 'a' with FileMode.REGULAR_FILE after the |
|
|
|
|
* checkout. |
|
|
|
|
* |
|
|
|
|
* @throws Exception |
|
|
|
|
*/ |
|
|
|
|
@Test |
|
|
|
|
public void testCheckoutWithMissingWorkingTreeFile() throws Exception { |
|
|
|
|
Git git = new Git(db); |
|
|
|
|
File fileA = writeTrashFile("a", "Hello world a"); |
|
|
|
|
writeTrashFile("b", "Hello world b"); |
|
|
|
|
git.add().addFilepattern(".").call(); |
|
|
|
|
git.commit().setMessage("add files a & b").call(); |
|
|
|
|
Ref branch_1 = git.branchCreate().setName("branch_1").call(); |
|
|
|
|
writeTrashFile("a", "b"); |
|
|
|
|
git.add().addFilepattern("a").call(); |
|
|
|
|
git.commit().setMessage("modify file a").call(); |
|
|
|
|
|
|
|
|
|
FileEntry entry = new FileTreeIterator.FileEntry(new File( |
|
|
|
|
db.getWorkTree(), "a"), db.getFS()); |
|
|
|
|
assertEquals(FileMode.REGULAR_FILE, entry.getMode()); |
|
|
|
|
|
|
|
|
|
FileUtils.delete(fileA); |
|
|
|
|
|
|
|
|
|
git.checkout().setName(branch_1.getName()).call(); |
|
|
|
|
|
|
|
|
|
entry = new FileTreeIterator.FileEntry(new File(db.getWorkTree(), "a"), |
|
|
|
|
db.getFS()); |
|
|
|
|
assertEquals(FileMode.REGULAR_FILE, entry.getMode()); |
|
|
|
|
assertEquals("Hello world a", read(fileA)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static private void assertEquals(Object expected, Object actual) { |
|
|
|
|
Assert.assertEquals(expected, actual); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static private void assertEquals(String expected, String[] actual) { |
|
|
|
|
// if there is more than one line, ignore last one if empty
|
|
|
|
|
Assert.assertEquals( |
|
|
|
|