]> arthur.barton.de Git - bup.git/commitdiff
damage-cmd: adjust for python 3 and enable test-fsck
authorRob Browning <rlb@defaultvalue.org>
Tue, 31 Dec 2019 17:47:47 +0000 (11:47 -0600)
committerRob Browning <rlb@defaultvalue.org>
Sun, 2 Feb 2020 19:30:12 +0000 (13:30 -0600)
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
Makefile
cmd/damage-cmd.py

index 74b41c1ef173876119de220509a6f7ab9d635233..89bbffbf52af3f89e9384d61fbd4858443655b22 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -170,6 +170,7 @@ runtests-python: all t/tmp
 cmdline_tests := \
   t/test-argv \
   t/test-compression.sh \
+  t/test-fsck.sh \
   t/test-index-clear.sh \
   t/test-ls \
   t/test-ls-remote \
@@ -191,7 +192,6 @@ ifeq "2" "$(bup_python_majver)"
     t/test-fuse.sh \
     t/test-drecurse.sh \
     t/test-cat-file.sh \
-    t/test-fsck.sh \
     t/test-index-check-device.sh \
     t/test-meta.sh \
     t/test-on.sh \
index ca2e98c7a9bc06d77a1f1b457c71f97c11724bd9..07f0e03b25f3255d8ca522b4e661c61fd1fd91ff 100755 (executable)
@@ -9,15 +9,13 @@ from __future__ import absolute_import
 import sys, os, random
 
 from bup import options
-from bup.compat import range
+from bup.compat import argv_bytes, bytes_from_uint, range
 from bup.helpers import log
+from bup.io import path_msg
 
 
 def randblock(n):
-    l = []
-    for i in range(n):
-        l.append(chr(random.randrange(0,256)))
-    return ''.join(l)
+    return b''.join(bytes_from_uint(random.randrange(0,256)) for i in range(n))
 
 
 optspec = """
@@ -40,27 +38,27 @@ if opt.seed != None:
     random.seed(opt.seed)
 
 for name in extra:
-    log('Damaging "%s"...\n' % name)
-    f = open(name, 'r+b')
-    st = os.fstat(f.fileno())
-    size = st.st_size
-    if opt.percent or opt.size:
-        ms1 = int(float(opt.percent or 0)/100.0*size) or size
-        ms2 = opt.size or size
-        maxsize = min(ms1, ms2)
-    else:
-        maxsize = 1
-    chunks = opt.num or 10
-    chunksize = size/chunks
-    for r in range(chunks):
-        sz = random.randrange(1, maxsize+1)
-        if sz > size:
-            sz = size
-        if opt.equal:
-            ofs = r*chunksize
+    name = argv_bytes(name)
+    log('Damaging "%s"...\n' % path_msg(name))
+    with open(name, 'r+b') as f:
+        st = os.fstat(f.fileno())
+        size = st.st_size
+        if opt.percent or opt.size:
+            ms1 = int(float(opt.percent or 0)/100.0*size) or size
+            ms2 = opt.size or size
+            maxsize = min(ms1, ms2)
         else:
-            ofs = random.randrange(0, size - sz + 1)
-        log('  %6d bytes at %d\n' % (sz, ofs))
-        f.seek(ofs)
-        f.write(randblock(sz))
-    f.close()
+            maxsize = 1
+        chunks = opt.num or 10
+        chunksize = size // chunks
+        for r in range(chunks):
+            sz = random.randrange(1, maxsize+1)
+            if sz > size:
+                sz = size
+            if opt.equal:
+                ofs = r*chunksize
+            else:
+                ofs = random.randrange(0, size - sz + 1)
+            log('  %6d bytes at %d\n' % (sz, ofs))
+            f.seek(ofs)
+            f.write(randblock(sz))