mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-27 10:26:23 +00:00
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
|
import tempfile, os, shutil
|
||
|
from contextlib import contextmanager
|
||
|
from libpathod import utils
|
||
|
|
||
|
|
||
|
|
||
|
@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:
|
||
|
apply(obj, args, kwargs)
|
||
|
except Exception, v:
|
||
|
if isinstance(exc, basestring):
|
||
|
if exc.lower() in str(v).lower():
|
||
|
return
|
||
|
else:
|
||
|
raise AssertionError(
|
||
|
"Expected %s, but caught %s"%(
|
||
|
repr(str(exc)), v
|
||
|
)
|
||
|
)
|
||
|
else:
|
||
|
if isinstance(v, exc):
|
||
|
return
|
||
|
else:
|
||
|
raise AssertionError(
|
||
|
"Expected %s, but caught %s %s"%(
|
||
|
exc.__name__, v.__class__.__name__, str(v)
|
||
|
)
|
||
|
)
|
||
|
raise AssertionError("No exception raised.")
|
||
|
|
||
|
test_data = utils.Data(__name__)
|