# coding: utf-8 from __future__ import unicode_literals, division, absolute_import, print_function import imp import os import unittest __version__ = '1.4.0' __version_info__ = (1, 4, 0) def _import_from(mod, path, mod_dir=None): """ Imports a module from a specific path :param mod: A unicode string of the module name :param path: A unicode string to the directory containing the module :param mod_dir: If the sub directory of "path" is different than the "mod" name, pass the sub directory as a unicode string :return: None if not loaded, otherwise the module """ if mod_dir is None: mod_dir = mod if not os.path.exists(path): return None if not os.path.exists(os.path.join(path, mod_dir)): return None try: mod_info = imp.find_module(mod_dir, [path]) return imp.load_module(mod, *mod_info) except ImportError: return None def make_suite(): """ Constructs a unittest.TestSuite() of all tests for the package. For use with setuptools. :return: A unittest.TestSuite() object """ loader = unittest.TestLoader() suite = unittest.TestSuite() for test_class in test_classes(): tests = loader.loadTestsFromTestCase(test_class) suite.addTests(tests) return suite def test_classes(): """ Returns a list of unittest.TestCase classes for the package :return: A list of unittest.TestCase classes """ # If we are in a source folder and these tests aren't installed as a # package, we want to load asn1crypto from this source folder tests_dir = os.path.dirname(os.path.abspath(__file__)) asn1crypto = None if os.path.basename(tests_dir) == 'tests': asn1crypto = _import_from( 'asn1crypto', os.path.join(tests_dir, '..') ) if asn1crypto is None: import asn1crypto if asn1crypto.__version__ != __version__: raise AssertionError( ('asn1crypto_tests version %s can not be run with ' % __version__) + ('asn1crypto version %s' % asn1crypto.__version__) ) from .test_algos import AlgoTests from .test_cms import CMSTests from .test_crl import CRLTests from .test_csr import CSRTests from .test_init import InitTests from .test_keys import KeysTests from .test_ocsp import OCSPTests from .test_pem import PEMTests from .test_pkcs12 import PKCS12Tests from .test_tsp import TSPTests from .test_x509 import X509Tests from .test_util import UtilTests from .test_parser import ParserTests from .test_core import CoreTests return [ AlgoTests, CMSTests, CRLTests, CSRTests, InitTests, KeysTests, OCSPTests, PEMTests, PKCS12Tests, TSPTests, UtilTests, ParserTests, X509Tests, CoreTests ]