diff --git a/python-parameterized.changes b/python-parameterized.changes index 32ec973..d7a8a0d 100644 --- a/python-parameterized.changes +++ b/python-parameterized.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Sep 14 15:10:37 UTC 2020 - Matej Cepl + +- Add remove_nose.patch to eliminate nose dependency. The patch + is not very good, it still skips plenty of yield tests (which + were ignored even before, so it is not even a regression). + ------------------------------------------------------------------- Fri Aug 14 03:29:41 UTC 2020 - John Vandenberg diff --git a/python-parameterized.spec b/python-parameterized.spec index c057043..9f80b88 100644 --- a/python-parameterized.spec +++ b/python-parameterized.spec @@ -27,14 +27,15 @@ Source: https://files.pythonhosted.org/packages/source/p/parameterized/p # PATCH-FIX-UPSTREAM skip_Documentation_tests.patch gh#wolever/parameterized#84 mcepl@suse.com # Skip tests failing with Python 3.8 Patch0: skip_Documentation_tests.patch +# PATCH-FIX-UPSTREAM remove_nose.patch mcepl@suse.com +# Remove nose dependency (patch is not very good, DO NOT SEND UPSTREAM!) +Patch1: remove_nose.patch BuildRequires: %{python_module mock} BuildRequires: %{python_module nose2} -BuildRequires: %{python_module nose} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros -Suggests: python-nose Suggests: python-nose2 BuildArch: noarch %python_subpackages @@ -55,8 +56,7 @@ Parameterized testing with any Python test framework. %check export LANG=en_US.UTF8 -%{python_expand nosetests-%$python_version} -%{python_expand nose2-%$python_version} +%{python_expand nose2-%$python_version -v -B --pretty-assert} %python_exec -m unittest parameterized.test %pytest parameterized/test.py diff --git a/remove_nose.patch b/remove_nose.patch new file mode 100644 index 0000000..b11b131 --- /dev/null +++ b/remove_nose.patch @@ -0,0 +1,128 @@ +--- + parameterized/parameterized.py | 7 ++++--- + parameterized/test.py | 30 ++++++++++++++++-------------- + 2 files changed, 20 insertions(+), 17 deletions(-) + +--- a/parameterized/test.py ++++ b/parameterized/test.py +@@ -4,7 +4,7 @@ import inspect + import mock + import sys + from unittest import TestCase, skipIf +-from nose.tools import assert_equal, assert_raises ++import pytest + + from .parameterized import ( + PY3, PY2, parameterized, param, parameterized_argument_value_pairs, +@@ -88,12 +88,12 @@ if not PYTEST: + self.actual_order = self.stack.pop(0) + + def tearDown(self): +- missing_tests.remove("teardown_called(%s)" %(self.stack.pop(0), )) ++ missing_tests.remove("teardown_called(%s)" % (self.stack.pop(0), )) + + @parameterized([(1, ), (2, )]) + def test_setup(self, count, *a): +- assert_equal(self.actual_order, "setup %s" %(count, )) +- missing_tests.remove("test_setup(%s)" %(self.actual_order, )) ++ assert self.actual_order == "setup %s" % count ++ missing_tests.remove("test_setup(%s)" % self.actual_order) + + + def custom_naming_func(custom_tag): +@@ -236,9 +236,9 @@ class TestParamerizedOnTestCase(TestCase + frame_locals = frame[0].f_locals + nose_test_method_name = frame_locals['a'][0]._testMethodName + expected_name = "test_on_TestCase2_custom_name_" + str(foo) +- assert_equal(nose_test_method_name, expected_name, +- "Test Method name '%s' did not get customized to expected: '%s'" % +- (nose_test_method_name, expected_name)) ++ assert nose_test_method_name == expected_name, \ ++ "Test Method name '%s' did not get customized to expected: '%s'" % \ ++ (nose_test_method_name, expected_name) + missing_tests.remove("%s(%r, bar=%r)" %(expected_name, foo, bar)) + + +@@ -261,7 +261,7 @@ class TestParameterizedExpandDocstring(T + actual_docstring = test_method.__doc__ + if rstrip: + actual_docstring = actual_docstring.rstrip() +- assert_equal(actual_docstring, expected_docstring) ++ assert actual_docstring == expected_docstring + + @parameterized.expand([param("foo")], + doc_func=lambda f, n, p: "stuff") +@@ -337,7 +337,7 @@ def test_helpful_error_on_empty_iterable + + def test_skip_test_on_empty_iterable(): + func = parameterized([], skip_on_empty=True)(lambda: None) +- assert_raises(SkipTest, func) ++ pytest.raises(SkipTest, func) + + + def test_helpful_error_on_empty_iterable_input_expand(): +@@ -370,7 +370,7 @@ def test_helpful_error_on_non_iterable_i + + def tearDownModule(): + missing = sorted(list(missing_tests)) +- assert_equal(missing, []) ++ assert missing == [] + + def test_old_style_classes(): + if PY3: +@@ -420,7 +420,7 @@ class TestOldStyleClass: + def test_parameterized_argument_value_pairs(func_params, p, expected): + helper = eval("lambda %s: None" %(func_params, )) + actual = parameterized_argument_value_pairs(helper, p) +- assert_equal(actual, expected) ++ assert actual == expected + + + @parameterized([ +@@ -430,7 +430,7 @@ def test_parameterized_argument_value_pa + (123456789, "12...89", 4), + ]) + def test_short_repr(input, expected, n=6): +- assert_equal(short_repr(input, n=n), expected) ++ assert short_repr(input, n=n) == expected + + @parameterized([ + ("foo", ), +@@ -444,7 +444,7 @@ cases_over_10 = [(i, i+1) for i in range + + @parameterized(cases_over_10) + def test_cases_over_10(input, expected): +- assert_equal(input, expected-1) ++ assert input == expected-1 + + + @parameterized_class(("a", "b", "c"), [ +@@ -461,7 +461,7 @@ class TestParameterizedClass(TestCase): + + def _assertions(self, test_name): + assert hasattr(self, "a") +- assert_equal(self.b + self.c, 3) ++ assert self.b + self.c == 3 + missing_tests.remove("%s:%s(%r, %r, %r)" %( + self.__class__.__name__, + test_name, +--- a/parameterized/parameterized.py ++++ b/parameterized/parameterized.py +@@ -276,7 +276,7 @@ def default_name_func(func, num, p): + + _test_runner_override = None + _test_runner_guess = False +-_test_runners = set(["unittest", "unittest2", "nose", "nose2", "pytest"]) ++_test_runners = set(["unittest", "unittest2", "nose2", "pytest"]) + _test_runner_aliases = { + "_pytest": "pytest", + } +@@ -582,7 +582,7 @@ def parameterized_class(attrs, input_val + ) + + class_name_func = class_name_func or default_class_name_func +- ++ + if classname_func: + warnings.warn( + "classname_func= is deprecated; use class_name_func= instead. "