Close some Repository instances in tests
This doesn't yet ensure that _all_ repositories are closed. It only handles the obvious, local, and easy cases. Change-Id: I0f9f8607791f0f03ed1f5ad71e9595e78b78892f Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
This commit is contained in:
parent
1b8da0dcfa
commit
123634e2aa
|
@ -1132,11 +1132,11 @@ public boolean isCaseSensitive() {
|
|||
}
|
||||
};
|
||||
|
||||
Git git = Git.open(db.getDirectory(), executableFs);
|
||||
String path = "a.txt";
|
||||
String path2 = "a.sh";
|
||||
writeTrashFile(path, "content");
|
||||
writeTrashFile(path2, "binary: content");
|
||||
try (Git git = Git.open(db.getDirectory(), executableFs)) {
|
||||
git.add().addFilepattern(path).addFilepattern(path2).call();
|
||||
RevCommit commit1 = git.commit().setMessage("commit").call();
|
||||
try (TreeWalk walk = new TreeWalk(db)) {
|
||||
|
@ -1148,15 +1148,15 @@ public boolean isCaseSensitive() {
|
|||
assertEquals(path, walk.getPathString());
|
||||
assertEquals(FileMode.REGULAR_FILE, walk.getFileMode(0));
|
||||
}
|
||||
|
||||
}
|
||||
config = db.getConfig();
|
||||
config.setBoolean(ConfigConstants.CONFIG_CORE_SECTION, null,
|
||||
ConfigConstants.CONFIG_KEY_FILEMODE, false);
|
||||
config.save();
|
||||
|
||||
Git git2 = Git.open(db.getDirectory(), executableFs);
|
||||
writeTrashFile(path2, "content2");
|
||||
writeTrashFile(path, "binary: content2");
|
||||
try (Git git2 = Git.open(db.getDirectory(), executableFs)) {
|
||||
git2.add().addFilepattern(path).addFilepattern(path2).call();
|
||||
RevCommit commit2 = git2.commit().setMessage("commit2").call();
|
||||
try (TreeWalk walk = new TreeWalk(db)) {
|
||||
|
@ -1169,6 +1169,7 @@ public boolean isCaseSensitive() {
|
|||
assertEquals(FileMode.REGULAR_FILE, walk.getFileMode(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddGitlink() throws Exception {
|
||||
|
@ -1291,7 +1292,7 @@ private void createNestedRepo(String path) throws IOException {
|
|||
FileRepositoryBuilder nestedBuilder = new FileRepositoryBuilder();
|
||||
nestedBuilder.setWorkTree(gitLinkDir);
|
||||
|
||||
Repository nestedRepo = nestedBuilder.build();
|
||||
try (Repository nestedRepo = nestedBuilder.build()) {
|
||||
nestedRepo.create();
|
||||
|
||||
writeTrashFile(path, "README1.md", "content");
|
||||
|
@ -1306,3 +1307,4 @@ private void createNestedRepo(String path) throws IOException {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -468,14 +468,13 @@ public void testWritePack4SizeThinVsNoThin() throws Exception {
|
|||
@Test
|
||||
public void testDeltaStatistics() throws Exception {
|
||||
config.setDeltaCompress(true);
|
||||
// TestRepository will close repo
|
||||
FileRepository repo = createBareRepository();
|
||||
ArrayList<RevObject> blobs = new ArrayList<>();
|
||||
try (TestRepository<FileRepository> testRepo = new TestRepository<>(
|
||||
repo)) {
|
||||
blobs.add(testRepo.blob(genDeltableData(1000)));
|
||||
blobs.add(testRepo.blob(genDeltableData(1005)));
|
||||
}
|
||||
|
||||
try (PackWriter pw = new PackWriter(repo)) {
|
||||
NullProgressMonitor m = NullProgressMonitor.INSTANCE;
|
||||
pw.preparePack(blobs.iterator());
|
||||
|
@ -486,6 +485,7 @@ public void testDeltaStatistics() throws Exception {
|
|||
stats.byObjectType(OBJ_BLOB).getDeltaBytes() > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Generate consistent junk data for building files that delta well
|
||||
private String genDeltableData(int length) {
|
||||
|
@ -535,6 +535,7 @@ public void testWriteIndex() throws Exception {
|
|||
|
||||
@Test
|
||||
public void testExclude() throws Exception {
|
||||
// TestRepository closes repo
|
||||
FileRepository repo = createBareRepository();
|
||||
|
||||
try (TestRepository<FileRepository> testRepo = new TestRepository<>(
|
||||
|
@ -568,8 +569,7 @@ private static void assertContent(PackIndex pi, List<ObjectId> expected) {
|
|||
|
||||
@Test
|
||||
public void testShallowIsMinimalDepth1() throws Exception {
|
||||
FileRepository repo = setupRepoForShallowFetch();
|
||||
|
||||
try (FileRepository repo = setupRepoForShallowFetch()) {
|
||||
PackIndex idx = writeShallowPack(repo, 1, wants(c2), NONE, NONE);
|
||||
assertContent(idx, Arrays.asList(c2.getId(), c2.getTree().getId(),
|
||||
contentA.getId(), contentB.getId()));
|
||||
|
@ -579,11 +579,11 @@ public void testShallowIsMinimalDepth1() throws Exception {
|
|||
assertContent(idx, Arrays.asList(c5.getId(), c5.getTree().getId(),
|
||||
contentC.getId(), contentD.getId(), contentE.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShallowIsMinimalDepth2() throws Exception {
|
||||
FileRepository repo = setupRepoForShallowFetch();
|
||||
|
||||
try (FileRepository repo = setupRepoForShallowFetch()) {
|
||||
PackIndex idx = writeShallowPack(repo, 2, wants(c2), NONE, NONE);
|
||||
assertContent(idx,
|
||||
Arrays.asList(c1.getId(), c2.getId(), c1.getTree().getId(),
|
||||
|
@ -591,75 +591,80 @@ public void testShallowIsMinimalDepth2() throws Exception {
|
|||
contentB.getId()));
|
||||
|
||||
// Client already has blobs A and B, verify those are not packed.
|
||||
idx = writeShallowPack(repo, 2, wants(c5), haves(c1, c2), shallows(c1));
|
||||
idx = writeShallowPack(repo, 2, wants(c5), haves(c1, c2),
|
||||
shallows(c1));
|
||||
assertContent(idx,
|
||||
Arrays.asList(c4.getId(), c5.getId(), c4.getTree().getId(),
|
||||
c5.getTree().getId(), contentC.getId(),
|
||||
contentD.getId(), contentE.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShallowFetchShallowParentDepth1() throws Exception {
|
||||
FileRepository repo = setupRepoForShallowFetch();
|
||||
|
||||
try (FileRepository repo = setupRepoForShallowFetch()) {
|
||||
PackIndex idx = writeShallowPack(repo, 1, wants(c5), NONE, NONE);
|
||||
assertContent(idx,
|
||||
Arrays.asList(c5.getId(), c5.getTree().getId(),
|
||||
assertContent(idx, Arrays.asList(c5.getId(), c5.getTree().getId(),
|
||||
contentA.getId(), contentB.getId(), contentC.getId(),
|
||||
contentD.getId(), contentE.getId()));
|
||||
|
||||
idx = writeShallowPack(repo, 1, wants(c4), haves(c5), shallows(c5));
|
||||
assertContent(idx, Arrays.asList(c4.getId(), c4.getTree().getId()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShallowFetchShallowParentDepth2() throws Exception {
|
||||
FileRepository repo = setupRepoForShallowFetch();
|
||||
|
||||
try (FileRepository repo = setupRepoForShallowFetch()) {
|
||||
PackIndex idx = writeShallowPack(repo, 2, wants(c5), NONE, NONE);
|
||||
assertContent(idx,
|
||||
Arrays.asList(c4.getId(), c5.getId(), c4.getTree().getId(),
|
||||
c5.getTree().getId(), contentA.getId(),
|
||||
contentB.getId(), contentC.getId(), contentD.getId(),
|
||||
contentE.getId()));
|
||||
contentB.getId(), contentC.getId(),
|
||||
contentD.getId(), contentE.getId()));
|
||||
|
||||
idx = writeShallowPack(repo, 2, wants(c3), haves(c4, c5), shallows(c4));
|
||||
idx = writeShallowPack(repo, 2, wants(c3), haves(c4, c5),
|
||||
shallows(c4));
|
||||
assertContent(idx, Arrays.asList(c2.getId(), c3.getId(),
|
||||
c2.getTree().getId(), c3.getTree().getId()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShallowFetchShallowAncestorDepth1() throws Exception {
|
||||
FileRepository repo = setupRepoForShallowFetch();
|
||||
|
||||
try (FileRepository repo = setupRepoForShallowFetch()) {
|
||||
PackIndex idx = writeShallowPack(repo, 1, wants(c5), NONE, NONE);
|
||||
assertContent(idx,
|
||||
Arrays.asList(c5.getId(), c5.getTree().getId(),
|
||||
assertContent(idx, Arrays.asList(c5.getId(), c5.getTree().getId(),
|
||||
contentA.getId(), contentB.getId(), contentC.getId(),
|
||||
contentD.getId(), contentE.getId()));
|
||||
|
||||
idx = writeShallowPack(repo, 1, wants(c3), haves(c5), shallows(c5));
|
||||
assertContent(idx, Arrays.asList(c3.getId(), c3.getTree().getId()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShallowFetchShallowAncestorDepth2() throws Exception {
|
||||
FileRepository repo = setupRepoForShallowFetch();
|
||||
|
||||
try (FileRepository repo = setupRepoForShallowFetch()) {
|
||||
PackIndex idx = writeShallowPack(repo, 2, wants(c5), NONE, NONE);
|
||||
assertContent(idx,
|
||||
Arrays.asList(c4.getId(), c5.getId(), c4.getTree().getId(),
|
||||
c5.getTree().getId(), contentA.getId(),
|
||||
contentB.getId(), contentC.getId(), contentD.getId(),
|
||||
contentE.getId()));
|
||||
contentB.getId(), contentC.getId(),
|
||||
contentD.getId(), contentE.getId()));
|
||||
|
||||
idx = writeShallowPack(repo, 2, wants(c2), haves(c4, c5), shallows(c4));
|
||||
idx = writeShallowPack(repo, 2, wants(c2), haves(c4, c5),
|
||||
shallows(c4));
|
||||
assertContent(idx, Arrays.asList(c1.getId(), c2.getId(),
|
||||
c1.getTree().getId(), c2.getTree().getId()));
|
||||
}
|
||||
}
|
||||
|
||||
private FileRepository setupRepoForShallowFetch() throws Exception {
|
||||
FileRepository repo = createBareRepository();
|
||||
// TestRepository will close the repo, but we need to return an open
|
||||
// one!
|
||||
repo.incrementOpen();
|
||||
try (TestRepository<Repository> r = new TestRepository<>(repo)) {
|
||||
BranchBuilder bb = r.branch("refs/heads/master");
|
||||
contentA = r.blob("A");
|
||||
|
|
|
@ -145,13 +145,14 @@ public void test000_openrepo_default_gitDirSet() throws IOException {
|
|||
}
|
||||
|
||||
File theDir = new File(repo1Parent, Constants.DOT_GIT);
|
||||
FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setGitDir(theDir).build();
|
||||
try (FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setGitDir(theDir).build()) {
|
||||
assertEqualsPath(theDir, r.getDirectory());
|
||||
assertEqualsPath(repo1Parent, r.getWorkTree());
|
||||
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS), r.getObjectDatabase()
|
||||
.getDirectory());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS),
|
||||
r.getObjectDatabase().getDirectory());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -170,14 +171,15 @@ public void test000_openrepo_default_gitDirAndWorkTreeSet()
|
|||
}
|
||||
|
||||
File theDir = new File(repo1Parent, Constants.DOT_GIT);
|
||||
FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
try (FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setGitDir(theDir).setWorkTree(repo1Parent.getParentFile())
|
||||
.build();
|
||||
.build()) {
|
||||
assertEqualsPath(theDir, r.getDirectory());
|
||||
assertEqualsPath(repo1Parent.getParentFile(), r.getWorkTree());
|
||||
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS), r.getObjectDatabase()
|
||||
.getDirectory());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS),
|
||||
r.getObjectDatabase().getDirectory());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -195,13 +197,14 @@ public void test000_openrepo_default_workDirSet() throws IOException {
|
|||
}
|
||||
|
||||
File theDir = new File(repo1Parent, Constants.DOT_GIT);
|
||||
FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setWorkTree(repo1Parent).build();
|
||||
try (FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setWorkTree(repo1Parent).build()) {
|
||||
assertEqualsPath(theDir, r.getDirectory());
|
||||
assertEqualsPath(repo1Parent, r.getWorkTree());
|
||||
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS), r.getObjectDatabase()
|
||||
.getDirectory());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS),
|
||||
r.getObjectDatabase().getDirectory());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -224,13 +227,14 @@ public void test000_openrepo_default_absolute_workdirconfig()
|
|||
}
|
||||
|
||||
File theDir = new File(repo1Parent, Constants.DOT_GIT);
|
||||
FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setGitDir(theDir).build();
|
||||
try (FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setGitDir(theDir).build()) {
|
||||
assertEqualsPath(theDir, r.getDirectory());
|
||||
assertEqualsPath(workdir, r.getWorkTree());
|
||||
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS), r.getObjectDatabase()
|
||||
.getDirectory());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS),
|
||||
r.getObjectDatabase().getDirectory());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -253,13 +257,14 @@ public void test000_openrepo_default_relative_workdirconfig()
|
|||
}
|
||||
|
||||
File theDir = new File(repo1Parent, Constants.DOT_GIT);
|
||||
FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setGitDir(theDir).build();
|
||||
try (FileRepository r = (FileRepository) new FileRepositoryBuilder()
|
||||
.setGitDir(theDir).build()) {
|
||||
assertEqualsPath(theDir, r.getDirectory());
|
||||
assertEqualsPath(workdir, r.getWorkTree());
|
||||
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS), r.getObjectDatabase()
|
||||
.getDirectory());
|
||||
assertEqualsPath(new File(theDir, Constants.OBJECTS),
|
||||
r.getObjectDatabase().getDirectory());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -306,18 +311,21 @@ public void test002_WriteEmptyTree() throws IOException {
|
|||
// open when we create it we won't write the object file out as a loose
|
||||
// object (as it already exists in the pack).
|
||||
//
|
||||
final Repository newdb = createBareRepository();
|
||||
try (Repository newdb = createBareRepository()) {
|
||||
try (ObjectInserter oi = newdb.newObjectInserter()) {
|
||||
final ObjectId treeId = oi.insert(new TreeFormatter());
|
||||
assertEquals("4b825dc642cb6eb9a060e54bf8d69288fbee4904",
|
||||
treeId.name());
|
||||
}
|
||||
|
||||
final File o = new File(new File(new File(newdb.getDirectory(),
|
||||
Constants.OBJECTS), "4b"), "825dc642cb6eb9a060e54bf8d69288fbee4904");
|
||||
final File o = new File(
|
||||
new File(new File(newdb.getDirectory(), Constants.OBJECTS),
|
||||
"4b"),
|
||||
"825dc642cb6eb9a060e54bf8d69288fbee4904");
|
||||
assertTrue("Exists " + o, o.isFile());
|
||||
assertTrue("Read-only " + o, !o.canWrite());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test002_WriteEmptyTree2() throws IOException {
|
||||
|
|
|
@ -124,9 +124,11 @@ public void testAdded() throws IOException {
|
|||
public void testMissing() throws Exception {
|
||||
File file2 = writeTrashFile("file2", "file2");
|
||||
File file3 = writeTrashFile("dir/file3", "dir/file3");
|
||||
Git git = Git.wrap(db);
|
||||
git.add().addFilepattern("file2").addFilepattern("dir/file3").call();
|
||||
try (Git git = new Git(db)) {
|
||||
git.add().addFilepattern("file2").addFilepattern("dir/file3")
|
||||
.call();
|
||||
git.commit().setMessage("commit").call();
|
||||
}
|
||||
assertTrue(file2.delete());
|
||||
assertTrue(file3.delete());
|
||||
IndexDiff diff = new IndexDiff(db, Constants.HEAD,
|
||||
|
|
|
@ -1365,8 +1365,8 @@ private void checkModificationTimeStampOrder(String... pathes) {
|
|||
}
|
||||
|
||||
private String readBlob(ObjectId treeish, String path) throws Exception {
|
||||
try (TestRepository<?> tr = new TestRepository<>(db)) {
|
||||
RevWalk rw = tr.getRevWalk();
|
||||
try (TestRepository<?> tr = new TestRepository<>(db);
|
||||
RevWalk rw = tr.getRevWalk()) {
|
||||
RevTree tree = rw.parseTree(treeish);
|
||||
RevObject obj = tr.get(tree, path);
|
||||
if (obj == null) {
|
||||
|
|
|
@ -625,9 +625,8 @@ private Repository createNestedRepo() throws IOException {
|
|||
|
||||
@Test
|
||||
public void testCustomFileModeStrategy() throws Exception {
|
||||
Repository nestedRepo = createNestedRepo();
|
||||
|
||||
try (Git git = new Git(nestedRepo)) {
|
||||
try (Repository nestedRepo = createNestedRepo();
|
||||
Git git = new Git(nestedRepo)) {
|
||||
// validate that our custom strategy is honored
|
||||
WorkingTreeIterator customIterator = new FileTreeIterator(
|
||||
nestedRepo, NO_GITLINKS_STRATEGY);
|
||||
|
@ -642,9 +641,8 @@ public void testCustomFileModeStrategy() throws Exception {
|
|||
|
||||
@Test
|
||||
public void testCustomFileModeStrategyFromParentIterator() throws Exception {
|
||||
Repository nestedRepo = createNestedRepo();
|
||||
|
||||
try (Git git = new Git(nestedRepo)) {
|
||||
try (Repository nestedRepo = createNestedRepo();
|
||||
Git git = new Git(nestedRepo)) {
|
||||
FileTreeIterator customIterator = new FileTreeIterator(nestedRepo,
|
||||
NO_GITLINKS_STRATEGY);
|
||||
File r = new File(nestedRepo.getWorkTree(), "sub");
|
||||
|
|
Loading…
Reference in New Issue