aboutsummaryrefslogtreecommitdiff
path: root/debian/patches/06_add-test-init-py.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/06_add-test-init-py.patch')
-rw-r--r--debian/patches/06_add-test-init-py.patch99
1 files changed, 99 insertions, 0 deletions
diff --git a/debian/patches/06_add-test-init-py.patch b/debian/patches/06_add-test-init-py.patch
new file mode 100644
index 0000000..2cbbc02
--- /dev/null
+++ b/debian/patches/06_add-test-init-py.patch
@@ -0,0 +1,99 @@
+Description: Add needed test/__init__.py file not shipped in sdist.
+Origin: https://raw.githubusercontent.com/shazow/urllib3/1.9/test/__init__.py
+Bug: https://github.com/shazow/urllib3/issues/440
+
+--- /dev/null
++++ b/test/__init__.py
+@@ -0,0 +1,92 @@
++import warnings
++import sys
++import errno
++import functools
++import socket
++
++from nose.plugins.skip import SkipTest
++
++from urllib3.exceptions import MaxRetryError, HTTPWarning
++import six
++
++# We need a host that will not immediately close the connection with a TCP
++# Reset. SO suggests this hostname
++TARPIT_HOST = '10.255.255.1'
++
++VALID_SOURCE_ADDRESSES = [('::1', 0), ('127.0.0.1', 0)]
++# RFC 5737: 192.0.2.0/24 is for testing only.
++# RFC 3849: 2001:db8::/32 is for documentation only.
++INVALID_SOURCE_ADDRESSES = [('192.0.2.255', 0), ('2001:db8::1', 0)]
++
++
++def clear_warnings(cls=HTTPWarning):
++ new_filters = []
++ for f in warnings.filters:
++ if issubclass(f[2], cls):
++ continue
++ new_filters.append(f)
++ warnings.filters[:] = new_filters
++
++def setUp():
++ clear_warnings()
++ warnings.simplefilter('ignore', HTTPWarning)
++
++
++def onlyPy26OrOlder(test):
++ """Skips this test unless you are on Python2.6.x or earlier."""
++
++ @functools.wraps(test)
++ def wrapper(*args, **kwargs):
++ msg = "{name} only runs on Python2.6.x or older".format(name=test.__name__)
++ if sys.version_info >= (2, 7):
++ raise SkipTest(msg)
++ return test(*args, **kwargs)
++ return wrapper
++
++def onlyPy27OrNewer(test):
++ """Skips this test unless you are on Python 2.7.x or later."""
++
++ @functools.wraps(test)
++ def wrapper(*args, **kwargs):
++ msg = "{name} requires Python 2.7.x+ to run".format(name=test.__name__)
++ if sys.version_info < (2, 7):
++ raise SkipTest(msg)
++ return test(*args, **kwargs)
++ return wrapper
++
++def onlyPy3(test):
++ """Skips this test unless you are on Python3.x"""
++
++ @functools.wraps(test)
++ def wrapper(*args, **kwargs):
++ msg = "{name} requires Python3.x to run".format(name=test.__name__)
++ if not six.PY3:
++ raise SkipTest(msg)
++ return test(*args, **kwargs)
++ return wrapper
++
++def requires_network(test):
++ """Helps you skip tests that require the network"""
++
++ def _is_unreachable_err(err):
++ return getattr(err, 'errno', None) in (errno.ENETUNREACH,
++ errno.EHOSTUNREACH) # For OSX
++
++ @functools.wraps(test)
++ def wrapper(*args, **kwargs):
++ msg = "Can't run {name} because the network is unreachable".format(
++ name=test.__name__)
++ try:
++ return test(*args, **kwargs)
++ except socket.error as e:
++ # This test needs an initial network connection to attempt the
++ # connection to the TARPIT_HOST. This fails if you are in a place
++ # without an Internet connection, so we skip the test in that case.
++ if _is_unreachable_err(e):
++ raise SkipTest(msg)
++ raise
++ except MaxRetryError as e:
++ if _is_unreachable_err(e.reason):
++ raise SkipTest(msg)
++ raise
++ return wrapper