#2 Update to 0.9.5 (#1572888) (#1580060)
Merged 5 years ago by churchyard. Opened 5 years ago by churchyard.
rpms/ churchyard/python-httpretty 094  into  master

file modified
+1
@@ -1,2 +1,3 @@ 

  /httpretty-0.8.3.tar.gz

  /HTTPretty-70af1f8.tar.gz

+ /httpretty-0.9.5.tar.gz

@@ -13,19 +13,19 @@ 

   1 file changed, 2 insertions(+)

  

  diff --git a/httpretty/core.py b/httpretty/core.py

- index 34d1ed1..c408c38 100644

+ index 4f72678..25df1fd 100644

  --- a/httpretty/core.py

  +++ b/httpretty/core.py

- @@ -1189,6 +1189,7 @@ def httprettified(test):

-                            if hasattr(klass, 'setUp')

+ @@ -1580,6 +1580,7 @@ def httprettified(test):

                             else None)

+  

           def new_setUp(self):

  +            httpretty.reset()

               httpretty.enable()

               if use_addCleanup:

                   self.addCleanup(httpretty.disable)

- @@ -1202,6 +1203,7 @@ def httprettified(test):

-                                   else None)

+ @@ -1594,6 +1595,7 @@ def httprettified(test):

+  

               def new_tearDown(self):

                   httpretty.disable()

  +                httpretty.reset()

file removed
-31
@@ -1,31 +0,0 @@ 

- From f642a108a5eb199665a39830f095073bd2406003 Mon Sep 17 00:00:00 2001

- From: Shaform <shaform@gmail.com>

- Date: Tue, 20 Dec 2016 20:26:36 +0800

- Subject: [PATCH] fix test on python3

- 

- ---

-  tests/functional/base.py | 4 ++--

-  1 file changed, 2 insertions(+), 2 deletions(-)

- 

- diff --git a/tests/functional/base.py b/tests/functional/base.py

- index b8355f0..6f143f6 100644

- --- a/tests/functional/base.py

- +++ b/tests/functional/base.py

- @@ -37,7 +37,7 @@

-  from functools import wraps

-  

-  from os.path import abspath, dirname, join

- -from httpretty.core import POTENTIAL_HTTP_PORTS, old_socket

- +from httpretty.core import POTENTIAL_HTTP_PORTS, old_socket, decode_utf8

-  

-  

-  def get_free_tcp_port():

- @@ -63,7 +63,7 @@ def post(self, matched):

-          payload = dict(self.request.arguments)

-          self.write(json.dumps({

-              matched or 'index': payload,

- -            'req_body': self.request.body,

- +            'req_body': decode_utf8(self.request.body),

-              'req_headers': dict(self.request.headers.items()),

-          }, indent=4))

-  

file removed
-528
@@ -1,528 +0,0 @@ 

- diff --git a/.gitignore b/.gitignore

- index f465139..761556d 100644

- --- a/.gitignore

- +++ b/.gitignore

- @@ -13,3 +13,4 @@ _public/

-  tests/functional/fixtures/recording-*.json

-  #*

-  *#*

- +.idea/

- diff --git a/development.txt b/development.txt

- index 6b7a5a4..5a8ff32 100644

- --- a/development.txt

- +++ b/development.txt

- @@ -6,9 +6,9 @@ mock==1.3.0

-  nose==1.3.7

-  nose-randomly==1.2.0

-  rednose==0.4.3

- -requests==2.8.1

- +requests[security]==2.11.1

-  sure==1.2.24

- -urllib3==1.12

- +urllib3==1.19

-  tornado==4.3

-  coverage==4.0.3

-  Sphinx==1.3.3

- diff --git a/httpretty/core.py b/httpretty/core.py

- index 34d1ed1..8ece7fe 100644

- --- a/httpretty/core.py

- +++ b/httpretty/core.py

- @@ -30,6 +30,7 @@ import codecs

-  import inspect

-  import socket

-  import functools

- +from functools import partial

-  import itertools

-  import warnings

-  import traceback

- @@ -38,7 +39,6 @@ import contextlib

-  import threading

-  import tempfile

-  

- -

