]> arthur.barton.de Git - bup.git/blobdiff - lib/bup/t/tgit.py
Move .idx file writing to C
[bup.git] / lib / bup / t / tgit.py
index 054ca08557ba8b8969d2b1646400a7553938f829..da7c63ce36aab94bfa5d0c426abf939583e0e836 100644 (file)
@@ -89,6 +89,33 @@ def testpacks():
     WVPASS(r.exists(hashes[6]))
     WVFAIL(r.exists('\0'*20))
 
+
+@wvtest
+def test_pack_name_lookup():
+    os.environ['BUP_MAIN_EXE'] = bupmain = '../../../bup'
+    os.environ['BUP_DIR'] = bupdir = 'pybuptest.tmp'
+    subprocess.call(['rm','-rf', bupdir])
+    git.init_repo(bupdir)
+    git.verbose = 1
+    packdir = git.repo('objects/pack')
+
+    idxnames = []
+    hashes = []
+
+    for start in range(0,28,2):
+        w = git.PackWriter()
+        for i in range(start, start+2):
+            hashes.append(w.new_blob(str(i)))
+        log('\n')
+        idxnames.append(os.path.basename(w.close() + '.idx'))
+
+    r = git.PackIdxList(packdir)
+    WVPASSEQ(len(r.packs), 2)
+    for e,idxname in enumerate(idxnames):
+        for i in range(e*2, (e+1)*2):
+            WVPASSEQ(r.exists(hashes[i], want_source=True), idxname)
+
+
 @wvtest
 def test_long_index():
     w = git.PackWriter()
@@ -105,14 +132,13 @@ def test_long_index():
     idx[0x11].append((obj2_bin, 2, 0xffffffffff))
     idx[0x22].append((obj3_bin, 3, 0xff))
     (fd,name) = tempfile.mkstemp(suffix='.idx', dir=git.repo('objects'))
-    f = os.fdopen(fd, 'w+b')
-    r = w._write_pack_idx_v2(f, idx, pack_bin)
-    f.seek(0)
-    i = git.PackIdxV2(name, f)
+    os.close(fd)
+    w.count = 3
+    r = w._write_pack_idx_v2(name, idx, pack_bin)
+    i = git.PackIdxV2(name, open(name, 'rb'))
     WVPASSEQ(i.find_offset(obj_bin), 0xfffffffff)
     WVPASSEQ(i.find_offset(obj2_bin), 0xffffffffff)
     WVPASSEQ(i.find_offset(obj3_bin), 0xff)
-    f.close()
     os.remove(name)
 
 @wvtest
@@ -124,7 +150,7 @@ def test_bloom():
     ix.name='dummy.idx'
     ix.shatable = ''.join(hashes)
     for k in (4, 5):
-        b = git.ShaBloom.create('pybuptest.bloom', readwrite=True, expected=100, k=k)
+        b = git.ShaBloom.create('pybuptest.bloom', expected=100, k=k)
         b.add_idx(ix)
         WVPASSLT(b.pfalse_positive(), .1)
         b.close()
@@ -141,10 +167,10 @@ def test_bloom():
         os.unlink('pybuptest.bloom')
 
     tf = tempfile.TemporaryFile()
-    b = git.ShaBloom.create('bup.bloom', f=tf, readwrite=True, expected=100)
+    b = git.ShaBloom.create('bup.bloom', f=tf, expected=100)
     WVPASSEQ(b.rwfile, tf)
     WVPASSEQ(b.k, 5)
-# FIXME: commented out because it writes a gigabyte of zeros to disk.
-#    tf = tempfile.TemporaryFile()
-#    b = git.ShaBloom.create('bup.bloom', f=tf, readwrite=True, expected=2**28)
-#    WVPASSEQ(b.k, 4)
+    tf = tempfile.TemporaryFile()
+    b = git.ShaBloom.create('bup.bloom', f=tf, expected=2**28,
+                            delaywrite=False)
+    WVPASSEQ(b.k, 4)