From f3c250bd083871a11ea692ddd8a930a34e8db92c Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Fri, 12 Feb 2016 13:55:40 +0900 Subject: PushCommandTest: Open Git instances in try-with-resource Change-Id: I3a8e28a4097e868a34ee1b23256c7f28d570cd75 Signed-off-by: David Pursehouse --- .../tst/org/eclipse/jgit/api/PushCommandTest.java | 371 ++++++++++----------- 1 file changed, 184 insertions(+), 187 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java index 1fcfef9c71..2a325405e8 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java @@ -90,26 +90,27 @@ public class PushCommandTest extends RepositoryTestCase { remoteConfig.update(config); config.save(); - Git git1 = new Git(db); - // create some refs via commits and tag - RevCommit commit = git1.commit().setMessage("initial commit").call(); - Ref tagRef = git1.tag().setName("tag").call(); - - try { - db2.resolve(commit.getId().getName() + "^{commit}"); - fail("id shouldn't exist yet"); - } catch (MissingObjectException e) { - // we should get here + try (Git git1 = new Git(db)) { + // create some refs via commits and tag + RevCommit commit = git1.commit().setMessage("initial commit").call(); + Ref tagRef = git1.tag().setName("tag").call(); + + try { + db2.resolve(commit.getId().getName() + "^{commit}"); + fail("id shouldn't exist yet"); + } catch (MissingObjectException e) { + // we should get here + } + + RefSpec spec = new RefSpec("refs/heads/master:refs/heads/x"); + git1.push().setRemote("test").setRefSpecs(spec) + .call(); + + assertEquals(commit.getId(), + db2.resolve(commit.getId().getName() + "^{commit}")); + assertEquals(tagRef.getObjectId(), + db2.resolve(tagRef.getObjectId().getName())); } - - RefSpec spec = new RefSpec("refs/heads/master:refs/heads/x"); - git1.push().setRemote("test").setRefSpecs(spec) - .call(); - - assertEquals(commit.getId(), - db2.resolve(commit.getId().getName() + "^{commit}")); - assertEquals(tagRef.getObjectId(), - db2.resolve(tagRef.getObjectId().getName())); } @Test @@ -132,15 +133,16 @@ public class PushCommandTest extends RepositoryTestCase { + hookOutput.toPath() + "\"\ncat - >>\"" + hookOutput.toPath() + "\"\nexit 0"); - Git git1 = new Git(db); - // create some refs via commits and tag - RevCommit commit = git1.commit().setMessage("initial commit").call(); + try (Git git1 = new Git(db)) { + // create some refs via commits and tag + RevCommit commit = git1.commit().setMessage("initial commit").call(); - RefSpec spec = new RefSpec("refs/heads/master:refs/heads/x"); - git1.push().setRemote("test").setRefSpecs(spec).call(); - assertEquals("1:test, 2:" + uri + ", 3:\n" + "refs/heads/master " - + commit.getName() + " refs/heads/x " - + ObjectId.zeroId().name(), read(hookOutput)); + RefSpec spec = new RefSpec("refs/heads/master:refs/heads/x"); + git1.push().setRemote("test").setRefSpecs(spec).call(); + assertEquals("1:test, 2:" + uri + ", 3:\n" + "refs/heads/master " + + commit.getName() + " refs/heads/x " + + ObjectId.zeroId().name(), read(hookOutput)); + } } private File writeHookFile(final String name, final String data) @@ -160,45 +162,45 @@ public class PushCommandTest extends RepositoryTestCase { String branch = "refs/heads/master"; String trackingBranch = "refs/remotes/" + remote + "/master"; - Git git = new Git(db); + try (Git git = new Git(db)) { + RevCommit commit1 = git.commit().setMessage("Initial commit") + .call(); - RevCommit commit1 = git.commit().setMessage("Initial commit") - .call(); + RefUpdate branchRefUpdate = db.updateRef(branch); + branchRefUpdate.setNewObjectId(commit1.getId()); + branchRefUpdate.update(); - RefUpdate branchRefUpdate = db.updateRef(branch); - branchRefUpdate.setNewObjectId(commit1.getId()); - branchRefUpdate.update(); + RefUpdate trackingBranchRefUpdate = db.updateRef(trackingBranch); + trackingBranchRefUpdate.setNewObjectId(commit1.getId()); + trackingBranchRefUpdate.update(); - RefUpdate trackingBranchRefUpdate = db.updateRef(trackingBranch); - trackingBranchRefUpdate.setNewObjectId(commit1.getId()); - trackingBranchRefUpdate.update(); - - final StoredConfig config = db.getConfig(); - RemoteConfig remoteConfig = new RemoteConfig(config, remote); - URIish uri = new URIish(db2.getDirectory().toURI().toURL()); - remoteConfig.addURI(uri); - remoteConfig.addFetchRefSpec(new RefSpec("+refs/heads/*:refs/remotes/" - + remote + "/*")); - remoteConfig.update(config); - config.save(); + final StoredConfig config = db.getConfig(); + RemoteConfig remoteConfig = new RemoteConfig(config, remote); + URIish uri = new URIish(db2.getDirectory().toURI().toURL()); + remoteConfig.addURI(uri); + remoteConfig.addFetchRefSpec(new RefSpec("+refs/heads/*:refs/remotes/" + + remote + "/*")); + remoteConfig.update(config); + config.save(); - RevCommit commit2 = git.commit().setMessage("Commit to push").call(); + RevCommit commit2 = git.commit().setMessage("Commit to push").call(); - RefSpec spec = new RefSpec(branch + ":" + branch); - Iterable resultIterable = git.push().setRemote(remote) - .setRefSpecs(spec).call(); + RefSpec spec = new RefSpec(branch + ":" + branch); + Iterable resultIterable = git.push().setRemote(remote) + .setRefSpecs(spec).call(); - PushResult result = resultIterable.iterator().next(); - TrackingRefUpdate trackingRefUpdate = result - .getTrackingRefUpdate(trackingBranch); + PushResult result = resultIterable.iterator().next(); + TrackingRefUpdate trackingRefUpdate = result + .getTrackingRefUpdate(trackingBranch); - assertNotNull(trackingRefUpdate); - assertEquals(trackingBranch, trackingRefUpdate.getLocalName()); - assertEquals(branch, trackingRefUpdate.getRemoteName()); - assertEquals(commit2.getId(), trackingRefUpdate.getNewObjectId()); - assertEquals(commit2.getId(), db.resolve(trackingBranch)); - assertEquals(commit2.getId(), db2.resolve(branch)); + assertNotNull(trackingRefUpdate); + assertEquals(trackingBranch, trackingRefUpdate.getLocalName()); + assertEquals(branch, trackingRefUpdate.getRemoteName()); + assertEquals(commit2.getId(), trackingRefUpdate.getNewObjectId()); + assertEquals(commit2.getId(), db.resolve(trackingBranch)); + assertEquals(commit2.getId(), db2.resolve(branch)); + } } /** @@ -208,40 +210,38 @@ public class PushCommandTest extends RepositoryTestCase { */ @Test public void testPushRefUpdate() throws Exception { - Git git = new Git(db); - Git git2 = new Git(createBareRepository()); - - final StoredConfig config = git.getRepository().getConfig(); - RemoteConfig remoteConfig = new RemoteConfig(config, "test"); - URIish uri = new URIish(git2.getRepository().getDirectory().toURI() - .toURL()); - remoteConfig.addURI(uri); - remoteConfig.addPushRefSpec(new RefSpec("+refs/heads/*:refs/heads/*")); - remoteConfig.update(config); - config.save(); - - writeTrashFile("f", "content of f"); - git.add().addFilepattern("f").call(); - RevCommit commit = git.commit().setMessage("adding f").call(); - - assertEquals(null, git2.getRepository().resolve("refs/heads/master")); - git.push().setRemote("test").call(); - assertEquals(commit.getId(), - git2.getRepository().resolve("refs/heads/master")); - - git.branchCreate().setName("refs/heads/test").call(); - git.checkout().setName("refs/heads/test").call(); - - - for (int i = 0; i < 6; i++) { - writeTrashFile("f" + i, "content of f" + i); - git.add().addFilepattern("f" + i).call(); - commit = git.commit().setMessage("adding f" + i).call(); + try (Git git = new Git(db); + Git git2 = new Git(createBareRepository())) { + final StoredConfig config = git.getRepository().getConfig(); + RemoteConfig remoteConfig = new RemoteConfig(config, "test"); + URIish uri = new URIish(git2.getRepository().getDirectory().toURI() + .toURL()); + remoteConfig.addURI(uri); + remoteConfig.addPushRefSpec(new RefSpec("+refs/heads/*:refs/heads/*")); + remoteConfig.update(config); + config.save(); + + writeTrashFile("f", "content of f"); + git.add().addFilepattern("f").call(); + RevCommit commit = git.commit().setMessage("adding f").call(); + + assertEquals(null, git2.getRepository().resolve("refs/heads/master")); git.push().setRemote("test").call(); - git2.getRepository().getAllRefs(); - assertEquals("failed to update on attempt " + i, commit.getId(), - git2.getRepository().resolve("refs/heads/test")); - + assertEquals(commit.getId(), + git2.getRepository().resolve("refs/heads/master")); + + git.branchCreate().setName("refs/heads/test").call(); + git.checkout().setName("refs/heads/test").call(); + + for (int i = 0; i < 6; i++) { + writeTrashFile("f" + i, "content of f" + i); + git.add().addFilepattern("f" + i).call(); + commit = git.commit().setMessage("adding f" + i).call(); + git.push().setRemote("test").call(); + git2.getRepository().getAllRefs(); + assertEquals("failed to update on attempt " + i, commit.getId(), + git2.getRepository().resolve("refs/heads/test")); + } } } @@ -252,28 +252,26 @@ public class PushCommandTest extends RepositoryTestCase { */ @Test public void testPushWithRefSpecFromConfig() throws Exception { - Git git = new Git(db); - Git git2 = new Git(createBareRepository()); - - final StoredConfig config = git.getRepository().getConfig(); - RemoteConfig remoteConfig = new RemoteConfig(config, "test"); - URIish uri = new URIish(git2.getRepository().getDirectory().toURI() - .toURL()); - remoteConfig.addURI(uri); - remoteConfig.addPushRefSpec(new RefSpec("HEAD:refs/heads/newbranch")); - remoteConfig.update(config); - config.save(); - - writeTrashFile("f", "content of f"); - git.add().addFilepattern("f").call(); - RevCommit commit = git.commit().setMessage("adding f").call(); - - assertEquals(null, git2.getRepository().resolve("refs/heads/master")); - git.push().setRemote("test").call(); - assertEquals(commit.getId(), - git2.getRepository().resolve("refs/heads/newbranch")); - - + try (Git git = new Git(db); + Git git2 = new Git(createBareRepository())) { + final StoredConfig config = git.getRepository().getConfig(); + RemoteConfig remoteConfig = new RemoteConfig(config, "test"); + URIish uri = new URIish(git2.getRepository().getDirectory().toURI() + .toURL()); + remoteConfig.addURI(uri); + remoteConfig.addPushRefSpec(new RefSpec("HEAD:refs/heads/newbranch")); + remoteConfig.update(config); + config.save(); + + writeTrashFile("f", "content of f"); + git.add().addFilepattern("f").call(); + RevCommit commit = git.commit().setMessage("adding f").call(); + + assertEquals(null, git2.getRepository().resolve("refs/heads/master")); + git.push().setRemote("test").call(); + assertEquals(commit.getId(), + git2.getRepository().resolve("refs/heads/newbranch")); + } } /** @@ -283,38 +281,37 @@ public class PushCommandTest extends RepositoryTestCase { */ @Test public void testPushWithoutPushRefSpec() throws Exception { - Git git = new Git(db); - Git git2 = new Git(createBareRepository()); - - final StoredConfig config = git.getRepository().getConfig(); - RemoteConfig remoteConfig = new RemoteConfig(config, "test"); - URIish uri = new URIish(git2.getRepository().getDirectory().toURI() - .toURL()); - remoteConfig.addURI(uri); - remoteConfig.addFetchRefSpec(new RefSpec( - "+refs/heads/*:refs/remotes/origin/*")); - remoteConfig.update(config); - config.save(); - - writeTrashFile("f", "content of f"); - git.add().addFilepattern("f").call(); - RevCommit commit = git.commit().setMessage("adding f").call(); - - git.checkout().setName("not-pushed").setCreateBranch(true).call(); - git.checkout().setName("branchtopush").setCreateBranch(true).call(); - - assertEquals(null, - git2.getRepository().resolve("refs/heads/branchtopush")); - assertEquals(null, git2.getRepository() - .resolve("refs/heads/not-pushed")); - assertEquals(null, git2.getRepository().resolve("refs/heads/master")); - git.push().setRemote("test").call(); - assertEquals(commit.getId(), - git2.getRepository().resolve("refs/heads/branchtopush")); - assertEquals(null, git2.getRepository() - .resolve("refs/heads/not-pushed")); - assertEquals(null, git2.getRepository().resolve("refs/heads/master")); - + try (Git git = new Git(db); + Git git2 = new Git(createBareRepository())) { + final StoredConfig config = git.getRepository().getConfig(); + RemoteConfig remoteConfig = new RemoteConfig(config, "test"); + URIish uri = new URIish(git2.getRepository().getDirectory().toURI() + .toURL()); + remoteConfig.addURI(uri); + remoteConfig.addFetchRefSpec(new RefSpec( + "+refs/heads/*:refs/remotes/origin/*")); + remoteConfig.update(config); + config.save(); + + writeTrashFile("f", "content of f"); + git.add().addFilepattern("f").call(); + RevCommit commit = git.commit().setMessage("adding f").call(); + + git.checkout().setName("not-pushed").setCreateBranch(true).call(); + git.checkout().setName("branchtopush").setCreateBranch(true).call(); + + assertEquals(null, + git2.getRepository().resolve("refs/heads/branchtopush")); + assertEquals(null, git2.getRepository() + .resolve("refs/heads/not-pushed")); + assertEquals(null, git2.getRepository().resolve("refs/heads/master")); + git.push().setRemote("test").call(); + assertEquals(commit.getId(), + git2.getRepository().resolve("refs/heads/branchtopush")); + assertEquals(null, git2.getRepository() + .resolve("refs/heads/not-pushed")); + assertEquals(null, git2.getRepository().resolve("refs/heads/master")); + } } /** @@ -335,51 +332,51 @@ public class PushCommandTest extends RepositoryTestCase { remoteConfig.update(config); config.save(); - Git git1 = new Git(db); - Git git2 = new Git(db2); - - // push master (with a new commit) to the remote - git1.commit().setMessage("initial commit").call(); + try (Git git1 = new Git(db); + Git git2 = new Git(db2)) { + // push master (with a new commit) to the remote + git1.commit().setMessage("initial commit").call(); - RefSpec spec = new RefSpec("refs/heads/*:refs/heads/*"); - git1.push().setRemote("test").setRefSpecs(spec).call(); - - // create an unrelated ref and a commit on our remote - git2.branchCreate().setName("refs/heads/other").call(); - git2.checkout().setName("refs/heads/other").call(); - - writeTrashFile("a", "content of a"); - git2.add().addFilepattern("a").call(); - RevCommit commit2 = git2.commit().setMessage("adding a").call(); - - // run a gc to ensure we have a bitmap index - Properties res = git1.gc().setExpire(null).call(); - assertEquals(7, res.size()); - - // create another commit so we have something else to push - writeTrashFile("b", "content of b"); - git1.add().addFilepattern("b").call(); - RevCommit commit3 = git1.commit().setMessage("adding b").call(); - - try { - // Re-run the push. Failure may happen here. + RefSpec spec = new RefSpec("refs/heads/*:refs/heads/*"); git1.push().setRemote("test").setRefSpecs(spec).call(); - } catch (TransportException e) { - assertTrue("should be caused by a MissingObjectException", e - .getCause().getCause() instanceof MissingObjectException); - fail("caught MissingObjectException for a change we don't have"); - } - // Remote will have both a and b. Master will have only b - try { - db.resolve(commit2.getId().getName() + "^{commit}"); - fail("id shouldn't exist locally"); - } catch (MissingObjectException e) { - // we should get here + // create an unrelated ref and a commit on our remote + git2.branchCreate().setName("refs/heads/other").call(); + git2.checkout().setName("refs/heads/other").call(); + + writeTrashFile("a", "content of a"); + git2.add().addFilepattern("a").call(); + RevCommit commit2 = git2.commit().setMessage("adding a").call(); + + // run a gc to ensure we have a bitmap index + Properties res = git1.gc().setExpire(null).call(); + assertEquals(7, res.size()); + + // create another commit so we have something else to push + writeTrashFile("b", "content of b"); + git1.add().addFilepattern("b").call(); + RevCommit commit3 = git1.commit().setMessage("adding b").call(); + + try { + // Re-run the push. Failure may happen here. + git1.push().setRemote("test").setRefSpecs(spec).call(); + } catch (TransportException e) { + assertTrue("should be caused by a MissingObjectException", e + .getCause().getCause() instanceof MissingObjectException); + fail("caught MissingObjectException for a change we don't have"); + } + + // Remote will have both a and b. Master will have only b + try { + db.resolve(commit2.getId().getName() + "^{commit}"); + fail("id shouldn't exist locally"); + } catch (MissingObjectException e) { + // we should get here + } + assertEquals(commit2.getId(), + db2.resolve(commit2.getId().getName() + "^{commit}")); + assertEquals(commit3.getId(), + db2.resolve(commit3.getId().getName() + "^{commit}")); } - assertEquals(commit2.getId(), - db2.resolve(commit2.getId().getName() + "^{commit}")); - assertEquals(commit3.getId(), - db2.resolve(commit3.getId().getName() + "^{commit}")); } } -- cgit v1.2.3