diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5e1ab8e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/unittest2-1.1.0.tar.gz diff --git a/.python-unittest2.metadata b/.python-unittest2.metadata new file mode 100644 index 0000000..1228567 --- /dev/null +++ b/.python-unittest2.metadata @@ -0,0 +1 @@ +267454e401bbf32a4c63a5f6ac437222924a53d8 SOURCES/unittest2-1.1.0.tar.gz diff --git a/SOURCES/unittest2-1.1.0-backport-tests-from-py3.5.patch b/SOURCES/unittest2-1.1.0-backport-tests-from-py3.5.patch new file mode 100644 index 0000000..74da922 --- /dev/null +++ b/SOURCES/unittest2-1.1.0-backport-tests-from-py3.5.patch @@ -0,0 +1,45 @@ +--- unittest2/test/test_loader.py.orig 2015-11-15 09:26:43.752421511 +0100 ++++ unittest2/test/test_loader.py 2015-11-15 11:02:43.944233784 +0100 +@@ -512,10 +512,20 @@ + def test_loadTestsFromName__relative_malformed_name(self): + loader = unittest.TestLoader() + ++ # XXX Should this raise AttributeError or ValueError? + suite = loader.loadTestsFromName('abc () //', unittest) + error, test = self.check_deferred_error(loader, suite) +- self.check_module_lookup_error( +- error, test, 'unittest2', 'abc () //', 'abc \(\) //') ++ if sys.version_info[:2] < (3, 5): ++ expected = "'module' object has no attribute 'abc () //'" ++ expected_regex = "'module' object has no attribute 'abc \(\) //'" ++ else: ++ expected = "module 'unittest2' has no attribute 'abc () //'" ++ expected_regex = "module 'unittest2' has no attribute 'abc \(\) //'" ++ self.assertIn( ++ expected, error, ++ 'missing error string in %r' % error) ++ self.assertRaisesRegex( ++ AttributeError, expected_regex, getattr(test, 'abc () //')) + + # "The method optionally resolves name relative to the given module" + # +@@ -924,8 +934,17 @@ + # XXX Should this raise AttributeError or ValueError? + suite = loader.loadTestsFromNames(['abc () //'], unittest) + error, test = self.check_deferred_error(loader, list(suite)[0]) +- self.check_module_lookup_error( +- error, test, 'unittest2', 'abc () //', 'abc \(\) //') ++ if sys.version_info[:2] < (3, 5): ++ expected = "'module' object has no attribute 'abc () //'" ++ expected_regex = "'module' object has no attribute 'abc \(\) //'" ++ else: ++ expected = "module 'unittest2' has no attribute 'abc () //'" ++ expected_regex = "module 'unittest2' has no attribute 'abc \(\) //'" ++ self.assertIn( ++ expected, error, ++ 'missing error string in %r' % error) ++ self.assertRaisesRegex( ++ AttributeError, expected_regex, getattr(test, 'abc () //')) + + # "The method optionally resolves name relative to the given module" + # diff --git a/SOURCES/unittest2-1.1.0-conditionalize-traceback2.patch b/SOURCES/unittest2-1.1.0-conditionalize-traceback2.patch new file mode 100644 index 0000000..59f4c32 --- /dev/null +++ b/SOURCES/unittest2-1.1.0-conditionalize-traceback2.patch @@ -0,0 +1,62 @@ +--- setup.py.orig 2015-11-12 16:19:17.850638394 +0100 ++++ setup.py 2015-11-12 16:19:33.605809230 +0100 +@@ -12,8 +12,7 @@ + + class late_version: + def __str__(self): +- from unittest2 import __version__ as VERSION +- return VERSION ++ return '1.1.0' + def __add__(self, other): + return str(self) + other + def replace(self, old, new): +@@ -57,7 +56,7 @@ + # Both install and setup requires - because we read VERSION from within the + # package, and the package also exports all the APIs. + # six for compat helpers +-REQUIRES = ['six>=1.4', 'traceback2'], ++REQUIRES = ['six>=1.4'], + + params = dict( + name=NAME, +--- unittest2/case.py 2015-06-30 08:17:28.000000000 +0200 ++++ unittest2/case.py 2018-06-19 14:01:41.591254456 +0200 +@@ -7,7 +7,10 @@ + import logging + import pprint + import re +-import traceback2 as traceback ++if sys.version_info > (3, 5): ++ import traceback ++else: ++ import traceback2 as traceback + import types + import unittest + import warnings +--- unittest2/result.py 2015-03-06 06:17:01.000000000 +0100 ++++ unittest2/result.py 2018-06-19 14:02:04.184171011 +0200 +@@ -4,7 +4,10 @@ + import unittest + + from six.moves import StringIO +-import traceback2 as traceback ++if sys.version_info > (3, 5): ++ import traceback ++else: ++ import traceback2 as traceback + + from unittest2 import util + from unittest2.compatibility import wraps +--- unittest2/test/test_result.py 2015-03-06 06:20:12.000000000 +0100 ++++ unittest2/test/test_result.py 2018-06-19 14:01:57.136197042 +0200 +@@ -1,6 +1,9 @@ + import sys + import textwrap +-import traceback2 as traceback ++if sys.version_info > (3, 5): ++ import traceback ++else: ++ import traceback2 as traceback + + import six + from six.moves import StringIO diff --git a/SOURCES/unittest2-1.1.0-remove-argparse-from-requires.patch b/SOURCES/unittest2-1.1.0-remove-argparse-from-requires.patch new file mode 100644 index 0000000..295ce67 --- /dev/null +++ b/SOURCES/unittest2-1.1.0-remove-argparse-from-requires.patch @@ -0,0 +1,11 @@ +--- setup.py.orig 2015-11-12 15:51:35.557779728 +0100 ++++ setup.py 2015-11-12 15:58:04.618948793 +0100 +@@ -57,7 +57,7 @@ + # Both install and setup requires - because we read VERSION from within the + # package, and the package also exports all the APIs. + # six for compat helpers +-REQUIRES = ['argparse', 'six>=1.4', 'traceback2'], ++REQUIRES = ['six>=1.4', 'traceback2'], + + params = dict( + name=NAME, diff --git a/SPECS/python-unittest2.spec b/SPECS/python-unittest2.spec new file mode 100644 index 0000000..68f26f9 --- /dev/null +++ b/SPECS/python-unittest2.spec @@ -0,0 +1,153 @@ +# Created by pyp2rpm-1.1.1 +%global pypi_name unittest2 +%global bootstrap_traceback2 0 + +Name: python-%{pypi_name} +Version: 1.1.0 +Release: 16%{?dist} +Summary: The new features in unittest backported to Python 2.4+ + +License: BSD +URL: http://pypi.python.org/pypi/unittest2 +Source0: https://pypi.python.org/packages/source/u/%{pypi_name}/%{pypi_name}-%{version}.tar.gz +# we don't need this in Fedora, since we have Python 2.7, which has argparse +Patch0: unittest2-1.1.0-remove-argparse-from-requires.patch +# Conditionalize traceback2 in code (only use it for Python 2) +Patch1: unittest2-1.1.0-conditionalize-traceback2.patch +# this patch backports tests from Python 3.5, that weren't yet merged, thus the tests are failing +# (the test is modified to also pass on Python < 3.5) +# TODO: submit upstream +Patch2: unittest2-1.1.0-backport-tests-from-py3.5.patch +BuildArch: noarch + + +%description +unittest2 is a backport of the new features added to the unittest testing +framework in Python 2.7 and onwards. It is tested to run on Python 2.6, 2.7, +3.2, 3.3, 3.4 and pypy. + + +%package -n python3-%{pypi_name} +Summary: The new features in unittest backported to Python 2.4+ +%{?python_provide:%python_provide python3-%{pypi_name}} +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-six +%if 0%{?rhel} && 0%{?rhel} >= 8 +Requires: platform-python-setuptools +%else +Requires: python3-setuptools +%endif +Requires: python3-six + + +%description -n python3-%{pypi_name} +unittest2 is a backport of the new features added to the unittest testing +framework in Python 2.7 and onwards. It is tested to run on Python 2.6, 2.7, +3.2, 3.3, 3.4 and pypy. + + +%prep +%setup -q -n %{pypi_name}-%{version} +# Remove bundled egg-info +rm -rf %{pypi_name}.egg-info + +%patch0 -p0 +%patch2 -p0 +%patch1 -p0 + + +%build +%py3_build + + +%install +%py3_install +pushd %{buildroot}%{_bindir} +mv unit2 unit2-%{python3_version} +ln -s unit2-%{python3_version} unit2-3 +# compatibility symlink +ln -s unit2-%{python3_version} python3-unit2 +popd + + +%check +%{__python3} -m unittest2 + + +%files -n python3-%{pypi_name} +%doc README.txt +%{_bindir}/unit2-3 +%{_bindir}/unit2-%{python3_version} +%{_bindir}/python3-unit2 +%{python3_sitelib}/%{pypi_name} +%{python3_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info + + +%changelog +* Fri Nov 16 2018 Lumír Balhar - 1.1.0-16 +- Require platform-python-setuptools instead of python3-setuptools +- Resolves: rhbz#1650545 + +* Mon Jul 02 2018 Petr Viktorin -1.1.0-15 +- Remove the python2 subpackage + +* Mon Jun 25 2018 Petr Viktorin - 1.1.0-14 +- Allow Python 2 for build + see https://hurl.corp.redhat.com/rhel8-py2 + +* Tue Jun 19 2018 Petr Viktorin - 1.1.0-13 +- Drop the python-traceback2 dependency + + The traceback2 module duplicates functionality from the Python standard + library. Use the standard library instead. + +* Fri Feb 09 2018 Fedora Release Engineering - 1.1.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 31 2018 Iryna Shcherbina - 1.1.0-11 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Thu Jul 27 2017 Fedora Release Engineering - 1.1.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 1.1.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Dec 12 2016 Charalampos Stratakis - 1.1.0-8 +- Disable bootstrap method + +* Fri Dec 09 2016 Charalampos Stratakis - 1.1.0-7 +- Rebuild for Python 3.6 + +* Tue Jul 19 2016 Fedora Release Engineering - 1.1.0-6 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Thu May 19 2016 Carl George - 1.1.0-5 +- Implement new Python packaging guidelines (python2 subpackage) + +* Thu Feb 04 2016 Fedora Release Engineering - 1.1.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Sun Nov 15 2015 Slavek Kabrda - 1.1.0-3 +- Fix tests on Python 3.5 + +* Sat Nov 14 2015 Toshio Kuratomi - - 1.1.0-2 +- traceback2 has been bootstrapped. Remove the bootstrapping conditional + +* Thu Nov 12 2015 bkabrda - 1.1.0-1 +- Update to 1.1.0 +- Bootstrap dependency on traceback2 + +* Tue Nov 10 2015 Fedora Release Engineering - 0.8.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Thu Jun 18 2015 Fedora Release Engineering - 0.8.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Nov 14 2014 Slavek Kabrda - 0.8.0-2 +- Bump to avoid collision with previously blocked 0.8.0-1 + +* Mon Nov 10 2014 Slavek Kabrda - 0.8.0-1 +- Unretire the package, create a fresh specfile