Close ObjectInserters in tests

Change-Id: I0048a9ae23aee79cfecafb15855c63cd92818c57
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
This commit is contained in:
Thomas Wolf 2019-10-21 11:16:38 +02:00
parent ecc313a6f6
commit 1b8da0dcfa
4 changed files with 68 additions and 56 deletions

View File

@ -700,26 +700,26 @@ public void testAddWithConflicts() throws Exception {
writer.print("content b");
}
ObjectInserter newObjectInserter = db.newObjectInserter();
DirCache dc = db.lockDirCache();
DirCacheBuilder builder = dc.builder();
try (ObjectInserter newObjectInserter = db.newObjectInserter()) {
DirCacheBuilder builder = dc.builder();
addEntryToBuilder("b.txt", file2, newObjectInserter, builder, 0);
addEntryToBuilder("a.txt", file, newObjectInserter, builder, 1);
addEntryToBuilder("b.txt", file2, newObjectInserter, builder, 0);
addEntryToBuilder("a.txt", file, newObjectInserter, builder, 1);
try (PrintWriter writer = new PrintWriter(file, UTF_8.name())) {
writer.print("other content");
try (PrintWriter writer = new PrintWriter(file, UTF_8.name())) {
writer.print("other content");
}
addEntryToBuilder("a.txt", file, newObjectInserter, builder, 3);
try (PrintWriter writer = new PrintWriter(file, UTF_8.name())) {
writer.print("our content");
}
addEntryToBuilder("a.txt", file, newObjectInserter, builder, 2)
.getObjectId();
builder.commit();
}
addEntryToBuilder("a.txt", file, newObjectInserter, builder, 3);
try (PrintWriter writer = new PrintWriter(file, UTF_8.name())) {
writer.print("our content");
}
addEntryToBuilder("a.txt", file, newObjectInserter, builder, 2)
.getObjectId();
builder.commit();
assertEquals(
"[a.txt, mode:100644, stage:1, content:content]" +
"[a.txt, mode:100644, stage:2, content:our content]" +

View File

@ -341,48 +341,56 @@ private void testMaliciousPath(boolean good, boolean secondCheckout,
String... path) throws GitAPIException, IOException {
try (Git git = new Git(db);
RevWalk revWalk = new RevWalk(git.getRepository())) {
ObjectInserter newObjectInserter;
newObjectInserter = git.getRepository().newObjectInserter();
ObjectId blobId = newObjectInserter.insert(Constants.OBJ_BLOB,
ObjectId blobId;
try (ObjectInserter newObjectInserter = git.getRepository()
.newObjectInserter()) {
blobId = newObjectInserter.insert(Constants.OBJ_BLOB,
"data".getBytes(UTF_8));
newObjectInserter = git.getRepository().newObjectInserter();
}
FileMode mode = FileMode.REGULAR_FILE;
ObjectId insertId = blobId;
for (int i = path.length - 1; i >= 0; --i) {
TreeFormatter treeFormatter = new TreeFormatter();
treeFormatter.append("goodpath", mode, insertId);
insertId = newObjectInserter.insert(treeFormatter);
mode = FileMode.TREE;
try (ObjectInserter newObjectInserter = git.getRepository()
.newObjectInserter()) {
for (int i = path.length - 1; i >= 0; --i) {
TreeFormatter treeFormatter = new TreeFormatter();
treeFormatter.append("goodpath", mode, insertId);
insertId = newObjectInserter.insert(treeFormatter);
mode = FileMode.TREE;
}
}
newObjectInserter = git.getRepository().newObjectInserter();
CommitBuilder commitBuilder = new CommitBuilder();
commitBuilder.setAuthor(author);
commitBuilder.setCommitter(committer);
commitBuilder.setMessage("foo#1");
commitBuilder.setTreeId(insertId);
ObjectId firstCommitId = newObjectInserter.insert(commitBuilder);
newObjectInserter = git.getRepository().newObjectInserter();
mode = FileMode.REGULAR_FILE;
insertId = blobId;
for (int i = path.length - 1; i >= 0; --i) {
TreeFormatter treeFormatter = new TreeFormatter();
treeFormatter.append(path[i].getBytes(UTF_8), 0,
path[i].getBytes(UTF_8).length,
mode, insertId, true);
insertId = newObjectInserter.insert(treeFormatter);
mode = FileMode.TREE;
ObjectId firstCommitId;
try (ObjectInserter newObjectInserter = git.getRepository()
.newObjectInserter()) {
CommitBuilder commitBuilder = new CommitBuilder();
commitBuilder.setAuthor(author);
commitBuilder.setCommitter(committer);
commitBuilder.setMessage("foo#1");
commitBuilder.setTreeId(insertId);
firstCommitId = newObjectInserter.insert(commitBuilder);
}
ObjectId commitId;
try (ObjectInserter newObjectInserter = git.getRepository()
.newObjectInserter()) {
mode = FileMode.REGULAR_FILE;
insertId = blobId;
for (int i = path.length - 1; i >= 0; --i) {
TreeFormatter treeFormatter = new TreeFormatter();
treeFormatter.append(path[i].getBytes(UTF_8), 0,
path[i].getBytes(UTF_8).length, mode, insertId,
true);
insertId = newObjectInserter.insert(treeFormatter);
mode = FileMode.TREE;
}
// Create another commit
commitBuilder = new CommitBuilder();
commitBuilder.setAuthor(author);
commitBuilder.setCommitter(committer);
commitBuilder.setMessage("foo#2");
commitBuilder.setTreeId(insertId);
commitBuilder.setParentId(firstCommitId);
ObjectId commitId = newObjectInserter.insert(commitBuilder);
// Create another commit
CommitBuilder commitBuilder = new CommitBuilder();
commitBuilder.setAuthor(author);
commitBuilder.setCommitter(committer);
commitBuilder.setMessage("foo#2");
commitBuilder.setTreeId(insertId);
commitBuilder.setParentId(firstCommitId);
commitId = newObjectInserter.insert(commitBuilder);
}
if (!secondCheckout)
git.checkout().setStartPoint(revWalk.parseCommit(firstCommitId))
.setName("refs/heads/master").setCreateBranch(true).call();

View File

@ -349,9 +349,11 @@ private void buildIndex(HashMap<String, String> indexEntries) throws IOException
DirCacheEditor editor = dirCache.editor();
for (java.util.Map.Entry<String,String> e : indexEntries.entrySet()) {
writeTrashFile(e.getKey(), e.getValue());
ObjectInserter inserter = db.newObjectInserter();
final ObjectId id = inserter.insert(Constants.OBJ_BLOB,
ObjectId id;
try (ObjectInserter inserter = db.newObjectInserter()) {
id = inserter.insert(Constants.OBJ_BLOB,
Constants.encode(e.getValue()));
}
editor.add(new DirCacheEditor.DeletePath(e.getKey()));
editor.add(new DirCacheEditor.PathEdit(e.getKey()) {
@Override

View File

@ -81,10 +81,12 @@ public class IndexDiffTest extends RepositoryTestCase {
static PathEdit add(final Repository db, final File workdir,
final String path) throws FileNotFoundException, IOException {
ObjectInserter inserter = db.newObjectInserter();
final File f = new File(workdir, path);
final ObjectId id = inserter.insert(Constants.OBJ_BLOB,
ObjectId id;
try (ObjectInserter inserter = db.newObjectInserter()) {
id = inserter.insert(Constants.OBJ_BLOB,
IO.readFully(f));
}
return new PathEdit(path) {
@Override
public void apply(DirCacheEntry ent) {