From f49aa5cab7862466573aea0db3b03a989cf2640b Mon Sep 17 00:00:00 2001
From: jvoisin <julien.voisin@dustri.org>
Date: Sun, 8 Jul 2018 22:27:37 +0200
Subject: [PATCH] Achieve 100% coverage!

---
 libmat2/office.py             | 5 ++---
 libmat2/torrent.py            | 6 ++++--
 tests/test_corrupted_files.py | 2 +-
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/libmat2/office.py b/libmat2/office.py
index 6087c47..e0ee6d2 100644
--- a/libmat2/office.py
+++ b/libmat2/office.py
@@ -22,8 +22,7 @@ def _parse_xml(full_path: str):
     def parse_map(f):  # etree support for ns is a bit rough
         ns_map = dict()
         for event, (k, v) in ET.iterparse(f, ("start-ns", )):
-            if event == "start-ns":
-                ns_map[k] = v
+            ns_map[k] = v
         return ns_map
 
     ns = parse_map(full_path)
@@ -166,7 +165,7 @@ class MSOfficeParser(ArchiveBasedAbstractParser):
 
         elements = list()
         for element in tree.iterfind('.//w:ins', ns):
-            for position, item in enumerate(tree.iter()):
+            for position, item in enumerate(tree.iter()):  #pragma: no cover
                 if item == element:
                     for children in element.iterfind('./*'):
                         elements.append((element, position, children))
diff --git a/libmat2/torrent.py b/libmat2/torrent.py
index c1ea2ca..0f122b0 100644
--- a/libmat2/torrent.py
+++ b/libmat2/torrent.py
@@ -69,9 +69,11 @@ class _BencodeHandler(object):
     @staticmethod
     def __decode_string(s: bytes) -> Tuple[bytes, bytes]:
         colon = s.index(b':')
-        str_len = int(s[:colon])
-        if s[0] == '0' and colon != 1:
+        # FIXME Python3 is broken here, the call to `ord` shouldn't be needed,
+        # but apparently it is. This is utterly idiotic.
+        if (s[0] == ord('0') or s[0] == '0') and colon != 1:
             raise ValueError
+        str_len = int(s[:colon])
         s = s[1:]
         return s[colon:colon+str_len], s[colon+str_len:]
 
diff --git a/tests/test_corrupted_files.py b/tests/test_corrupted_files.py
index 2bb1c76..20b1efa 100644
--- a/tests/test_corrupted_files.py
+++ b/tests/test_corrupted_files.py
@@ -80,7 +80,7 @@ class TestCorruptedFiles(unittest.TestCase):
             torrent.TorrentParser('./tests/data/clean.torrent')
 
         with open("./tests/data/clean.torrent", "w") as f:
-            f.write("d01:AAAAAAAAA")
+            f.write("01:AAAAAAAAA")
         with self.assertRaises(ValueError):
             torrent.TorrentParser('./tests/data/clean.torrent')
 
-- 
GitLab