Source code for tkp.testutil.decorators

import os
import unittest


def requires_database():
    if os.environ.get("TKP_DISABLEDB", False):
        return unittest.skip("Database functionality disabled in configuration")
    return lambda func: func


def requires_mongodb():
    if os.environ.get("TKP_DISABLEMONGODB", False):
        return unittest.skip("mongodb functionality disabled in configuration")
    return lambda func: func


def requires_data(*args):
    for filename in args:
        if not os.path.exists(filename):
            return unittest.skip("Test data (%s) not available" % filename)
    return lambda func: func


def requires_module(module_name):
    try:
        __import__(module_name)
    except ImportError:
        return unittest.skip("Required module (%s) not available" % module_name)
    return lambda func: func


def duration(test_duration):
    max_duration = float(os.environ.get("TKP_MAXTESTDURATION", False))
    if max_duration:
        if max_duration < test_duration:
            return unittest.skip(
             "Tests of duration > %s disabled with TKP_MAXTESTDURATION" %
                max_duration)
    return lambda func: func


[docs]def requires_test_db_managed(): """ This decorator is used to disable tests that do potentially low level database management operations like destroy and create. You can enable these tests by setting the TKP_TESTDBMANAGEMENT environment variable. """ if os.environ.get('TKP_DBENGINE', 'postgresql') == 'monetdb': return unittest.skip("DB management tests not supported for Monetdb," "must be tested manually.") if os.environ.get("TKP_TESTDBMANAGEMENT", False): return lambda func: func return unittest.skip("DB management tests disabled, TKP_TESTDBMANAGEMENT" " not set")
[docs]def high_ram_requirements(): """ Used to disable tests that break Travis due to out-of-memory issues. """ if os.environ.get("TRAVIS", False): return unittest.skip("High-ram requirement unit-tests disabled on Travis") return lambda func: func