summaryrefslogtreecommitdiff
path: root/indra/viewer_components/manager/tests/with_setup_args.py
diff options
context:
space:
mode:
Diffstat (limited to 'indra/viewer_components/manager/tests/with_setup_args.py')
-rw-r--r--indra/viewer_components/manager/tests/with_setup_args.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/indra/viewer_components/manager/tests/with_setup_args.py b/indra/viewer_components/manager/tests/with_setup_args.py
new file mode 100644
index 0000000000..38350ab8c4
--- /dev/null
+++ b/indra/viewer_components/manager/tests/with_setup_args.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+
+# $LicenseInfo:firstyear=2016&license=internal$
+#
+# Copyright (c) 2016, Linden Research, Inc.
+#
+# The following source code is PROPRIETARY AND CONFIDENTIAL. Use of
+# this source code is governed by the Linden Lab Source Code Disclosure
+# Agreement ("Agreement") previously entered between you and Linden
+# Lab. By accessing, using, copying, modifying or distributing this
+# software, you acknowledge that you have been informed of your
+# obligations under the Agreement and agree to abide by those obligations.
+#
+# ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+# WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+# COMPLETENESS OR PERFORMANCE.
+# $/LicenseInfo$
+#
+# Taken from: https://gist.github.com/garyvdm/392ae20c673c7ee58d76
+
+"""
+@file with_setup_args.py
+@author garyvdm
+@date 2016-06-02
+"""
+
+
+def with_setup_args(setup, teardown=None):
+ """Decorator to add setup and/or teardown methods to a test function::
+ @with_setup_args(setup, teardown)
+ def test_something():
+ " ... "
+ The setup function should return (args, kwargs) which will be passed to
+ test function, and teardown function.
+ Note that `with_setup_args` is useful *only* for test functions, not for test
+ methods or inside of TestCase subclasses.
+ """
+ def decorate(func):
+ args = []
+ kwargs = {}
+
+ def test_wrapped():
+ func(*args, **kwargs)
+
+ test_wrapped.__name__ = func.__name__
+
+ def setup_wrapped():
+ a, k = setup()
+ args.extend(a)
+ kwargs.update(k)
+ if hasattr(func, 'setup'):
+ func.setup()
+ test_wrapped.setup = setup_wrapped
+
+ if teardown:
+ def teardown_wrapped():
+ if hasattr(func, 'teardown'):
+ func.teardown()
+ teardown(*args, **kwargs)
+
+ test_wrapped.teardown = teardown_wrapped
+ else:
+ if hasattr(func, 'teardown'):
+ test_wrapped.teardown = func.teardown()
+ return test_wrapped
+ return decorate \ No newline at end of file