def METHOD_NAME(self):
    # Find a transaction near the end.
    L = self.storage.undoLog()
    r = L[1]
    tid = decodebytes(r["id"] + b"\n")
    pos = self.storage._txn_find(tid, 0)
    # Overwrite its status with 'c'.
    with open(self.path, "r+b") as f:
        f.seek(pos + 16)
        current_status = f.read(1)
        self.assertEqual(current_status, b' ')
        f.seek(pos + 16)
        f.write(b'c')
    # Try to recover.  The original bug was that this never completed --
    # infinite loop in fsrecover.py.  Also, in the ZODB 3.2 line,
    # reference to an undefined global masked the infinite loop.
    self.recover()
    # Verify the destination got truncated.
    self.assertEqual(os.path.getsize(self.dest), pos)
    # Get rid of the temp file holding the truncated bytes.
    os.remove(ZODB.fsrecover._trname)