-  from .compat import (

-      PY3,

-      StringIO,

- @@ -99,17 +99,16 @@ try:  # pragma: no cover

-      if not PY3:

-          old_sslwrap_simple = ssl.sslwrap_simple

-      old_sslsocket = ssl.SSLSocket

- +    #old_sslcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)

-  except ImportError:  # pragma: no cover

-      ssl = None

-  

-  

- -# used to handle error caused by ndg-httpsclient

- -try:  # pragma: no cover

- -    from requests.packages.urllib3.contrib.pyopenssl import inject_into_urllib3, extract_from_urllib3

- -    pyopenssl_override = True

- -except ImportError:  # pragma: no cover

- -    pyopenssl_override = False

- -

- +try:

- +    import requests.packages.urllib3.connection as requests_urllib3_connection

- +    old_requests_ssl_wrap_socket = requests_urllib3_connection.ssl_wrap_socket

- +except ImportError:

- +    requests_urllib3_connection = None

-  

-  DEFAULT_HTTP_PORTS = frozenset([80])

-  POTENTIAL_HTTP_PORTS = set(DEFAULT_HTTP_PORTS)

- @@ -298,6 +297,7 @@ class fakesock(object):

-              self.truesock = (old_socket(family, type, protocol)

-                               if httpretty.allow_net_connect

-                               else None)

- +            self._connected_truesock = False

-              self._closed = True

-              self.fd = FakeSockFile()

-              self.fd.socket = _sock or self

- @@ -354,10 +354,16 @@ class fakesock(object):

-                  self.is_http = self._port in ports_to_check

-  

-              if not self.is_http:

- -                if self.truesock:

- +                if self.truesock and not self._connected_truesock:

-                      self.truesock.connect(self._address)

- +                    self._connected_truesock = True

-                  else:

-                      raise UnmockedError()

- +            elif self.truesock is not None and not self._connected_truesock:

- +                matcher = httpretty.match_http_address(self._host, self._port)

- +                if matcher is None:

- +                    self.truesock.connect(self._address)

- +                    self._connected_truesock = True

-  

-          def fileno(self):

-              if self.truesock:

- @@ -365,9 +371,9 @@ class fakesock(object):

-              return self.fd.fileno()

-  

-          def close(self):

- -            if not (self.is_http and self._closed):

- -                if self.truesock:

- -                    self.truesock.close()

- +            if self._connected_truesock:

- +                self.truesock.close()

- +                self._connected_truesock = False

-              self._closed = True

-  

-          def makefile(self, mode='r', bufsize=-1):

- @@ -404,22 +410,27 @@ class fakesock(object):

-              buffer so that HTTPretty can return it accordingly when

-              necessary.

-              """

- -

-              if not self.truesock:

-                  raise UnmockedError()

-  

-              if not self.is_http:

-                  return self.truesock.sendall(data, *args, **kw)

-  

- -            self.truesock.connect(self._address)

- +            if self._address[1] == 443 and old_sslsocket:

- +                sock = old_sslsocket(self.truesock)

- +            else:

- +                sock = self.truesock

- +

- +            if not self._connected_truesock:

- +                sock.connect(self._address)

-  

- -            self.truesock.setblocking(1)

- -            self.truesock.sendall(data, *args, **kw)

- +            sock.setblocking(1)

- +            sock.sendall(data, *args, **kw)

-  

-              should_continue = True

-              while should_continue:

-                  try:

- -                    received = self.truesock.recv(self._bufsize)

- +                    received = sock.recv(self._bufsize)

-                      self.fd.write(received)

-                      should_continue = bool(received.strip())

-  

- @@ -544,8 +555,17 @@ class fakesock(object):

-              return getattr(self.truesock, name)

-  

-  

- -def fake_wrap_socket(s, *args, **kw):

- -    return s

- +def fake_wrap_socket(orig_wrap_socket_fn, sock, *args, **kw):

- +    server_hostname = kw.get('server_hostname')

- +    if server_hostname is not None:

- +        matcher = httpretty.match_https_hostname(server_hostname)

- +        if matcher is None:

- +            return orig_wrap_socket_fn(

- +                sock,

- +                *args,

- +                **kw

- +            )

- +    return sock

-  

-  

-  def create_fake_connection(

- @@ -937,6 +957,53 @@ class httpretty(HttpBaseClass):

-          return (None, [])

-  

-      @classmethod

- +    def match_https_hostname(cls, hostname):

- +        items = sorted(

- +            cls._entries.items(),

- +            key=lambda matcher_entries: matcher_entries[0].priority,

- +            reverse=True,

- +        )

- +        for matcher, value in items:

- +            if matcher.info is None:

- +                pattern_with_port = "https://{0}:".format(hostname)

- +                pattern_without_port = "https://{0}/".format(hostname)

- +                for pattern in [pattern_with_port, pattern_without_port]:

- +                    if matcher.regex.search(pattern) is not None \

- +                            or matcher.regex.pattern.startswith(pattern):

- +                        return matcher

- +

- +            elif matcher.info.hostname == hostname:

- +                return matcher

- +        return None

- +

- +    @classmethod

- +    def match_http_address(cls, hostname, port):

- +        items = sorted(

- +            cls._entries.items(),

- +            key=lambda matcher_entries: matcher_entries[0].priority,

- +            reverse=True,

- +        )

- +        for matcher, value in items:

- +            if matcher.info is None:

- +                if port in POTENTIAL_HTTPS_PORTS:

- +                    scheme = 'https://'

- +                else:

- +                    scheme = 'http://'

- +

- +                pattern_without_port = "{0}{1}/".format(scheme, hostname)

- +                pattern_with_port = "{0}{1}:{2}/".format(scheme, hostname, port)

- +                for pattern in [pattern_with_port, pattern_without_port]:

- +                    if matcher.regex.search(pattern_without_port) is not None \

- +                            or matcher.regex.pattern.startswith(pattern):

- +                        return matcher

- +

- +            elif matcher.info.hostname == hostname \

- +                    and matcher.info.port == port:

- +                return matcher

- +

- +        return None

- +

- +    @classmethod

-      @contextlib.contextmanager

-      def record(cls, filename, indentation=4, encoding='utf-8'):

-          try:

- @@ -1112,9 +1179,11 @@ class httpretty(HttpBaseClass):

-                  ssl.sslwrap_simple = old_sslwrap_simple

-                  ssl.__dict__['sslwrap_simple'] = old_sslwrap_simple

-  

- -        if pyopenssl_override:

- -            # Replace PyOpenSSL Monkeypatching

- -            inject_into_urllib3()

- +        if requests_urllib3_connection is not None:

- +            requests_urllib3_connection.ssl_wrap_socket = \

- +                old_requests_ssl_wrap_socket

- +            requests_urllib3_connection.__dict__['ssl_wrap_socket'] = \

- +                old_requests_ssl_wrap_socket

-  

-      @classmethod

-      def is_enabled(cls):

- @@ -1152,19 +1221,22 @@ class httpretty(HttpBaseClass):

-              socks.__dict__['socksocket'] = fakesock.socket

-  

-          if ssl:

- -            ssl.wrap_socket = fake_wrap_socket

- +            new_wrap = partial(fake_wrap_socket, old_ssl_wrap_socket)

- +            ssl.wrap_socket = new_wrap

-              ssl.SSLSocket = FakeSSLSocket

-  

- -            ssl.__dict__['wrap_socket'] = fake_wrap_socket

- +            ssl.__dict__['wrap_socket'] = new_wrap

-              ssl.__dict__['SSLSocket'] = FakeSSLSocket

-  

-              if not PY3:

- -                ssl.sslwrap_simple = fake_wrap_socket

- -                ssl.__dict__['sslwrap_simple'] = fake_wrap_socket

- +                ssl.sslwrap_simple = new_wrap

- +                ssl.__dict__['sslwrap_simple'] = new_wrap

- +

- +        if requests_urllib3_connection is not None:

- +            new_wrap = partial(fake_wrap_socket, old_requests_ssl_wrap_socket)

- +            requests_urllib3_connection.ssl_wrap_socket = new_wrap

- +            requests_urllib3_connection.__dict__['ssl_wrap_socket'] = new_wrap

-  

- -        if pyopenssl_override:

- -            # Remove PyOpenSSL monkeypatch - use the default implementation

- -            extract_from_urllib3()

-  

-  class httprettized(object):

-  

- diff --git a/test-requirements.txt b/test-requirements.txt

- index bda473e..46f1062 100644

- --- a/test-requirements.txt

- +++ b/test-requirements.txt

- @@ -1,4 +1,4 @@

- --r dev.txt

- +-r development.txt

-  httplib2==0.9

-  requests==2.5.1

-  tornado==4.0.2

- diff --git a/tests/functional/test_requests.py b/tests/functional/test_requests.py

- index 4e2063e..91baefd 100644

- --- a/tests/functional/test_requests.py

- +++ b/tests/functional/test_requests.py

- @@ -37,7 +37,7 @@ from httpretty import HTTPretty, httprettified

-  from httpretty.compat import text_type

-  from httpretty.core import decode_utf8

-  

- -from .base import FIXTURE_FILE, use_tornado_server

- +from tests.functional.base import FIXTURE_FILE, use_tornado_server

-  from tornado import version as tornado_version

-  

-  try:

- @@ -567,7 +567,12 @@ def test_httpretty_provides_easy_access_to_querystrings_with_regexes():

-      })

-  

-  

- +try:

- +    from unittest import skip

- +except ImportError:

- +    from unittest2 import skip

-  @httprettified

- +@skip

-  def test_httpretty_allows_to_chose_if_querystring_should_be_matched():

-      "HTTPretty should provide a way to not match regexes that have a different querystring"

-  

- @@ -580,13 +582,9 @@ def test_httpretty_allows_to_chose_if_querystring_should_be_matched():

-  

-      response = requests.get('https://example.org/what/')

-      expect(response.text).to.equal('Nudge, nudge, wink, wink. Know what I mean?')

- -    try:

- -        requests.get('https://example.org/what/?flying=coconuts')

- -        raised = False

- -    except requests.ConnectionError:

- -        raised = True

-  

- -    assert raised is True

- +    response = requests.get('https://example.org/what/?flying=coconuts')

- +    expect(response.text).to.not_be.equal('Nudge, nudge, wink, wink. Know what I mean?')

-  

-  

-  @httprettified

- diff --git a/tests/pyopenssl/test_mock.py b/tests/pyopenssl/test_mock.py

- index 1de759a..cfa5143 100644

- --- a/tests/pyopenssl/test_mock.py

- +++ b/tests/pyopenssl/test_mock.py

- @@ -31,19 +31,10 @@ import requests

-  from httpretty import HTTPretty, httprettified

-  from sure import expect

-  

- -from requests.packages.urllib3.contrib.pyopenssl import inject_into_urllib3, extract_from_urllib3

- -

-  

-  @httprettified

-  def test_httpretty_overrides_when_pyopenssl_installed():

-      ('HTTPretty should remove PyOpenSSLs urllib3 mock if it is installed')

- -

- -    # When we run Httpretty with PyOpenSSL and ndg-httpsclient installed

- -    from httpretty.core import pyopenssl_override

- -

- -    # Then we override pyopenssl

- -    pyopenssl_override.should.be.true

- -

-      # And HTTPretty works successfully

-      HTTPretty.register_uri(HTTPretty.GET, "https://yipit.com/",

-                             body="Find the best daily deals")

- @@ -53,20 +44,3 @@ def test_httpretty_overrides_when_pyopenssl_installed():

-      expect(HTTPretty.last_request.method).to.equal('GET')

-      expect(HTTPretty.last_request.path).to.equal('/')

-  

- -

- -@httprettified

- -def test_httpretty_fails_when_pyopenssl_is_not_replaced():

- -    ('HTTPretty should fail if PyOpenSSL is installed and we do not remove the monkey patch')

- -

- -    # When we don't replace the PyOpenSSL monkeypatch

- -    inject_into_urllib3()

- -

- -    # And we use HTTPretty on as ssl site

- -    HTTPretty.register_uri(HTTPretty.GET, "https://yipit.com/",

- -                           body="Find the best daily deals")

- -

- -    # Then we get an SSL error

- -    requests.get.when.called_with('https://yipit.com').should.throw(requests.exceptions.SSLError)

- -

- -    # Undo injection after test

- -    extract_from_urllib3()

- \ No newline at end of file

- diff --git a/tests/unit/test_core.py b/tests/unit/test_core.py

- index e28404f..b87d2aa 100644

- --- a/tests/unit/test_core.py

- +++ b/tests/unit/test_core.py

- @@ -263,6 +263,7 @@ def test_fakesock_socket_close(old_socket):

-      # Given a fake socket instance that is synthetically open

-      socket = fakesock.socket()

-      socket._closed = False

- +    socket._connected_truesock = True

-  

-      # When I close it

-      socket.close()

- diff --git a/tests/unit/test_fakesocket.py b/tests/unit/test_fakesocket.py

- new file mode 100644

- index 0000000..8b84d99

- --- /dev/null

- +++ b/tests/unit/test_fakesocket.py

- @@ -0,0 +1,72 @@

- +# #!/usr/bin/env python

- +# -*- coding: utf-8 -*-

- +

- +# <HTTPretty - HTTP client mock for Python>

- +# Copyright (C) <2011-2012>  Gabriel Falcão <gabriel@nacaolivre.org>

- +#

- +# Permission is hereby granted, free of charge, to any person

- +# obtaining a copy of this software and associated documentation

- +# files (the "Software"), to deal in the Software without

- +# restriction, including without limitation the rights to use,

- +# copy, modify, merge, publish, distribute, sublicense, and/or sell

- +# copies of the Software, and to permit persons to whom the

- +# Software is furnished to do so, subject to the following

- +# conditions:

- +#

- +# The above copyright notice and this permission notice shall be

- +# included in all copies or substantial portions of the Software.

- +#

- +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

- +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES

- +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

- +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT

- +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,

- +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

- +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

- +# OTHER DEALINGS IN THE SOFTWARE.

- +

- +import functools

- +import socket

- +

- +import mock

- +

- +

- +class FakeSocket(socket.socket):

- +    """

- +    Just an editable socket factory

- +    It allows mock to patch readonly functions

- +    """

- +    connect = sendall = lambda *args, **kw: None

- +

- +

- +fake_socket_interupter_flag = {}

- +

- +def recv(flag, size):

- +    """

- +    Two pass recv implementation

- +

- +    This implementation will for the first time send something that is smaller than

- +    the asked size passed in argument.

- +    Any further call will just raise RuntimeError

- +    """

- +    if 'was_here' in flag:

- +        raise RuntimeError('Already sent everything')

- +    else:

- +        flag['was_here'] = None

- +        return 'a'* (size - 1)

- +

- +recv = functools.partial(recv, fake_socket_interupter_flag)

- +

- +@mock.patch('httpretty.old_socket', new=FakeSocket)

- +def _test_shorten_response():

- +    u"HTTPretty shouldn't try to read from server when communication is over"

- +    from sure import expect

- +    import httpretty

- +

- +    fakesocket = httpretty.fakesock.socket(socket.AF_INET,

- +                                           socket.SOCK_STREAM)

- +    with mock.patch.object(fakesocket.truesock, 'recv', recv):

- +        fakesocket.connect(('localhost', 80))

- +        fakesocket._true_sendall('WHATEVER')

- +        expect(fakesocket.fd.read()).to.equal(

- +                                      'a' * (httpretty.socket_buffer_size - 1))

- diff --git a/tests/unit/test_passthrough.py b/tests/unit/test_passthrough.py

- new file mode 100644

- index 0000000..1162638

- --- /dev/null

- +++ b/tests/unit/test_passthrough.py

- @@ -0,0 +1,74 @@

- +# #!/usr/bin/env python

- +# -*- coding: utf-8 -*-

- +

- +# <HTTPretty - HTTP client mock for Python>

- +# Copyright (C) <2011-2012>  Gabriel Falcão <gabriel@nacaolivre.org>

- +#

- +# Permission is hereby granted, free of charge, to any person

- +# obtaining a copy of this software and associated documentation

- +# files (the "Software"), to deal in the Software without

- +# restriction, including without limitation the rights to use,

- +# copy, modify, merge, publish, distribute, sublicense, and/or sell

- +# copies of the Software, and to permit persons to whom the

- +# Software is furnished to do so, subject to the following

- +# conditions:

- +#

- +# The above copyright notice and this permission notice shall be

- +# included in all copies or substantial portions of the Software.

- +#

- +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

- +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES

- +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

- +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT

- +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,

- +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

- +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

- +# OTHER DEALINGS IN THE SOFTWARE.

- +import requests

- +from sure import expect

- +

- +from httpretty import (

- +    HTTPretty,

- +    httprettified,

- +)

- +

- +

- +@httprettified

- +def test_http_passthrough():

- +    url = 'http://ip4.me/'

- +    response1 = requests.get(url)

- +

- +    HTTPretty.enable()

- +    HTTPretty.register_uri(HTTPretty.GET, 'http://google.com/', body="Not Google")

- +

- +    response2 = requests.get('http://google.com/')

- +    expect(response2.content).to.equal(b'Not Google')

- +

- +    response3 = requests.get(url)

- +    expect(response3.content).to.equal(response1.content)

- +

- +    HTTPretty.disable()

- +

- +    response4 = requests.get(url)

- +    expect(response4.content).to.equal(response1.content)

- +

- +

- +@httprettified

- +def test_https_passthrough():

- +    url = 'https://www.cloudflare.com/ips-v4'

- +

- +    response1 = requests.get(url)

- +

- +    HTTPretty.enable()

- +    HTTPretty.register_uri(HTTPretty.GET, 'http://google.com/', body="Not Google")

- +

- +    response2 = requests.get('http://google.com/')

- +    expect(response2.content).to.equal(b'Not Google')

- +

- +    response3 = requests.get(url)

- +    expect(response3.content).to.equal(response1.content)

- +

- +    HTTPretty.disable()

- +

- +    response4 = requests.get(url)

- +    expect(response4.content).to.equal(response1.content)

@@ -26,7 +26,7 @@ 

  -            ((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'somewhere.com'),

  -            (u'DNS', u'*')

  -        )
@@ -52,7 +52,7 @@ 

  +                ((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'somewhere.com'),

  +                (u'DNS', u'*')

  +            )

file modified
+28 -64
@@ -7,46 +7,24 @@ 

  %global github_name     HTTPretty

  %global modname         httpretty

  # define these only if actually building from a GH snapshot not a release tarball

- %global github_commit   70af1f8cf925ef50cb5e72212fb0aa46e1451dc3

- %global shortcommit     %(c=%{github_commit}; echo ${c:0:7})

- %global github_date     20161011

+ #global github_commit   70af1f8cf925ef50cb5e72212fb0aa46e1451dc3

+ #global shortcommit     %%(c=%%{github_commit}; echo ${c:0:7})

+ #global github_date     20161011

+ 

  

  %global run_tests 1

  

  Name:           python-httpretty

- Version:        0.8.14

+ Version:        0.9.5

  # If github_date is defined, assume a post-release snapshot

- Release:        8%{?github_date:.%{github_date}git%{shortcommit}}%{?dist}

+ Release:        1%{?github_date:.%{github_date}git%{shortcommit}}%{?dist}

  Summary:        HTTP request mock tool for Python

  

  License:        MIT

  URL:            http://falcao.it/HTTPretty/

- Source0:        https://github.com/%{github_owner}/%{github_name}/archive/%{github_commit}/%{github_name}-%{shortcommit}.tar.gz

- # Alternative for building from a release tarball

- #Source0:        https://files.pythonhosted.org/packages/source/h/httpretty/httpretty-%{version}.tar.gz

- 

- # Fix HTTPS with recent openssl

- # This is https://github.com/gabrielfalcao/HTTPretty/pull/313

- # Squashed by checking the PR branch out from git and doing:

- # git diff master > pr313.patch (because just getting 313.patch from github

- # results in a patch that doesn't apply)

- # I edited the patch to apply several fixes:

- # 1. Rename the `_socket` arg of the `fake_wrap_socket` function to `sock`

- #    (as otherwise it breaks due to urllib3 calling `wrap_socket` with the

- #    socket arg named as `sock`)

- # 2. In test_passthrough.py, correct the type of the expected response

- #    (requests `Response.content` is a bytestring, not a string)

- # 3. Remove the addition of `test_httpretty_should_passthrough_for_ssl`,

- #    as it requires a remote trip

- # 4. Use {0} ({1}, {2}...) in format strings, not just {}, as {} doesn't

- #    work in Python 2.6 (EPEL 6)

- # 5. Try importing skip from unittest2 if it's not available from unittest

- #    (Python 2.6 unittest didn't have it)

- # I've noted all these issues in comments on the PR

- Patch0:         pr313.patch

- 

- # Fix tests with Python 3

- Patch1:         https://github.com/gabrielfalcao/HTTPretty/pull/314.patch

+ Source0:        https://files.pythonhosted.org/packages/source/h/httpretty/httpretty-%{version}.tar.gz

+ # Alternative for building from a github snapshot

+ #Source0:        https://github.com/%{github_owner}/%{github_name}/archive/%{github_commit}/%{github_name}-%{shortcommit}.tar.gz

  

  # Avoid unnecessary remote access requirement (note: test only actually

  # does a remote connection after PR #313)
@@ -88,7 +66,7 @@ 

  

  %package -n python2-httpretty

  Summary: %summary

- Requires:       python2-urllib3

+ Requires:       python2-six

  %{?python_provide:%python_provide python2-httpretty}

  

  %description -n python2-httpretty %_description
@@ -96,7 +74,7 @@ 

  %if 0%{?with_python3}

  %package -n python3-httpretty

  Summary:        HTTP request mock tool for Python 3

- Requires:       python3-urllib3

+ Requires:       python3-six

  

  BuildRequires:  python3-devel

  BuildRequires:  python3-setuptools
@@ -118,28 +96,14 @@ 

  %endif

  

  %prep

- %autosetup -n %{github_name}-%{github_commit} -p1

- 

- # Alternative for building from a release tarball

- #autosetup -n httpretty-%{version} -p1

- 

- # un-pin requirements

- sed -i -e 's/==.*//g' development.txt test-requirements.txt requirements.txt

- sed -i -e 's/requests\[security\]/requests/g' development.txt

- # remove some 'requirements' that aren't actually needed just for us to run tests

- sed -i -e '/^coverage/d' development.txt test-requirements.txt

- sed -i -r -e '/^(S|s)phinx/d' development.txt

- sed -i -e '/^rednose/d' development.txt

- sed -i -e '/^nose-randomly/d' development.txt

- sed -i -e '/^flake8/d' development.txt

- sed -i -e '/^ipdb/d' development.txt

- # These tests require a remote roundtrip, so remove them

- rm tests/unit/test_passthrough.py

+ %autosetup -n httpretty-%{version} -p1

  

- %if 0%{?with_python3}

- rm -rf %{py3dir}

- cp -a . %{py3dir}

- %endif

+ # Alternative for building from commit tarball

+ #autosetup -n %%{github_name}-%%{github_commit} -p1

+ 

+ # nose plugins we don't have yet

+ sed -i 's/^with-randomly = 1$//' setup.cfg

+ sed -i 's/^rednose = 1$//' setup.cfg

  

  %build

  # setup.py contains non-ASCII characters; in Koji build environment
@@ -147,9 +111,7 @@ 

  LANG=en_US.UTF-8 %py2_build

  

  %if 0%{?with_python3}

- pushd %{py3dir}

  LANG=en_US.UTF-8 %py3_build

- popd

  %endif

  

  %install
@@ -157,33 +119,29 @@ 

  LANG=en_US.UTF-8 %py2_install

  

  %if 0%{?with_python3}

- pushd %{py3dir}

  LANG=en_US.UTF-8 %py3_install

- popd

  %endif

  

  

  %check

  %if %{run_tests}

- LANG=en_US.UTF-8 %{__python2} setup.py test

+ LANG=en_US.UTF-8 %{__python2} -m nose -v

  

  %if 0%{?with_python3}

- pushd %{py3dir}

- LANG=en_US.UTF-8 %{__python3} setup.py test

- popd

+ LANG=en_US.UTF-8 %{__python3} -m nose -v

  %endif

  %endif

  

  

  %files -n python2-httpretty

- %doc README.md

+ %doc README.rst

  %license COPYING

  %{python_sitelib}/httpretty

  %{python_sitelib}/httpretty-%{version}-py2.?.egg-info

  

  %if 0%{?with_python3}

  %files -n python3-httpretty

- %doc README.md

+ %doc README.rst

  %license COPYING

  %{python3_sitelib}/httpretty

  %{python3_sitelib}/httpretty-%{version}-py3.?.egg-info
@@ -191,6 +149,12 @@ 

  

  

  %changelog

+ * Wed Jun 06 2018 Miro Hrončok <mhroncok@redhat.com> - 0.9.5-1

+ - Update to 0.9.5, fix for Python 3.7 (#1580060)

+ 

+ * Sat May 19 2018 Miro Hrončok <mhroncok@redhat.com> - 0.9.4-1

+ - Update to 0.9.4 (#1572888)

+ 

  * Wed Feb 21 2018 Iryna Shcherbina <ishcherb@redhat.com> - 0.8.14-8.20161011git70af1f8

  - Update Python 2 dependency declarations to new packaging standards

    (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (HTTPretty-70af1f8.tar.gz) = a5306f9286d341fc3d05efa9899067c5c95375f8fd48702e77c6e2256cb882051ddab7f2767aafcb90b0c3a5277694682153caaa42d4fe0c5af44fbf6a67295d

+ SHA512 (httpretty-0.9.5.tar.gz) = 21c3e8f39796c426952056a8248934ac56f185b3a0ca016579f0717e2230bf0763c331d2f522a248fff7a3d36be3fa929d24fba636e13281230c02c8ba25659c