Skip to contentSkip to conversation

Fixed RefUpdateTest.tryRenameWhenLocked() family of tests

PATCH New Constantine Plotnikov 1 participant 1 message Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fixed RefUpdateTest.tryRenameWhenLocked() family of tests

If file is left locked after the test, the cleanup does not work on Windows since locked files cannot be deleted. The patch adds unlock for the aquired lock, so the cleanup now works.

---
This is a second time the problem occurs. Please release all locks that are being acquired, otherwise the tests will fail on Windows.

 .../tst/org/spearce/jgit/lib/RefUpdateTest.java    |   51 +++++++++++---------
 1 files changed, 28 insertions(+), 23 deletions(-)
org.spearce.jgit.test/tst/org/spearce/jgit/lib/RefUpdateTest.java +28 -23
index 83eb4ed..ec00fac 100644
@@ -463,29 +463,34 @@ assertTrue("internal check, we have a log", new File(db.getDirectory(),
 				"logs/" + fromName).exists());
 
 		// "someone" has branch X locked
-		assertTrue(new LockFile(new File(db.getDirectory(), toLock)).lock());
-
-		// Now this is our test
-		RefRename renameRef = db.renameRef(fromName, toName);
-		Result result = renameRef.rename();
-		assertEquals(Result.LOCK_FAILURE, result);
-
-		// Check that the involved refs are the same despite the failure
-		assertExists(false, toName);
-		if (!toLock.equals(toName))
-			assertExists(false, toName + ".lock");
-		assertExists(true, toLock + ".lock");
-		if (!toLock.equals(fromName))
-			assertExists(false, "logs/" + fromName + ".lock");
-		assertExists(false, "logs/" + toName + ".lock");
-		assertEquals(oldHeadId, db.resolve(Constants.HEAD));
-		assertEquals(oldfromId, db.resolve(fromName));
-		assertNull(db.resolve(toName));
-		assertEquals(oldFromLog.toString(), db.getReflogReader(fromName)
-				.getReverseEntries().toString());
-		if (oldHeadId != null)
-			assertEquals(oldHeadLog, db.getReflogReader(Constants.HEAD)
-					.getReverseEntries());
+		LockFile lockFile = new LockFile(new File(db.getDirectory(), toLock));
+		try {
+			assertTrue(lockFile.lock());
+
+			// Now this is our test
+			RefRename renameRef = db.renameRef(fromName, toName);
+			Result result = renameRef.rename();
+			assertEquals(Result.LOCK_FAILURE, result);
+	
+			// Check that the involved refs are the same despite the failure
+			assertExists(false, toName);
+			if (!toLock.equals(toName))
+				assertExists(false, toName + ".lock");
+			assertExists(true, toLock + ".lock");
+			if (!toLock.equals(fromName))
+				assertExists(false, "logs/" + fromName + ".lock");
+			assertExists(false, "logs/" + toName + ".lock");
+			assertEquals(oldHeadId, db.resolve(Constants.HEAD));
+			assertEquals(oldfromId, db.resolve(fromName));
+			assertNull(db.resolve(toName));
+			assertEquals(oldFromLog.toString(), db.getReflogReader(fromName)
+					.getReverseEntries().toString());
+			if (oldHeadId != null)
+				assertEquals(oldHeadLog, db.getReflogReader(Constants.HEAD)
+						.getReverseEntries());
+		} finally {
+			lockFile.unlock();
+		}
 	}
 
 	private void assertExists(boolean positive, String toName) {
Signature · 1 line
1.6.1.2