git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH JGit 05/19] Made tests for listLocalPacks function on ObjectDirectory and made them pass

From
mr.gaffo@gmail.com <mr.gaffo@gmail.com>
Date
Sep 13, 2009, 18:44 UTC
Message-ID
<1252867475-858-6-git-send-email-mr.gaffo@gmail.com>
In-Reply-To
<1252867475-858-5-git-send-email-mr.gaffo@gmail.com>
From: mike.gaffney <mike.gaffney@asolutions.com>
---
 .../org/spearce/jgit/lib/ObjectDirectoryTest.java  |   24 ++++++++++++++++++++
 .../jgit/lib/UpdateDirectoryInfoCacheTest.java     |   11 +++++++++
 .../tst/org/spearce/jgit/util/JGitTestUtil.java    |   21 ++++++++++++++++-
 .../src/org/spearce/jgit/lib/ObjectDirectory.java  |    6 +++++
 .../spearce/jgit/lib/UpdateDirectoryInfoCache.java |   22 ++++++++++++++++++
 5 files changed, 83 insertions(+), 1 deletions(-)
 create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/lib/UpdateDirectoryInfoCacheTest.java
 create mode 100644 org.spearce.jgit/src/org/spearce/jgit/lib/UpdateDirectoryInfoCache.java
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/ObjectDirectoryTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/ObjectDirectoryTest.java
index fe019af..8e4d8e5 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/ObjectDirectoryTest.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/ObjectDirectoryTest.java
@@ -1,11 +1,17 @@
 package org.spearce.jgit.lib;
 
 import java.io.File;
+import java.util.List;
 import java.util.UUID;
 
+import org.spearce.jgit.util.JGitTestUtil;
+
 import junit.framework.TestCase;
 
 public class ObjectDirectoryTest extends TestCase {
+	private static final String PACK_NAME = "pack-34be9032ac282b11fa9babdc2b2a93ca996c9c2f";
+	private static final File TEST_PACK = JGitTestUtil.getTestResourceFile(PACK_NAME + ".pack");
+	private static final File TEST_IDX = JGitTestUtil.getTestResourceFile(PACK_NAME + ".idx");
 	
 	private File testDir;
 
@@ -58,6 +64,24 @@ public void testGettingObjectFile() throws Exception {
 				 od.fileFor(ObjectId.fromString("b052a1272310d8df34de72f60204dee7e28a43d0")));
 	}
 	
