summaryrefslogtreecommitdiff
path: root/pecan/tests/test_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'pecan/tests/test_util.py')
-rw-r--r--pecan/tests/test_util.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/pecan/tests/test_util.py b/pecan/tests/test_util.py
new file mode 100644
index 0000000..c1cdfbd
--- /dev/null
+++ b/pecan/tests/test_util.py
@@ -0,0 +1,68 @@
+import functools
+import inspect
+import unittest
+
+from pecan import expose
+from pecan import util
+
+
+class TestArgSpec(unittest.TestCase):
+
+ @property
+ def controller(self):
+
+ class RootController(object):
+
+ @expose()
+ def index(self, a, b, c=1, *args, **kwargs):
+ return 'Hello, World!'
+
+ return RootController()
+
+ def test_no_decorator(self):
+ expected = inspect.getargspec(self.controller.index.__func__)
+ actual = util.getargspec(self.controller.index.__func__)
+ assert expected == actual
+
+ def test_simple_decorator(self):
+ def dec(f):
+ return f
+
+ expected = inspect.getargspec(self.controller.index.__func__)
+ actual = util.getargspec(dec(self.controller.index.__func__))
+ assert expected == actual
+
+ def test_simple_wrapper(self):
+ def dec(f):
+ @functools.wraps(f)
+ def wrapped(*a, **kw):
+ return f(*a, **kw)
+ return wrapped
+
+ expected = inspect.getargspec(self.controller.index.__func__)
+ actual = util.getargspec(dec(self.controller.index.__func__))
+ assert expected == actual
+
+ def test_multiple_decorators(self):
+ def dec(f):
+ @functools.wraps(f)
+ def wrapped(*a, **kw):
+ return f(*a, **kw)
+ return wrapped
+
+ expected = inspect.getargspec(self.controller.index.__func__)
+ actual = util.getargspec(dec(dec(dec(self.controller.index.__func__))))
+ assert expected == actual
+
+ def test_decorator_with_args(self):
+ def dec(flag):
+ def inner(f):
+ @functools.wraps(f)
+ def wrapped(*a, **kw):
+ return f(*a, **kw)
+ return wrapped
+ return inner
+
+ expected = inspect.getargspec(self.controller.index.__func__)
+ actual = util.getargspec(dec(True)(self.controller.index.__func__))
+ assert expected == actual