diff options
author | David Linke <dalito@users.noreply.github.com> | 2014-06-17 21:56:43 +0200 |
---|---|---|
committer | David Linke <dalito@users.noreply.github.com> | 2014-06-17 21:56:43 +0200 |
commit | fb131b3ed997ccf2802819d799b01adafba5b9b6 (patch) | |
tree | 26f5d934777399177601799530bce135197829e8 | |
parent | dfed8686517cba3fa882d962ef87caf1e230d836 (diff) | |
download | pint-fb131b3ed997ccf2802819d799b01adafba5b9b6.tar.gz |
Fixed parameterized tests to work on Python 2 and 3
-rw-r--r-- | pint/testsuite/parameterized.py | 31 |
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 |