aboutsummaryrefslogtreecommitdiffstats
path: root/test/tutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/tutils.py')
-rw-r--r--test/tutils.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/test/tutils.py b/test/tutils.py
new file mode 100644
index 00000000..d5609d7b
--- /dev/null
+++ b/test/tutils.py
@@ -0,0 +1,57 @@
+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__)