commit 9749f8231e3b052bd7716651eea35e90e705d579 Author: sherlock2010 <5456720+sherlock2010@user.noreply.gitee.com> Date: Tue Nov 26 10:53:27 2019 +0800 first commit diff --git a/0001-Call-reset-from-setUp-and-tearDown-in-addition-to-en.patch b/0001-Call-reset-from-setUp-and-tearDown-in-addition-to-en.patch new file mode 100644 index 0000000..06a389f --- /dev/null +++ b/0001-Call-reset-from-setUp-and-tearDown-in-addition-to-en.patch @@ -0,0 +1,37 @@ +From 01474bf64e0434881059a3638abff5bb62eaedb1 Mon Sep 17 00:00:00 2001 +From: Scott Moser +Date: Tue, 24 Jan 2017 12:30:47 -0500 +Subject: [PATCH] Call reset from setUp and tearDown in addition to enable and + disable. + +When decorating a class via setUp and tearDown, reset() was not being +called. That was an unintentional change in behavior from previous versions. + +Addresses #316. +--- + httpretty/core.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/httpretty/core.py b/httpretty/core.py +index 4f72678..25df1fd 100644 +--- a/httpretty/core.py ++++ b/httpretty/core.py +@@ -1580,6 +1580,7 @@ def httprettified(test): + else None) + + def new_setUp(self): ++ httpretty.reset() + httpretty.enable() + if use_addCleanup: + self.addCleanup(httpretty.disable) +@@ -1594,6 +1595,7 @@ def httprettified(test): + + def new_tearDown(self): + httpretty.disable() ++ httpretty.reset() + if original_tearDown: + original_tearDown(self) + klass.tearDown = new_tearDown +-- +2.9.3 + diff --git a/0001-Handle-bugs-in-older-urllib3-versions-in-one-of-the-.patch b/0001-Handle-bugs-in-older-urllib3-versions-in-one-of-the-.patch new file mode 100644 index 0000000..eb4ca43 --- /dev/null +++ b/0001-Handle-bugs-in-older-urllib3-versions-in-one-of-the-.patch @@ -0,0 +1,66 @@ +From 5d2f8d99c28519fe0cf47ebf5f043928d422b757 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Fri, 6 Jan 2017 17:56:43 -0800 +Subject: [PATCH] Handle bugs in older urllib3 versions in one of the tests + +Older urllib3 versions had a bug where they lower-cased header +names (in response header dicts). That makes one of our tests +fail with older urllib3, because the test expects a 'Server' +header. As this isn't our fault at all, just have the test cope +with it by checking if the header dict has a 'server' key and +replacing it with a 'Server' key with the same value. + +urllib3 1.10 also had a bug when you called dict() on its +HTTPHeaderDict class; it would turn this: + +{'headername': 'value'} + +Into this: + +{'headername': ['headername', 'value']} + +That was fixed in 1.11, but RHEL 6 still has 1.10, so let's +work with that by doing dict(headerdict.items()) instead of +just dict(headerdict) (when we're recording the calls). +--- + httpretty/core.py | 7 ++++++- + tests/functional/test_requests.py | 5 +++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/httpretty/core.py b/httpretty/core.py +index 34d1ed1..0c2d334 100644 +--- a/httpretty/core.py ++++ b/httpretty/core.py +@@ -971,7 +971,12 @@ class httpretty(HttpBaseClass): + 'response': { + 'status': response.status, + 'body': decode_utf8(response.data), +- 'headers': dict(response.headers) ++ # urllib3 1.10 had a bug if you just did: ++ # dict(response.headers) ++ # which would cause all the values to become lists ++ # with the header name as the first item and the ++ # true value as the second item. Workaround that ++ 'headers': dict(response.headers.items()) + } + }) + cls.enable() +diff --git a/tests/functional/test_requests.py b/tests/functional/test_requests.py +index 4e2063e..18c89f8 100644 +--- a/tests/functional/test_requests.py ++++ b/tests/functional/test_requests.py +@@ -742,6 +742,11 @@ def test_recording_calls(port): + response['response'].should.have.key("status").being.equal(200) + response['response'].should.have.key("body").being.an(text_type) + response['response'].should.have.key("headers").being.a(dict) ++ # older urllib3 had a bug where header keys were lower-cased: ++ # https://github.com/shazow/urllib3/issues/236 ++ # cope with that ++ if 'server' in response['response']["headers"]: ++ response['response']["headers"]["Server"] = response['response']["headers"].pop("server") + response['response']["headers"].should.have.key("Server").being.equal("TornadoServer/" + tornado_version) + + # And When I playback the previously recorded calls +-- +2.11.0 + diff --git a/httpretty-0.9.5.tar.gz b/httpretty-0.9.5.tar.gz new file mode 100644 index 0000000..6b29bd1 Binary files /dev/null and b/httpretty-0.9.5.tar.gz differ diff --git a/python-httpretty-fakesock_getpeercert_noconnect.patch b/python-httpretty-fakesock_getpeercert_noconnect.patch new file mode 100644 index 0000000..16bdcd7 --- /dev/null +++ b/python-httpretty-fakesock_getpeercert_noconnect.patch @@ -0,0 +1,64 @@ +--- HTTPretty/tests/unit/test_core.py 2017-01-06 15:04:06.030520764 -0800 ++++ HTTPretty/tests/unit/test_core.py.new 2017-01-06 15:37:17.932752818 -0800 +@@ -192,31 +192,37 @@ + @patch('httpretty.core.datetime') + def test_fakesock_socket_getpeercert(dt): + ("fakesock.socket#getpeercert should return a hardcoded fake certificate") +- # Background: +- dt.now.return_value = datetime(2013, 10, 4, 4, 20, 0) ++ # Don't bother with an actual remote roundtrip ++ httpretty.allow_net_connect = False + +- # Given a fake socket instance +- socket = fakesock.socket() +- +- # And that it's bound to some host and port +- socket.connect(('somewhere.com', 80)) +- +- # When I retrieve the peer certificate +- certificate = socket.getpeercert() +- +- # Then it should return a hardcoded value +- certificate.should.equal({ +- u'notAfter': 'Sep 29 04:20:00 GMT', +- u'subject': ( +- ((u'organizationName', u'*.somewhere.com'),), +- ((u'organizationalUnitName', u'Domain Control Validated'),), +- ((u'commonName', u'*.somewhere.com'),)), +- u'subjectAltName': ( +- (u'DNS', u'*.somewhere.com'), +- (u'DNS', u'somewhere.com'), +- (u'DNS', u'*') +- ) +- }) ++ try: ++ # Background: ++ dt.now.return_value = datetime(2013, 10, 4, 4, 20, 0) ++ ++ # Given a fake socket instance ++ socket = fakesock.socket() ++ ++ # And that it's bound to some host and port ++ socket.connect(('somewhere.com', 80)) ++ ++ # When I retrieve the peer certificate ++ certificate = socket.getpeercert() ++ ++ # Then it should return a hardcoded value ++ certificate.should.equal({ ++ u'notAfter': 'Sep 29 04:20:00 GMT', ++ u'subject': ( ++ ((u'organizationName', u'*.somewhere.com'),), ++ ((u'organizationalUnitName', u'Domain Control Validated'),), ++ ((u'commonName', u'*.somewhere.com'),)), ++ u'subjectAltName': ( ++ (u'DNS', u'*.somewhere.com'), ++ (u'DNS', u'somewhere.com'), ++ (u'DNS', u'*') ++ ) ++ }) ++ finally: ++ httpretty.allow_net_connect = True + + + def test_fakesock_socket_ssl(): diff --git a/python-httpretty.spec b/python-httpretty.spec new file mode 100644 index 0000000..4ef832d --- /dev/null +++ b/python-httpretty.spec @@ -0,0 +1,70 @@ +Name: python-httpretty +Version: 0.9.5 +Release: 4 +Summary: HTTP Client mocking tool for Python +License: MIT +URL: https://pypi.org/project/httpretty/ +Source0: https://files.pythonhosted.org/packages/source/h/httpretty/httpretty-%{version}.tar.gz + +Patch0001: python-httpretty-fakesock_getpeercert_noconnect.patch +Patch0002: 0001-Handle-bugs-in-older-urllib3-versions-in-one-of-the-.patch +Patch0003: 0001-Call-reset-from-setUp-and-tearDown-in-addition-to-en.patch + +BuildRequires: python2-devel python2-setuptools python2-httplib2 python2-mock python2-nose +BuildRequires: python2-requests python2-sure python2-urllib3 python2-tornado python-unittest2 + +BuildArch: noarch + +%description +HTTP Client mocking tool for Python.Provides a full fake TCP socket module. + +%package -n python2-httpretty +Summary: HTTP Client mocking tool for Python2 +Requires: python2-six +%{?python_provide:%python_provide python2-httpretty} + +%description -n python2-httpretty +HTTP Client mocking tool for Python2.Provides a full fake TCP socket module. + +%package -n python3-httpretty +Summary: HTTP Client mocking tool for Python3 +BuildRequires: python3-devel python3-setuptools python3-httplib2 python3-mock +BuildRequires: python3-nose python3-requests python3-sure python3-urllib3 python3-tornado +Requires: python3-six +%{?python_provide:%python_provide python3-httpretty} + +%description -n python3-httpretty +HTTP Client mocking tool for Python3.Provides a full fake TCP socket module. + +%prep +%autosetup -n httpretty-%{version} -p1 +sed -i 's/^with-randomly = 1$//' setup.cfg +sed -i 's/^rednose = 1$//' setup.cfg + +%build +LANG=en_US.UTF-8 %py2_build +LANG=en_US.UTF-8 %py3_build + +%install +LANG=en_US.UTF-8 %py2_install +LANG=en_US.UTF-8 %py3_install + +%check +LANG=en_US.UTF-8 %{__python2} -m nose -v +LANG=en_US.UTF-8 %{__python3} -m nose -v + +%files -n python2-httpretty +%doc README.rst +%license COPYING +%{python2_sitelib}/httpretty +%{python2_sitelib}/httpretty-%{version}-py2.?.egg-info + +%files -n python3-httpretty +%doc README.rst +%license COPYING +%{python3_sitelib}/httpretty +%{python3_sitelib}/httpretty-%{version}-py3.?.egg-info + +%changelog +* Sat Nov 23 2019 zhouyihang - 0.9.5-4 +- Package init