|
|
@@ -43,10 +43,12 @@ |
|
|
|
package org.eclipse.jgit.api; |
|
|
|
|
|
|
|
import static org.junit.Assert.assertEquals; |
|
|
|
import static org.junit.Assert.assertFalse; |
|
|
|
import static org.junit.Assert.assertTrue; |
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
import java.io.IOException; |
|
|
|
import java.nio.file.Path; |
|
|
|
|
|
|
|
import org.eclipse.jgit.api.CheckoutCommand.Stage; |
|
|
|
import org.eclipse.jgit.api.errors.JGitInternalException; |
|
|
@@ -59,6 +61,9 @@ import org.eclipse.jgit.lib.ObjectReader; |
|
|
|
import org.eclipse.jgit.lib.RepositoryState; |
|
|
|
import org.eclipse.jgit.lib.StoredConfig; |
|
|
|
import org.eclipse.jgit.revwalk.RevCommit; |
|
|
|
import org.eclipse.jgit.util.FS; |
|
|
|
import org.eclipse.jgit.util.FileUtils; |
|
|
|
import org.junit.Assume; |
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Test; |
|
|
|
|
|
|
@@ -73,6 +78,8 @@ public class PathCheckoutCommandTest extends RepositoryTestCase { |
|
|
|
|
|
|
|
private static final String FILE3 = "Test3.txt"; |
|
|
|
|
|
|
|
private static final String LINK = "link"; |
|
|
|
|
|
|
|
Git git; |
|
|
|
|
|
|
|
RevCommit initialCommit; |
|
|
@@ -98,6 +105,64 @@ public class PathCheckoutCommandTest extends RepositoryTestCase { |
|
|
|
git.commit().setMessage("Third commit").call(); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testUpdateSymLink() throws Exception { |
|
|
|
Assume.assumeTrue(FS.DETECTED.supportsSymlinks()); |
|
|
|
|
|
|
|
Path path = writeLink(LINK, FILE1); |
|
|
|
git.add().addFilepattern(LINK).call(); |
|
|
|
git.commit().setMessage("Added link").call(); |
|
|
|
assertEquals("3", read(path.toFile())); |
|
|
|
|
|
|
|
writeLink(LINK, FILE2); |
|
|
|
assertEquals("c", read(path.toFile())); |
|
|
|
|
|
|
|
CheckoutCommand co = git.checkout(); |
|
|
|
co.addPath(LINK).call(); |
|
|
|
|
|
|
|
assertEquals("3", read(path.toFile())); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testUpdateBrokenSymLinkToDirectory() throws Exception { |
|
|
|
Assume.assumeTrue(FS.DETECTED.supportsSymlinks()); |
|
|
|
|
|
|
|
Path path = writeLink(LINK, "f"); |
|
|
|
git.add().addFilepattern(LINK).call(); |
|
|
|
git.commit().setMessage("Added link").call(); |
|
|
|
assertEquals("f", FileUtils.readSymLink(path.toFile())); |
|
|
|
assertTrue(path.toFile().exists()); |
|
|
|
|
|
|
|
writeLink(LINK, "link_to_nowhere"); |
|
|
|
assertFalse(path.toFile().exists()); |
|
|
|
assertEquals("link_to_nowhere", FileUtils.readSymLink(path.toFile())); |
|
|
|
|
|
|
|
CheckoutCommand co = git.checkout(); |
|
|
|
co.addPath(LINK).call(); |
|
|
|
|
|
|
|
assertEquals("f", FileUtils.readSymLink(path.toFile())); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testUpdateBrokenSymLink() throws Exception { |
|
|
|
Assume.assumeTrue(FS.DETECTED.supportsSymlinks()); |
|
|
|
|
|
|
|
Path path = writeLink(LINK, FILE1); |
|
|
|
git.add().addFilepattern(LINK).call(); |
|
|
|
git.commit().setMessage("Added link").call(); |
|
|
|
assertEquals("3", read(path.toFile())); |
|
|
|
assertEquals(FILE1, FileUtils.readSymLink(path.toFile())); |
|
|
|
|
|
|
|
writeLink(LINK, "link_to_nowhere"); |
|
|
|
assertFalse(path.toFile().exists()); |
|
|
|
assertEquals("link_to_nowhere", FileUtils.readSymLink(path.toFile())); |
|
|
|
|
|
|
|
CheckoutCommand co = git.checkout(); |
|
|
|
co.addPath(LINK).call(); |
|
|
|
|
|
|
|
assertEquals("3", read(path.toFile())); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testUpdateWorkingDirectory() throws Exception { |
|
|
|
CheckoutCommand co = git.checkout(); |