diff options
author | Jackson Toeniskoetter <jackdt@google.com> | 2019-01-10 11:51:29 -0800 |
---|---|---|
committer | Jackson Toeniskoetter <jackdt@google.com> | 2019-01-10 12:10:43 -0800 |
commit | 8ed59c511cf61a23393fabf252a315371a1438f0 (patch) | |
tree | 5b61f5eb24fa340a2d8661ae497973d8bc0b8c07 /org.eclipse.jgit.junit/src | |
parent | 23c30c6310686392dbbff4385b96a3403e09168a (diff) | |
download | jgit-8ed59c511cf61a23393fabf252a315371a1438f0.tar.gz jgit-8ed59c511cf61a23393fabf252a315371a1438f0.zip |
Make TestRepository AutoCloseable
Currently, unit tests need to either close the Repository underlying a
TestRepository manually, or not close it at all. Both are error prone.
The TestRepository holds a reference to 4 AutoCloseable objects:
Repository, ObjectInserter, Git, and RevWalk. The last two can escape
the TestRepository scope, so they are not closed when TestRepository is
closed.
Change-Id: I4461bb9104d517bd6bef09c38507c7c2ef5c31d4
Signed-off-by: Jackson Toeniskoetter <jackdt@google.com>
Diffstat (limited to 'org.eclipse.jgit.junit/src')
-rw-r--r-- | org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java index c9fa2f506c..55a7766f60 100644 --- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java +++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java @@ -112,7 +112,7 @@ import org.eclipse.jgit.util.FileUtils; * @param <R> * type of Repository the test data is stored on. */ -public class TestRepository<R extends Repository> { +public class TestRepository<R extends Repository> implements AutoCloseable { /** Constant <code>AUTHOR="J. Author"</code> */ public static final String AUTHOR = "J. Author"; @@ -933,6 +933,23 @@ public class TestRepository<R extends Repository> { } } + /** + * Closes the underlying {@link Repository} object and any other internal + * resources. + * <p> + * {@link AutoCloseable} resources that may escape this object, such as + * those returned by the {@link #git} and {@link #getRevWalk()} methods are + * not closed. + */ + @Override + public void close() { + try { + inserter.close(); + } finally { + db.close(); + } + } + private static void prunePacked(ObjectDirectory odb) throws IOException { for (PackFile p : odb.getPacks()) { for (MutableEntry e : p) |