summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Linke <dalito@users.noreply.github.com>2014-06-17 21:56:43 +0200
committerDavid Linke <dalito@users.noreply.github.com>2014-06-17 21:56:43 +0200
commitfb131b3ed997ccf2802819d799b01adafba5b9b6 (patch)
tree26f5d934777399177601799530bce135197829e8
parentdfed8686517cba3fa882d962ef87caf1e230d836 (diff)
downloadpint-fb131b3ed997ccf2802819d799b01adafba5b9b6.tar.gz
Fixed parameterized tests to work on Python 2 and 3
-rw-r--r--pint/testsuite/parameterized.py31
1 files changed, 26 insertions, 5 deletions
diff --git a/pint/testsuite/parameterized.py b/pint/testsuite/parameterized.py
index 07a8e01..0b452a6 100644
--- a/pint/testsuite/parameterized.py
+++ b/pint/testsuite/parameterized.py
@@ -3,10 +3,15 @@
# Adds Parameterized tests for Python's unittest module
#
# Code from: parameterizedtestcase, version: 0.1.0
-# Home-page: https://github.com/msabramo/python_unittest_parameterized_test_case
+# Homepage: https://github.com/msabramo/python_unittest_parameterized_test_case
# Author: Marc Abramowitz, email: marc@marc-abramowitz.com
# License: MIT
#
+# Fixed for to work in Python 2 & 3 with "add_metaclass" decorator from six
+# https://pypi.python.org/pypi/six
+# Author: Benjamin Peterson
+# License: MIT
+#
# Use like this:
#
# from parameterizedtestcase import ParameterizedTestCase
@@ -32,6 +37,22 @@ from functools import wraps
import collections
+def add_metaclass(metaclass):
+ """Class decorator for creating a class with a metaclass."""
+ def wrapper(cls):
+ orig_vars = cls.__dict__.copy()
+ orig_vars.pop('__dict__', None)
+ orig_vars.pop('__weakref__', None)
+ slots = orig_vars.get('__slots__')
+ if slots is not None:
+ if isinstance(slots, str):
+ slots = [slots]
+ for slots_var in slots:
+ orig_vars.pop(slots_var)
+ return metaclass(cls.__name__, cls.__bases__, orig_vars)
+ return wrapper
+
+
def augment_method_docstring(method, new_class_dict, classname,
param_names, param_values, new_method):
param_assignments_str = '; '.join(
@@ -99,8 +120,8 @@ class ParameterizedTestCaseMetaClass(type):
return new_method
-
-class ParameterizedTestMixin(object, metaclass=ParameterizedTestCaseMetaClass):
+@add_metaclass(ParameterizedTestCaseMetaClass)
+class ParameterizedTestMixin(object):
@classmethod
def parameterize(cls, param_names, data,
func_name_format='{func_name}_{case_num:05d}'):
@@ -126,6 +147,6 @@ class ParameterizedTestMixin(object, metaclass=ParameterizedTestCaseMetaClass):
return decorator
-
-class ParameterizedTestCase(unittest.TestCase, ParameterizedTestMixin, metaclass=ParameterizedTestCaseMetaClass):
+@add_metaclass(ParameterizedTestCaseMetaClass)
+class ParameterizedTestCase(unittest.TestCase, ParameterizedTestMixin):
pass