feat(Anaconda): Local Repo
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
import glob
|
||||
import importlib
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
import six
|
||||
|
||||
from meh import ExceptionInfo
|
||||
from meh.dump import ExceptionDump
|
||||
|
||||
class BaseTestCase(unittest.TestCase):
|
||||
def dump(self, conf, obj):
|
||||
from inspect import stack as _stack
|
||||
stack = _stack()[1:]
|
||||
|
||||
dump = ExceptionDump(ExceptionInfo(None, None, stack), conf)
|
||||
return dump.dump(obj)
|
||||
|
||||
def openFile(self, mode="w"):
|
||||
(fd, path) = tempfile.mkstemp()
|
||||
# only Python 3 has supports the "encoding" keyword argument
|
||||
if six.PY2:
|
||||
fo = os.fdopen(fd, mode)
|
||||
else:
|
||||
fo = os.fdopen(fd, mode, encoding="utf-8")
|
||||
|
||||
return (fo, path)
|
||||
|
||||
def tracebackContains(self, path, s):
|
||||
f = open(path)
|
||||
while True:
|
||||
l = f.readline()
|
||||
if l == "":
|
||||
f.close()
|
||||
return False
|
||||
|
||||
if l.find(s) != -1:
|
||||
f.close()
|
||||
return True
|
||||
|
||||
f.close()
|
||||
return False
|
||||
|
||||
def loadModules(moduleDir, cls_pattern="_TestCase", skip_list=None):
|
||||
'''taken from firstboot/loader.py'''
|
||||
|
||||
if not skip_list:
|
||||
skip_list = ["__init__", "baseclass"]
|
||||
|
||||
# Guaruntee that __init__ is skipped
|
||||
if skip_list.count("__init__") == 0:
|
||||
skip_list.append("__init__")
|
||||
|
||||
tests = list()
|
||||
|
||||
# Make sure moduleDir is in the system path so imputil works.
|
||||
if not moduleDir in sys.path:
|
||||
sys.path.insert(0, moduleDir)
|
||||
|
||||
# Get a list of all *.py files in moduleDir
|
||||
lst = map(lambda x: os.path.splitext(os.path.basename(x))[0],
|
||||
glob.glob(moduleDir + "/*.py"))
|
||||
|
||||
# Inspect each .py file found
|
||||
for module in lst:
|
||||
if module in skip_list:
|
||||
continue
|
||||
|
||||
# Attempt to load the found module.
|
||||
try:
|
||||
loaded = importlib.import_module(module)
|
||||
except ImportError:
|
||||
print("Error loading module %s." % module)
|
||||
continue
|
||||
|
||||
# Find class names that match the supplied pattern (default: "_TestCase")
|
||||
beforeCount = len(tests)
|
||||
for obj in loaded.__dict__.keys():
|
||||
if obj.endswith(cls_pattern):
|
||||
tests.append(loaded.__dict__[obj])
|
||||
afterCount = len(tests)
|
||||
|
||||
# Warn if no tests found
|
||||
if beforeCount == afterCount:
|
||||
print("Module %s does not contain any test cases; skipping." % module)
|
||||
continue
|
||||
|
||||
return tests
|
||||
|
||||
# Run the tests
|
||||
if __name__ == "__main__":
|
||||
|
||||
# Create a test suite
|
||||
MehTestSuite = unittest.TestSuite()
|
||||
|
||||
# Find tests to add
|
||||
tstList = loadModules(os.path.join(os.environ.get("PWD"), "tests/"))
|
||||
for tst in tstList:
|
||||
MehTestSuite.addTest(tst())
|
||||
|
||||
# Run tests
|
||||
unittest.main(defaultTest="MehTestSuite")
|
||||
Reference in New Issue
Block a user