• Kirill Smelkov's avatar
    tests: Don't try to access db.storage when automatically closing connections · fd6b5252
    Kirill Smelkov authored
    DB.close() does `del self.storage`.
    
    https://github.com/zopefoundation/ZODB/blob/5.6.0-14-g0eae10cd0/src/ZODB/DB.py#L646
    
    This way if DB was closed, but some conn(s) were not, it will crash in
    teardown as e.g. below:
    
        _____________ ERROR at teardown of test_bigfile_zblk1_zdata_reuse ______________
    
            def teardown_module():
        >       testdb.teardown()
    
        bigfile/tests/test_filezodb.py:58:
        _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    
        self = <wendelin.lib.testing.TestDB_ZEO object at 0x7fb9c0216350>
    
            def teardown(self):
                # close connections that test code forgot to close
                for connref, tb in self.connv:
                    conn = connref()
                    if conn is None:
                        continue
                    if not conn.opened:
                        continue    # still alive, but closed
                    print("W: testdb: teardown: %s left not closed by test code"
                          "; opened by:\n%s" % (conn, tb), file=sys.stderr)
    
                    db = conn.db()
        >           stor = db.storage
        E           AttributeError: 'DB' object has no attribute 'storage'
    
        lib/testing.py:217: AttributeError
    
    The fix is simple - don't use db.storage at all, because it is not actually used in that code.
    fd6b5252
testing.py 9.9 KB