diff options
Diffstat (limited to 'tests/unittests/helpers.py')
| -rw-r--r-- | tests/unittests/helpers.py | 37 | 
1 files changed, 36 insertions, 1 deletions
| diff --git a/tests/unittests/helpers.py b/tests/unittests/helpers.py index 24e1e881..61a1f6ff 100644 --- a/tests/unittests/helpers.py +++ b/tests/unittests/helpers.py @@ -1,5 +1,6 @@  from __future__ import print_function +import functools  import os  import sys  import shutil @@ -25,9 +26,10 @@ PY2 = False  PY26 = False  PY27 = False  PY3 = False +FIX_HTTPRETTY = False  _PY_VER = sys.version_info -_PY_MAJOR, _PY_MINOR = _PY_VER[0:2] +_PY_MAJOR, _PY_MINOR, _PY_MICRO = _PY_VER[0:3]  if (_PY_MAJOR, _PY_MINOR) <= (2, 6):      if (_PY_MAJOR, _PY_MINOR) == (2, 6):          PY26 = True @@ -39,6 +41,8 @@ else:          PY2 = True      if (_PY_MAJOR, _PY_MINOR) >= (3, 0):          PY3 = True +        if _PY_MINOR == 4 and _PY_MICRO < 3: +            FIX_HTTPRETTY = True  if PY26:      # For now add these on, taken from python 2.7 + slightly adjusted.  Drop @@ -268,6 +272,37 @@ class FilesystemMockingTestCase(ResourceUsingTestCase):                  mock.patch.object(sys, 'stderr', stderr)) +def import_httpretty(): +    """Import HTTPretty and monkey patch Python 3.4 issue. +    See https://github.com/gabrielfalcao/HTTPretty/pull/193 and +    as well as https://github.com/gabrielfalcao/HTTPretty/issues/221. + +    Lifted from +    https://github.com/inveniosoftware/datacite/blob/master/tests/helpers.py +    """ +    if not FIX_HTTPRETTY: +        import httpretty +    else: +        import socket +        old_SocketType = socket.SocketType + +        import httpretty +        from httpretty import core + +        def sockettype_patch(f): +            @functools.wraps(f) +            def inner(*args, **kwargs): +                f(*args, **kwargs) +                socket.SocketType = old_SocketType +                socket.__dict__['SocketType'] = old_SocketType +            return inner + +        core.httpretty.disable = sockettype_patch( +            httpretty.httpretty.disable +        ) +    return httpretty + +  class HttprettyTestCase(TestCase):      # necessary as http_proxy gets in the way of httpretty      # https://github.com/gabrielfalcao/HTTPretty/issues/122 | 
