From 7e005bc400dff9a0e36a40ef5d636d596107f10f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Aug 25 2021 01:40:40 +0000 Subject: import python-nose-1.3.7-31.module+el8.5.0+12207+5c5719bc --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2cb3a71 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/nose-1.3.7.tar.gz diff --git a/.python-nose.metadata b/.python-nose.metadata new file mode 100644 index 0000000..6e25e36 --- /dev/null +++ b/.python-nose.metadata @@ -0,0 +1 @@ +97f2a04c9d43b29ddf4794a1a1d1ba803f1074c6 SOURCES/nose-1.3.7.tar.gz diff --git a/SOURCES/python-nose-coverage4.patch b/SOURCES/python-nose-coverage4.patch new file mode 100644 index 0000000..94d3f3c --- /dev/null +++ b/SOURCES/python-nose-coverage4.patch @@ -0,0 +1,21 @@ +diff -up nose-1.3.7/nose/plugins/cover.py.coverage4 nose-1.3.7/nose/plugins/cover.py +--- nose-1.3.7/nose/plugins/cover.py.coverage4 2015-04-04 03:28:20.000000000 -0600 ++++ nose-1.3.7/nose/plugins/cover.py 2016-11-09 16:16:32.832927855 -0700 +@@ -187,7 +187,7 @@ class Coverage(Plugin): + for name, module in sys.modules.items() + if self.wantModuleCoverage(name, module)] + log.debug("Coverage report will cover modules: %s", modules) +- self.coverInstance.report(modules, file=stream) ++ self.coverInstance.report(modules, file=stream, show_missing=True) + + import coverage + if self.coverHtmlDir: +@@ -207,7 +207,7 @@ class Coverage(Plugin): + # make sure we have minimum required coverage + if self.coverMinPercentage: + f = StringIO.StringIO() +- self.coverInstance.report(modules, file=f) ++ self.coverInstance.report(modules, file=f, show_missing=True) + + multiPackageRe = (r'-------\s\w+\s+\d+\s+\d+(?:\s+\d+\s+\d+)?' + r'\s+(\d+)%\s+\d*\s{0,1}$') diff --git a/SOURCES/python-nose-py35.patch b/SOURCES/python-nose-py35.patch new file mode 100644 index 0000000..604f60e --- /dev/null +++ b/SOURCES/python-nose-py35.patch @@ -0,0 +1,33 @@ +diff -up nose-1.3.7/functional_tests/test_load_tests_from_test_case.py.py35 nose-1.3.7/functional_tests/test_load_tests_from_test_case.py +--- nose-1.3.7/functional_tests/test_load_tests_from_test_case.py.py35 2012-09-29 02:18:54.000000000 -0600 ++++ nose-1.3.7/functional_tests/test_load_tests_from_test_case.py 2016-11-15 13:42:27.946707472 -0700 +@@ -29,6 +29,7 @@ class NoFixturePlug(Plugin): + pass + def tearDown(self): + pass ++ Derived.__qualname__ = Derived.__name__ + # must use nose loader here because the default loader in 2.3 + # won't load tests from base classes + l = loader.TestLoader() +diff -up nose-1.3.7/nose/util.py.py35 nose-1.3.7/nose/util.py +--- nose-1.3.7/nose/util.py.py35 2015-04-04 02:52:52.000000000 -0600 ++++ nose-1.3.7/nose/util.py 2016-11-15 13:42:27.946707472 -0700 +@@ -643,6 +643,7 @@ def transplant_class(cls, module): + pass + C.__module__ = module + C.__name__ = cls.__name__ ++ C.__qualname__ = cls.__name__ + return C + + +diff -up nose-1.3.7/unit_tests/test_xunit.py.py35 nose-1.3.7/unit_tests/test_xunit.py +--- nose-1.3.7/unit_tests/test_xunit.py.py35 2015-04-04 02:52:52.000000000 -0600 ++++ nose-1.3.7/unit_tests/test_xunit.py 2016-11-15 13:42:27.946707472 -0700 +@@ -16,6 +16,7 @@ def mktest(): + class TC(unittest.TestCase): + def runTest(self): + pass ++ TC.__qualname__ = TC.__name__ + test = TC() + return test + diff --git a/SOURCES/python-nose-py36.patch b/SOURCES/python-nose-py36.patch new file mode 100644 index 0000000..75a47c0 --- /dev/null +++ b/SOURCES/python-nose-py36.patch @@ -0,0 +1,69 @@ +From acf7c4e073030a69712172b133076101e2b7d81f Mon Sep 17 00:00:00 2001 +From: Tomas Orsava +Date: Mon, 12 Dec 2016 12:09:47 +0100 +Subject: [PATCH] Patch for compatibility with Python 3.6 + +Python 3.6 returns a ModuleNotFoundError instead of the previous ImportError. +--- + functional_tests/test_loader.py | 2 +- + functional_tests/test_withid_failures.rst | 12 ++++++------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/functional_tests/test_loader.py b/functional_tests/test_loader.py +index 81aaa7b..3f82122 100644 +--- a/functional_tests/test_loader.py ++++ b/functional_tests/test_loader.py +@@ -369,7 +369,7 @@ class TestNoseTestLoader(unittest.TestCase): + assert res.errors, "Expected errors but got none" + assert not res.failures, res.failures + err = res.errors[0][0].test.exc_class +- assert err is ImportError, \ ++ assert issubclass(err, ImportError), \ + "Expected import error, got %s" % err + + def test_load_nonsense_name(self): +diff --git a/functional_tests/test_withid_failures.rst b/functional_tests/test_withid_failures.rst +index cf09d4f..cb20886 100644 +--- a/functional_tests/test_withid_failures.rst ++++ b/functional_tests/test_withid_failures.rst +@@ -7,16 +7,16 @@ + >>> support = os.path.join(os.path.dirname(__file__), 'support', 'id_fails') + >>> argv = [__file__, '-v', '--with-id', '--id-file', idfile, support] + >>> run(argv=argv, plugins=[TestId()]) # doctest: +ELLIPSIS +- #1 Failure: ImportError (No module ...apackagethatdoesntexist...) ... ERROR ++ #1 Failure: ... (No module ...apackagethatdoesntexist...) ... ERROR + #2 test_b.test ... ok + #3 test_b.test_fail ... FAIL + + ====================================================================== +- ERROR: Failure: ImportError (No module ...apackagethatdoesntexist...) ++ ERROR: Failure: ... (No module ...apackagethatdoesntexist...) + ---------------------------------------------------------------------- + Traceback (most recent call last): + ... +- ImportError: No module ...apackagethatdoesntexist... ++ ...: No module ...apackagethatdoesntexist... + + ====================================================================== + FAIL: test_b.test_fail +@@ -35,14 +35,14 @@ Addressing failures works (sometimes). + >>> argv.append('1') + >>> _junk = sys.modules.pop('test_a', None) # 2.3 requires + >>> run(argv=argv, plugins=[TestId()]) #doctest: +ELLIPSIS +- #1 Failure: ImportError (No module ...apackagethatdoesntexist...) ... ERROR ++ #1 Failure: ... (No module ...apackagethatdoesntexist...) ... ERROR + + ====================================================================== +- ERROR: Failure: ImportError (No module ...apackagethatdoesntexist...) ++ ERROR: Failure: ... (No module ...apackagethatdoesntexist...) + ---------------------------------------------------------------------- + Traceback (most recent call last): + ... +- ImportError: No module ...apackagethatdoesntexist... ++ ...: No module ...apackagethatdoesntexist... + + ---------------------------------------------------------------------- + Ran 1 test in ...s +-- +2.11.0 + diff --git a/SOURCES/python-nose-readunicode.patch b/SOURCES/python-nose-readunicode.patch new file mode 100644 index 0000000..61d4cd2 --- /dev/null +++ b/SOURCES/python-nose-readunicode.patch @@ -0,0 +1,20 @@ +diff -up nose-1.3.7/nose/plugins/doctests.py.readunicode nose-1.3.7/nose/plugins/doctests.py +--- nose-1.3.7/nose/plugins/doctests.py.readunicode 2015-04-04 02:52:52.000000000 -0600 ++++ nose-1.3.7/nose/plugins/doctests.py 2016-11-15 14:24:54.298239018 -0700 +@@ -49,6 +49,7 @@ test. + """ + from __future__ import generators + ++import codecs + import logging + import os + import sys +@@ -259,7 +260,7 @@ class Doctest(Plugin): + """ + if self.extension and anyp(filename.endswith, self.extension): + name = os.path.basename(filename) +- dh = open(filename) ++ dh = codecs.open(filename, encoding='utf-8') + try: + doc = dh.read() + finally: diff --git a/SOURCES/python-nose-unicode.patch b/SOURCES/python-nose-unicode.patch new file mode 100644 index 0000000..a103da8 --- /dev/null +++ b/SOURCES/python-nose-unicode.patch @@ -0,0 +1,128 @@ +diff -up nose-1.3.7/AUTHORS.unicode nose-1.3.7/AUTHORS +diff -up nose-1.3.7/CHANGELOG.unicode nose-1.3.7/CHANGELOG +diff -up nose-1.3.7/nose/plugins/capture.py.unicode nose-1.3.7/nose/plugins/capture.py +--- nose-1.3.7/nose/plugins/capture.py.unicode 2015-04-04 02:52:52.000000000 -0600 ++++ nose-1.3.7/nose/plugins/capture.py 2016-11-15 13:58:18.713025335 -0700 +@@ -12,6 +12,7 @@ the options ``-s`` or ``--nocapture``. + import logging + import os + import sys ++import traceback + from nose.plugins.base import Plugin + from nose.pyversion import exc_to_unicode, force_unicode + from nose.util import ln +@@ -71,26 +72,56 @@ class Capture(Plugin): + def formatError(self, test, err): + """Add captured output to error report. + """ +- test.capturedOutput = output = self.buffer ++ test.capturedOutput = output = '' ++ output_exc_info = None ++ try: ++ test.capturedOutput = output = self.buffer ++ except UnicodeError: ++ # python2's StringIO.StringIO [1] class has this warning: ++ # ++ # The StringIO object can accept either Unicode or 8-bit strings, ++ # but mixing the two may take some care. If both are used, 8-bit ++ # strings that cannot be interpreted as 7-bit ASCII (that use the ++ # 8th bit) will cause a UnicodeError to be raised when getvalue() ++ # is called. ++ # ++ # This exception handler is a protection against issue #816 [2]. ++ # Capturing the exception info allows us to display it back to the ++ # user. ++ # ++ # [1] ++ # [2] ++ output_exc_info = sys.exc_info() + self._buf = None +- if not output: ++ if (not output) and (not output_exc_info): + # Don't return None as that will prevent other + # formatters from formatting and remove earlier formatters + # formats, instead return the err we got + return err + ec, ev, tb = err +- return (ec, self.addCaptureToErr(ev, output), tb) ++ return (ec, self.addCaptureToErr(ev, output, output_exc_info=output_exc_info), tb) + + def formatFailure(self, test, err): + """Add captured output to failure report. + """ + return self.formatError(test, err) + +- def addCaptureToErr(self, ev, output): ++ def addCaptureToErr(self, ev, output, output_exc_info=None): ++ # If given, output_exc_info should be a 3-tuple from sys.exc_info(), ++ # from an exception raised while trying to get the captured output. + ev = exc_to_unicode(ev) + output = force_unicode(output) +- return u'\n'.join([ev, ln(u'>> begin captured stdout <<'), +- output, ln(u'>> end captured stdout <<')]) ++ error_text = [ev, ln(u'>> begin captured stdout <<'), ++ output, ln(u'>> end captured stdout <<')] ++ if output_exc_info: ++ error_text.extend([u'OUTPUT ERROR: Could not get captured output.', ++ # ++ # ++ u"The test might've printed both 'unicode' strings and non-ASCII 8-bit 'str' strings.", ++ ln(u'>> begin captured stdout exception traceback <<'), ++ u''.join(traceback.format_exception(*output_exc_info)), ++ ln(u'>> end captured stdout exception traceback <<')]) ++ return u'\n'.join(error_text) + + def start(self): + self.stdout.append(sys.stdout) +diff -up nose-1.3.7/unit_tests/test_capture_plugin.py.unicode nose-1.3.7/unit_tests/test_capture_plugin.py +--- nose-1.3.7/unit_tests/test_capture_plugin.py.unicode 2012-09-29 02:18:54.000000000 -0600 ++++ nose-1.3.7/unit_tests/test_capture_plugin.py 2016-11-15 13:58:18.714025330 -0700 +@@ -4,6 +4,12 @@ import unittest + from optparse import OptionParser + from nose.config import Config + from nose.plugins.capture import Capture ++from nose.pyversion import force_unicode ++ ++if sys.version_info[0] == 2: ++ py2 = True ++else: ++ py2 = False + + class TestCapturePlugin(unittest.TestCase): + +@@ -62,6 +68,35 @@ class TestCapturePlugin(unittest.TestCas + c.end() + self.assertEqual(c.buffer, "test 日本\n") + ++ def test_does_not_crash_with_mixed_unicode_and_nonascii_str(self): ++ class Dummy: ++ pass ++ d = Dummy() ++ c = Capture() ++ c.start() ++ printed_nonascii_str = force_unicode("test 日本").encode('utf-8') ++ printed_unicode = force_unicode("Hello") ++ print printed_nonascii_str ++ print printed_unicode ++ try: ++ raise Exception("boom") ++ except: ++ err = sys.exc_info() ++ formatted = c.formatError(d, err) ++ _, fev, _ = formatted ++ ++ if py2: ++ for string in [force_unicode(printed_nonascii_str, encoding='utf-8'), printed_unicode]: ++ assert string not in fev, "Output unexpectedly found in error message" ++ assert d.capturedOutput == '', "capturedOutput unexpectedly non-empty" ++ assert "OUTPUT ERROR" in fev ++ assert "captured stdout exception traceback" in fev ++ assert "UnicodeDecodeError" in fev ++ else: ++ for string in [repr(printed_nonascii_str), printed_unicode]: ++ assert string in fev, "Output not found in error message" ++ assert string in d.capturedOutput, "Output not attached to test" ++ + def test_format_error(self): + class Dummy: + pass diff --git a/SPECS/python-nose.spec b/SPECS/python-nose.spec new file mode 100644 index 0000000..21913f9 --- /dev/null +++ b/SPECS/python-nose.spec @@ -0,0 +1,514 @@ +%bcond_without python3 +%bcond_with python36_module + +%global modname nose + +# Enable building without docs to avoid a circular dependency between this and python-sphinx +# +# Docs disabled permanently because the docs build config is not ported to +# Python 3 and thus cannot be built with Python 3 version of Sphinx. +%bcond_with docs + +# python2X and python3X are built form the same module, so we need a conditional for python2 bits +# the state of the conditional is not important in the spec, it is set in modulemd +%bcond_with python2 + +%global desc nose extends the test loading and running features of unit test, making\ +it easier to write, find and run tests.\ +\ +By default, nose will run tests in files or directories under the\ +current working directory whose names include "test" or "Test" at a\ +word boundary (like "test_this" or "functional_test" or "TestClass"\ +but not "libtest"). Test output is similar to that of unit test, but\ +also includes captured stdout output from failing tests, for easy\ +print-style debugging.\ +\ +These features, and many more, are customizable through the use of\ +plugins. Plugins included with nose provide support for doctest, code\ +coverage and profiling, flexible attribute-based test selection,\ +output capture and more.\ + + +Name: python-%{modname} +Version: 1.3.7 +Release: 31%{?dist} +BuildArch: noarch + +License: LGPLv2+ and Public Domain +Summary: Discovery-based unit test extension for Python +URL: https://nose.readthedocs.org/en/latest/ +Source0: http://pypi.python.org/packages/source/n/nose/nose-%{version}.tar.gz +# Make compatible with coverage 4.1 +# https://github.com/nose-devs/nose/pull/1004 +Patch0: python-nose-coverage4.patch +# Fix python 3.5 compat +# https://github.com/nose-devs/nose/pull/983 +Patch1: python-nose-py35.patch +# Fix UnicodeDecodeError with captured output +# https://github.com/nose-devs/nose/pull/988 +Patch2: python-nose-unicode.patch +# Allow docutils to read utf-8 source +Patch3: python-nose-readunicode.patch +# Fix Python 3.6 compatibility +# Python now returns ModuleNotFoundError instead of the previous ImportError +# https://github.com/nose-devs/nose/pull/1029 +Patch4: python-nose-py36.patch + +BuildRequires: dos2unix + +%description +%{desc} + +%package docs +Summary: Nose Documentation +%if %{with python3} +%if %{with docs} +BuildRequires: %{_bindir}/sphinx-build-3 +%endif +%endif + +%description docs +Documentation for Nose. + +%if %{with python2} +%package -n python2-%{modname} +Summary: %{summary} +BuildRequires: python2-devel +BuildRequires: python2-setuptools +BuildRequires: python2-coverage >= 3.4-1 +Requires: python2-setuptools +%{?python_provide:%python_provide python2-%{modname}} + +%description -n python2-%{modname} +%{desc} +%endif + +%if %{with python3} +%package -n python3-%{modname} +Summary: %{summary} +%if %{with python36_module} +BuildRequires: python36-devel +BuildRequires: python36-rpm-macros +%else +BuildRequires: python3-devel +%endif +BuildRequires: python3-setuptools +BuildRequires: python3-coverage >= 3.4-1 + +# Require alternatives version that implements the --keep-foreign flag +Requires(postun): alternatives >= 1.19.1-1 +# For alternatives +Requires: python36 +Requires(post): python36 +Requires(postun): python36 +Requires: python3-setuptools +%{?python_provide:%python_provide python3-%{modname}} +Obsoletes: platform-python-%{modname} < %{version}-%{release} + +%description -n python3-%{modname} +%{desc} + +This package installs the nose module and nosetests3 program that can discover +python3 unit tests. +%endif + +%prep +%setup -qc +pushd %{modname}-%{version} +%autopatch -p1 +dos2unix examples/attrib_plugin.py +cp -pr lgpl.txt AUTHORS CHANGELOG examples NEWS README.txt .. +popd + +%if %{with python3} +mv %{modname}-%{version} python3 +%endif +%if %{with python2} +mv %{modname}-%{version} python2 +%endif + +%build +%if %{with python2} +pushd python2 +%py2_build +popd +%endif + +%if %{with python3} +pushd python3 +%py3_build +popd +%endif + +%install +mkdir -p %{buildroot}%{_mandir}/man1 + +%if %{with python2} +pushd python2 +%py2_install +mv %{buildroot}%{_bindir}/nosetests{,-%{python2_version}} +ln -sf nosetests-%{python2_version} %{buildroot}%{_bindir}/nosetests-2 +mv %{buildroot}%{_prefix}/man/man1/nosetests.1 %{buildroot}%{_mandir}/man1/nosetests-%{python2_version}.1 +ln -sf nosetests-%{python2_version}.1 %{buildroot}%{_mandir}/man1/nosetests-2.1 +popd +%endif + +%if %{with python3} +pushd python3 +%py3_install +mv %{buildroot}%{_bindir}/nosetests{,-%{python3_version}} +touch %{buildroot}%{_bindir}/nosetests-3 # for alternatives +mv %{buildroot}%{_prefix}/man/man1/nosetests.1 %{buildroot}%{_mandir}/man1/nosetests-%{python3_version}.1 +touch %{buildroot}%{_mandir}/man1/nosetests-3.1 # for alternatives +popd +%endif + +%if %{with python2} +ln -sf nosetests-2.1 %{buildroot}%{_mandir}/man1/nosetests.1 +%endif + +%if %{with python3} +%if %{with docs} +pushd python3/doc + sphinx-build-3 -b html -d .build/doctrees . .build/html + rm -vrf .build/html/.buildinfo .build/html/_sources + mv .build/html ../.. + rm -vrf .build +popd +%endif +cp -a python3/doc reST +rm -vrf reST/{.static,.templates} +%endif + +%check +%if %{with python2} +pushd python2 +%{__python2} selftest.py +popd +%endif + +%if %{with python3} +pushd python3 +%{__python3} setup.py build_tests +%{__python3} selftest.py +popd +%endif + +%if %{with python3} +%post -n python3-%{modname} +alternatives --add-slave python3 %{_bindir}/python%{python3_version} \ + %{_bindir}/nosetests-3 \ + nosetests-3 \ + %{_bindir}/nosetests-%{python3_version} + +alternatives --add-slave python3 %{_bindir}/python%{python3_version} \ + %{_mandir}/man1/nosetests-3.1.gz \ + nosetests-3-man \ + %{_mandir}/man1/nosetests-%{python3_version}.1.gz + +%postun -n python3-%{modname} +if [ $1 -eq 0 ]; then + alternatives --keep-foreign --remove-slave python3 \ + %{_bindir}/python%{python3_version} nosetests-3 + + alternatives --keep-foreign --remove-slave python3 \ + %{_bindir}/python%{python3_version} nosetests-3-man +fi +%endif + +%if %{with python2} +%files -n python2-%{modname} +%license lgpl.txt +%{_bindir}/nosetests-2 +%{_bindir}/nosetests-%{python2_version} +%{_mandir}/man1/nosetests.1* +%{_mandir}/man1/nosetests-2.1* +%{_mandir}/man1/nosetests-%{python2_version}.1* +%{python2_sitelib}/nose-*.egg-info/ +%{python2_sitelib}/nose/ +%endif + +%if %{with python3} +%files -n python3-%{modname} +%license lgpl.txt +%ghost %{_bindir}/nosetests-3 +%{_bindir}/nosetests-%{python3_version} +%ghost %{_mandir}/man1/nosetests-3.1* +%{_mandir}/man1/nosetests-%{python3_version}.1* +%{python3_sitelib}/nose-*.egg-info/ +%{python3_sitelib}/nose/ +%endif + +%files docs +%license lgpl.txt +%doc AUTHORS CHANGELOG examples NEWS README.txt +%if %{with python3} +%if %{with docs} +%doc html reST +%endif # with docs +%endif # with python3 + +%changelog +* Fri Jul 30 2021 Tomas Orsava - 1.3.7-31 +- Adjusted the postun scriptlets to enable upgrading to RHEL 9 +- Resolves: rhbz#1933055 + +* Thu Apr 25 2019 Tomas Orsava - 1.3.7-30 +- Bumping due to problems with modular RPM upgrade path +- Resolves: rhbz#1695587 + +* Thu Oct 04 2018 Lumír Balhar - 1.3.7-29 +- Fix alternatives - post and postun sections only with python3 +- Resolves: rhbz#1633534 + +* Tue Oct 02 2018 Lumír Balhar - 1.3.7-28 +- Add alternatives for the executable and manpage +- Resolves: rhbz#1633534 + +* Wed Aug 15 2018 Lumír Balhar - 1.3.7-27 +- Remove nosetest-3 executable/manpage. This will be provided by python3 module. +- Resolves: rhbz#1615727 + +* Wed Aug 08 2018 Lumír Balhar - 1.3.7-26 +- Remove unversioned binaries from python2 subpackage +- Resolves: rhbz#1613343 + +* Tue Jul 31 2018 Lumír Balhar - 1.3.7-25 +- Make possible to disable python3 subpackage + +* Wed Jul 18 2018 Tomas Orsava - 1.3.7-24 +- BuildRequire also python36-rpm-macros as part of the python36 module build + +* Wed Jul 04 2018 Miro Hrončok - 1.3.7-23 +- Add a bcond for python2 +- Build docs with python3 explicitly + +* Tue Jun 26 2018 Tomas Orsava - 1.3.7-22 +- Use python2 macros instead of unversioned python macros + +* Mon Jun 18 2018 Tomas Orsava - 1.3.7-21 +- Disabled docs because the docs build config is not ported to Python 3 and + thus cannot be built with Python 3 version of Sphinx + +* Mon Apr 30 2018 Tomas Orsava - 1.3.7-20 +- Require the python36-devel package when building for the python36 module + +* Fri Feb 09 2018 Fedora Release Engineering - 1.3.7-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Nov 07 2017 Igor Gnatenko - 1.3.7-18 +- Use better Obsoletes for platform-python + +* Sat Nov 04 2017 Igor Gnatenko - 1.3.7-17 +- Remove platform-python subpackage +- Cleanup spec + +* Fri Sep 29 2017 Troy Dawson - 1.3.7-16 +- Cleanup spec file conditionals + +* Thu Aug 10 2017 Miro Hrončok - 1.3.7-15 +- Add platform-python subpackage + +* Thu Jul 27 2017 Fedora Release Engineering - 1.3.7-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 1.3.7-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Dec 12 2016 Tomas Orsava - 1.3.7-12 +- Patched to fix compatibility with Python 3.6 + +* Mon Dec 05 2016 Randy Barlow - 1.3.7-11 +- Provide nosetests-3 (#1289820). +- Rename python-nose to python2-nose and use Python provides macro. +- Include the license with the -docs subpackage. +- Use symlinks to provide man pages for all the Python version variants of /usr/bin/nosetests. +- The -docs subpackage no longer requires python-nose since that doesn't make sense. + +* Tue Nov 15 2016 Orion Poplawski 1.3.7-10 +- Add upstream patch to fix python 3.5 compat +- Add patch to allow docutils to read unicode source +- Update spec + +* Wed Nov 9 2016 Orion Poplawski 1.3.7-9 +- Add patch to fix build with coverage 4.1 + +* Tue Jul 19 2016 Fedora Release Engineering - 1.3.7-8 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Tue Feb 2 2016 Orion Poplawski 1.3.7-7 +- Fix URL + +* Thu Sep 24 2015 Robert Kuska 1.3.7-6 +- Rebuilt for Python3.5 rebuild with disabled tests under python3 + +* Sun Aug 09 2015 Kevin Fenzi 1.3.7-5 +- Add conditional for python-sphinx buildrequires when with_docs is not set. +- Fixes bug #1251700 + +* Fri Jul 24 2015 Kevin Fenzi 1.3.7-4 +- Version provides correctly for python2-nose. + +* Fri Jul 17 2015 Kevin Fenzi 1.3.7-3 +- Add provides for python2-nose. Fixes bug #1241670 + +* Thu Jun 18 2015 Fedora Release Engineering - 1.3.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 03 2015 Kevin Fenzi 1.3.7-1 +- Update to 1.3.7 (#1227345) + +* Sat Apr 04 2015 Ralph Bean - 1.3.6-1 +- new version + +* Wed Aug 27 2014 Luke Macken - 1.3.4-1 +- Update to 1.3.4 (#1094718) + +* Sat Jun 07 2014 Fedora Release Engineering - 1.3.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 19 2014 Bohuslav Kabrda - 1.3.2-2 +- Add patch for issue https://github.com/nose-devs/nose/pull/811, +which makes tests of python-billiard and python-falcon fail with Python 3.4 + +* Sat May 03 2014 Orion Poplawski - 1.3.2-1 +- Update to 1.3.2 for Python 3.4 suport + +* Fri May 02 2014 Orion Poplawski - 1.3.1-2 +- Rebuild for Python 3.4 + +* Fri Mar 14 2014 Luke Macken - 1.3.1-1 +- Update to 1.3.1 (#1074971) + +* Sun Aug 04 2013 Fedora Release Engineering - 1.3.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Apr 9 2013 Toshio Kuratomi - 1.3.0-1 +- Update to 1.3.0 upstream with python-3.3 fixes + +* Thu Feb 14 2013 Fedora Release Engineering - 1.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Sep 12 2012 Toshio Kuratomi - 1.2.1-1 +- New upsream 1.2.1 that just bumps the version properly + +* Mon Sep 10 2012 Toshio Kuratomi - 1.2.0-1 +- Update to nose-1.2.0. +- Two less python3 test failures than 1.1.2 + +* Sat Aug 4 2012 David Malcolm - 1.1.2-5 +- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3 +- disable selftests that fail under 3.3 + +* Fri Aug 3 2012 David Malcolm - 1.1.2-4 +- remove rhel logic from with_python3 conditional + +* Sat Jul 21 2012 Fedora Release Engineering - 1.1.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 1.1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Aug 1 2011 Toshio Kuratomi - 1.1.2-1 +- Upstream bugfix release + +* Wed Jul 27 2011 Toshio Kuratomi - 1.1.1-1 +- Upstream bugfix release + +* Tue Feb 08 2011 Fedora Release Engineering - 1.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Dec 26 2010 Toshio Kuratomi - 1.0.0-1 +- Update to 1.0.0 +- Create the docs subpackage for text docs even if we don't create the html docs. +- Make python3 subpackage + +* Tue Dec 7 2010 Toshio Kuratomi - 0.11.4-2 +- Fix FTBFS with newer coverage + +* Thu Oct 21 2010 Luke Macken - 0.11.4-1 +- Update to 0.11.4 (#3630722) + +* Wed Jul 21 2010 David Malcolm - 0.11.3-5 +- add support for building without docs, to avoid a circular build-time +dependency between this and python-sphinx; disable docs subpackage for now +- add (apparently) missing BR on python-coverage (appears to be needed +for %%check) +- cherrypick upstream compatibility fixes for 2.7 + +* Wed Jul 21 2010 David Malcolm - 0.11.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Thu May 20 2010 Luke Macken - 0.11.3-3 +- Update URL to http://code.google.com/p/python-nose/ +- Align description to reflect that in setup.py +- Create a docs subpackage containing HTML & reST documentation +- Thanks to Gareth Armstrong at HP for the patch + +* Thu May 06 2010 Luke Macken - 0.11.3-2 +- Don't hardcode the python version + +* Thu May 06 2010 Luke Macken - 0.11.3-1 +- Update to 0.11.3 +- Enable the self tests + +* Mon Oct 05 2009 Luke Macken - 0.11.1-2 +- Include the new nosetests-2.6 script as well + +* Mon Oct 05 2009 Luke Macken - 0.11.1-1 +- Update to 0.11.1 + +* Sun Jul 26 2009 Fedora Release Engineering - 0.10.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Feb 26 2009 Fedora Release Engineering - 0.10.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 0.10.4-1 +- Update to 0.10.4 to fix 2.6 issues + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 0.10.3-2 +- Rebuild for Python 2.6 + +* Sat Aug 02 2008 Luke Macken 0.10.3-1 +- Update to 0.10.3 + +* Thu Feb 28 2008 Luke Macken 0.10.1-1 +- Update to 0.10.1 + +* Mon Dec 3 2007 Luke Macken 0.10.0-2 +- Add python-setuptools to Requires (Bug #408491) + +* Tue Nov 27 2007 Luke Macken 0.10.0-1 +- 0.10.0 + +* Sun Sep 2 2007 Luke Macken 0.10.0-0.3.b1 +- Update for python-setuptools changes in rawhide + +* Tue Aug 21 2007 Luke Macken 0.10.0-0.2.b1 +- 0.10.0b1 +- Update license tag to LGPLv2 + +* Wed Jun 20 2007 Luke Macken 0.10.0-0.1.a2 +- 0.10.0a2 + +* Sat Jun 2 2007 Luke Macken 0.9.3-1 +- Latest upstream release +- Remove python-nose-0.9.2-mandir.patch + +* Sat Mar 3 2007 Luke Macken 0.9.2-1 +- Add nosetests(1) manpage, and python-nose-0.9.2-mandir.patch to put it in + the correct location. +- 0.9.2 + +* Sat Dec 9 2006 Luke Macken 0.9.1-2 +- Rebuild for python 2.5 + +* Fri Nov 24 2006 Luke Macken 0.9.1-1 +- 0.9.1 + +* Fri Sep 8 2006 Luke Macken 0.9.0-1 +- 0.9.0 + +* Wed Apr 19 2006 Ignacio Vazquez-Abrams 0.8.7.2-1 +- Initial RPM release