|
|
@@ -45,6 +45,7 @@ package org.eclipse.jgit.api; |
|
|
|
import static org.junit.Assert.assertEquals; |
|
|
|
import static org.junit.Assert.fail; |
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
import java.io.IOException; |
|
|
|
|
|
|
|
import org.eclipse.jgit.api.ListBranchCommand.ListMode; |
|
|
@@ -53,6 +54,7 @@ import org.eclipse.jgit.api.errors.JGitInternalException; |
|
|
|
import org.eclipse.jgit.errors.RepositoryNotFoundException; |
|
|
|
import org.eclipse.jgit.junit.RepositoryTestCase; |
|
|
|
import org.eclipse.jgit.lib.Repository; |
|
|
|
import org.eclipse.jgit.util.FileUtils; |
|
|
|
import org.junit.After; |
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Test; |
|
|
@@ -123,4 +125,30 @@ public class GitConstructionTest extends RepositoryTestCase { |
|
|
|
// should not get here |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
/** |
|
|
|
* Tests that a repository with packfiles can be deleted after calling |
|
|
|
* Git.close(). On Windows the first try to delete the worktree will fail |
|
|
|
* (because file handles on packfiles are still open) but the second |
|
|
|
* attempt after a close will succeed. |
|
|
|
* |
|
|
|
* @throws IOException |
|
|
|
* @throws JGitInternalException |
|
|
|
* @throws GitAPIException |
|
|
|
*/ |
|
|
|
public void testClose() throws IOException, JGitInternalException, |
|
|
|
GitAPIException { |
|
|
|
File workTree = db.getWorkTree(); |
|
|
|
Git git = Git.wrap(db); |
|
|
|
git.gc().setExpire(null).call(); |
|
|
|
git.checkout().setName(git.getRepository().resolve("HEAD^").getName()) |
|
|
|
.call(); |
|
|
|
try { |
|
|
|
FileUtils.delete(workTree, FileUtils.RECURSIVE); |
|
|
|
} catch (IOException e) { |
|
|
|
git.close(); |
|
|
|
FileUtils.delete(workTree, FileUtils.RECURSIVE); |
|
|
|
} |
|
|
|
} |
|
|
|
} |