+	public void testListLocalPacksNotCreated() throws Exception {
+		assertEquals(0, new ObjectDirectory(testDir).listLocalPacks().size());
+	}
+	
+	public void testListLocalPacksWhenThereIsAPack() throws Exception {
+		createTestDir();
+		File packsDir = new File(testDir, "pack");
+		packsDir.mkdirs();
+		
+		JGitTestUtil.copyFile(TEST_PACK, new File(packsDir, TEST_PACK.getName()));
+		JGitTestUtil.copyFile(TEST_IDX, new File(packsDir, TEST_IDX.getName()));
+
+		ObjectDirectory od = new ObjectDirectory(testDir);
+		List<PackFile> localPacks = od.listLocalPacks();
+		assertEquals(1, localPacks.size());
+		assertEquals(TEST_PACK.getName(), localPacks.get(0).getPackFile().getName());
+	}
+	
 	public boolean deleteDir(File dir) {
         if (dir.isDirectory()) {
             String[] children = dir.list();
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/UpdateDirectoryInfoCacheTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/UpdateDirectoryInfoCacheTest.java
new file mode 100644
index 0000000..11d183e
--- /dev/null
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/UpdateDirectoryInfoCacheTest.java
@@ -0,0 +1,11 @@
+package org.spearce.jgit.lib;
+
+import junit.framework.TestCase;
+
+public class UpdateDirectoryInfoCacheTest extends TestCase {
+	
+	public void testBase() throws Exception {
+		fail("nyi");
+	}
+
+}
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/util/JGitTestUtil.java b/org.spearce.jgit.test/tst/org/spearce/jgit/util/JGitTestUtil.java
index eee0c14..04184d7 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/util/JGitTestUtil.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/util/JGitTestUtil.java
@@ -38,6 +38,12 @@
 package org.spearce.jgit.util;
 
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.net.URISyntaxException;
 import java.net.URL;
 
@@ -60,11 +66,24 @@ public static File getTestResourceFile(final String fileName) {
 		}
 		try {
 			return new File(url.toURI());
-		} catch(URISyntaxException e) {
+		} catch (URISyntaxException e) {
 			return new File(url.getPath());
 		}
 	}
 
+	public static void copyFile(final File fromFile, final File toFile) throws IOException {
+		InputStream in = new FileInputStream(fromFile);
+		OutputStream out = new FileOutputStream(toFile);
+
+		byte[] buf = new byte[1024];
+		int len;
+		while ((len = in.read(buf)) > 0) {
+			out.write(buf, 0, len);
+		}
+		in.close();
+		out.close();
+	}
+
 	private static ClassLoader cl() {
 		return JGitTestUtil.class.getClassLoader();
 	}
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectDirectory.java b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectDirectory.java
index fe219c6..a90ae00 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectDirectory.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/ObjectDirectory.java
@@ -511,6 +511,12 @@ boolean tryAgain(final long currLastModified) {
 
 	@Override
 	public List<PackFile> listLocalPacks() {
+		tryAgain1();
 		return new ArrayList<PackFile>(Arrays.asList(packList.get().packs));
 	}
+
+	@Override
+	public void updateInfoCache() {
+		new UpdateDirectoryInfoCache(this.listLocalPacks(), this.infoDirectory).execute();
+	}
 }
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/UpdateDirectoryInfoCache.java b/org.spearce.jgit/src/org/spearce/jgit/lib/UpdateDirectoryInfoCache.java
new file mode 100644
index 0000000..2bceb9e
--- /dev/null
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/UpdateDirectoryInfoCache.java
@@ -0,0 +1,22 @@
+package org.spearce.jgit.lib;
+
+import java.io.File;
+import java.util.List;
+
+public class UpdateDirectoryInfoCache {
+
+	private List<PackFile> packsList;
+	private File infoDirectory;
+
+	public UpdateDirectoryInfoCache(List<PackFile> packsList,
+			File infoDirectory) {
+		this.packsList = packsList;
+		this.infoDirectory = infoDirectory;
+	}
+
+	public void execute() {
+//		File objectFile = objectDatabase.
+//		String packsContents = new PacksFileContentsCreator(this.objectDatabase.listLocalPacks()).toString();
+	}
+
+}
-- 
1.6.4.2
Previous: mr.gaffo@gmail.comNext: mr.gaffo@gmail.com
Message 6 of 25 in “Adding update-server-info functionality”
  1. Adding update-server-info functionalitymr.gaffo@gmail.com, Sep 13, 2009
  2. 01/19 adding tests for ObjectDirectorymr.gaffo@gmail.com, Sep 13, 2009
  3. 02/19 Create abstract method on ObjectDatabase for accessing the list of local pack files.mr.gaffo@gmail.com, Sep 13, 2009
  4. 03/19 Add abstract method for updating the object db's info cache Implemented passthrough on Alternate for the update of infocachemr.gaffo@gmail.com, Sep 13, 2009
  5. 04/19 added utility that generates the contents of the objects/info/packs file as a string from a list of PackFilesmr.gaffo@gmail.com, Sep 13, 2009
  6. 05/19 Made tests for listLocalPacks function on ObjectDirectory and made them passmr.gaffo@gmail.com, Sep 13, 2009
  7. 06/19 added utility for reading the contents of a file as a stringmr.gaffo@gmail.com, Sep 13, 2009
  8. 07/19 implemented the packs file update functionalitymr.gaffo@gmail.com, Sep 13, 2009
  9. 08/19 changed signature to allow a IOExceptionmr.gaffo@gmail.com, Sep 13, 2009
  10. 09/19 Didn't like the old name, this is more specific to it just updating the packs info cachemr.gaffo@gmail.com, Sep 13, 2009
  11. 10/19 moved test up to a higher level to test actual functionalitymr.gaffo@gmail.com, Sep 13, 2009
  12. 11/19 removed unused importmr.gaffo@gmail.com, Sep 13, 2009
  13. 12/19 moved info/packs into a constantmr.gaffo@gmail.com, Sep 13, 2009
  14. 13/19 made the call update the object database's info cachemr.gaffo@gmail.com, Sep 13, 2009
  15. 14/19 pulled out some helper functions that will be useful for other testsmr.gaffo@gmail.com, Sep 13, 2009
  16. 15/19 Adding in a InfoDatabase like ObjectDatabase and and implementation based upon a directory.mr.gaffo@gmail.com, Sep 13, 2009
  17. 16/19 added tests for the file based info cache update and made passmr.gaffo@gmail.com, Sep 13, 2009
  18. 17/19 added call to update the info refs filemr.gaffo@gmail.com, Sep 13, 2009
  19. 18/19 Added Copyright Noticesmr.gaffo@gmail.com, Sep 13, 2009
  20. 19/19 changed \r to \n per compliance with real gitmr.gaffo@gmail.com, Sep 13, 2009
  21. Robin RosenbergSep 15, 2009
  22. Robin RosenbergSep 15, 2009
  23. Robin RosenbergSep 15, 2009
  24. Robin RosenbergSep 15, 2009
  25. Robin RosenbergSep 15, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.