Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > b19df05292ea6fc997c221dbeca1120c > files > 389

m2crypto-0.20.2-5.fc13.i686.rpm

#!/usr/bin/python

def suite():
    from M2Crypto import m2
    import os
    import unittest
    
    def my_import(name):
        # See http://docs.python.org/lib/built-in-funcs.html#l2h-6
        components = name.split('.')
        try:
            # python setup.py test
            mod = __import__(name)
            for comp in components[1:]:
                mod = getattr(mod, comp)
        except ImportError:
            # python tests/alltests.py
            mod = __import__(components[1])
        return mod

    modules_to_test = [
        'tests.test_asn1',
        'tests.test_bio',
        'tests.test_bio_membuf',
        'tests.test_bio_file',
        'tests.test_bio_iobuf',
        'tests.test_bio_ssl',
        'tests.test_bn',
        'tests.test_authcookie',
        'tests.test_dh',
        'tests.test_dsa',
        'tests.test_engine',
        'tests.test_evp',
        'tests.test_obj',
        'tests.test_pgp',
        'tests.test_rand',
        'tests.test_rc4',
        'tests.test_rsa',
        'tests.test_smime',
        'tests.test_threading',
        'tests.test_x509']
    if os.name == 'posix':
        modules_to_test.append('tests.test_ssl')
    elif os.name == 'nt':
        modules_to_test.append('tests.test_ssl_win')
    if m2.OPENSSL_VERSION_NUMBER >= 0x90800F and m2.OPENSSL_NO_EC == 0:
        modules_to_test.append('tests.test_ecdh')
        modules_to_test.append('tests.test_ecdsa')
        modules_to_test.append('tests.test_ec_curves')
    alltests = unittest.TestSuite()
    for module in map(my_import, modules_to_test):
        alltests.addTest(module.suite())
    return alltests


def dump_garbage():
    import gc
    print '\nGarbage:'
    gc.collect()
    if len(gc.garbage):
    
        print '\nLeaked objects:'
        for x in gc.garbage:
            s = str(x)
            if len(s) > 77: s = s[:73]+'...'
            print type(x), '\n  ', s
    
        print 'There were %d leaks.' % len(gc.garbage)
    else:
        print 'Python garbage collector did not detect any leaks.'
        print 'However, it is still possible there are leaks in the C code.'


def runall(report_leaks=0):
    report_leaks = report_leaks
    
    if report_leaks:
        import gc
        gc.enable()
        gc.set_debug(gc.DEBUG_LEAK & ~gc.DEBUG_SAVEALL)
    
    import os, unittest
    from M2Crypto import Rand
    
    try:
        Rand.load_file('tests/randpool.dat', -1) 
        unittest.TextTestRunner(verbosity=2).run(suite())
        Rand.save_file('tests/randpool.dat')
    finally:
        if os.name == 'posix':
            from test_ssl import zap_servers
            zap_servers()

    if report_leaks:
        dump_garbage()
    

if __name__ == '__main__':
    runall(0)