mitmproxy/test/tutils.py

69 lines
1.8 KiB
Python
Raw Normal View History

import cStringIO
import tempfile
import os
import shutil
2012-06-18 21:42:32 +00:00
from contextlib import contextmanager
from netlib import tcp, utils
def treader(bytes):
"""
Construct a tcp.Read object from bytes.
"""
fp = cStringIO.StringIO(bytes)
return tcp.Reader(fp)
2012-06-18 21:42:32 +00:00
@contextmanager
def tmpdir(*args, **kwargs):
orig_workdir = os.getcwd()
temp_workdir = tempfile.mkdtemp(*args, **kwargs)
os.chdir(temp_workdir)
yield temp_workdir
os.chdir(orig_workdir)
shutil.rmtree(temp_workdir)
def raises(exc, obj, *args, **kwargs):
"""
Assert that a callable raises a specified exception.
:exc An exception class or a string. If a class, assert that an
exception of this type is raised. If a string, assert that the string
occurs in the string representation of the exception, based on a
case-insenstivie match.
:obj A callable object.
:args Arguments to be passsed to the callable.
:kwargs Arguments to be passed to the callable.
"""
try:
ret = obj(*args, **kwargs)
except Exception as v:
2012-06-18 21:42:32 +00:00
if isinstance(exc, basestring):
if exc.lower() in str(v).lower():
return
else:
raise AssertionError(
"Expected %s, but caught %s" % (
2012-06-18 21:42:32 +00:00
repr(str(exc)), v
)
)
else:
if isinstance(v, exc):
return
else:
raise AssertionError(
"Expected %s, but caught %s %s" % (
2012-06-18 21:42:32 +00:00
exc.__name__, v.__class__.__name__, str(v)
)
)
raise AssertionError("No exception raised. Return value: {}".format(ret))
2012-06-18 21:42:32 +00:00
test_data = utils.Data(__name__)