]> arthur.barton.de Git - bup.git/commitdiff
_encode_packobj: raise ValueError for bad level
authorRob Browning <rlb@defaultvalue.org>
Sun, 3 Jul 2016 19:21:20 +0000 (14:21 -0500)
committerRob Browning <rlb@defaultvalue.org>
Sun, 3 Jul 2016 19:30:37 +0000 (14:30 -0500)
Move the compression_level argument test to the start of the function,
be even more restrictive, and add trivial tests.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/git.py
lib/bup/t/tgit.py

index fa677fe4521fece451b307f266332e7a250fe83f..6a38428aaf76f85cfe2a0ff24ca4cf708bb3a592 100644 (file)
@@ -252,6 +252,8 @@ def tree_decode(buf):
 
 
 def _encode_packobj(type, content, compression_level=1):
+    if compression_level not in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9):
+        raise ValueError('invalid compression level %s' % compression_level)
     szout = ''
     sz = len(content)
     szbits = (sz & 0x0f) | (_typemap[type]<<4)
@@ -263,10 +265,6 @@ def _encode_packobj(type, content, compression_level=1):
             break
         szbits = sz & 0x7f
         sz >>= 7
-    if compression_level > 9:
-        raise BaseException("Compression Level Above 9")
-    elif compression_level < 0:
-        raise BaseException("Compression Level Below 0")
     z = zlib.compressobj(compression_level)
     yield szout
     yield z.compress(content)
index 0b97adf6bbfbec2e9a55ba3c86deef4d8fe09213..44b8e0edbee5eccfc7e35cc18cf3c9642dd60b60 100644 (file)
@@ -72,6 +72,13 @@ def testencode():
         WVPASSEQ(git._decode_packobj(packb), ('blob', s))
         WVPASSEQ(git._decode_packobj(packt), ('tree', s))
         WVPASSEQ(git._decode_packobj(packc), ('commit', s))
+        for i in xrange(10):
+            WVPASS(git._encode_looseobj('blob', s, compression_level=i))
+        def encode_pobj(n):
+            return ''.join(git._encode_packobj('blob', s, compression_level=n))
+        WVEXCEPT(ValueError, encode_pobj, -1)
+        WVEXCEPT(ValueError, encode_pobj, 10)
+        WVEXCEPT(ValueError, encode_pobj, 'x')
 
 
 @wvtest