mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-07-25 21:08:35 -07:00
dev-python/requests-toolbelt: Version bump to 0.9.1
Copyright: Sony Interactive Entertainment Inc. Package-Manager: Portage-2.3.79, Repoman-2.3.18 Signed-off-by: Patrick McLean <chutzpah@gentoo.org>
This commit is contained in:
committed by
Patrick McLean
parent
9328bc3314
commit
77ee7c8679
@@ -0,0 +1,28 @@
|
||||
diff --git a/tests/test_multipart_encoder.py b/tests/test_multipart_encoder.py
|
||||
index 575f54c..73a880e 100644
|
||||
--- a/tests/test_multipart_encoder.py
|
||||
+++ b/tests/test_multipart_encoder.py
|
||||
@@ -94,6 +94,7 @@ class TestFileFromURLWrapper(unittest.TestCase):
|
||||
s = requests.Session()
|
||||
self.recorder = get_betamax(s)
|
||||
|
||||
+ @unittest.skip("test requires internet access")
|
||||
def test_read_file(self):
|
||||
url = ('https://stxnext.com/static/img/logo.830ebe551641.svg')
|
||||
with self.recorder.use_cassette(
|
||||
@@ -110,6 +111,7 @@ class TestFileFromURLWrapper(unittest.TestCase):
|
||||
assert chunk == b'ww.w3.org/'
|
||||
assert self.instance.len == 5147
|
||||
|
||||
+ @unittest.skip("test requires internet access")
|
||||
def test_no_content_length_header(self):
|
||||
url = (
|
||||
'https://api.github.com/repos/sigmavirus24/github3.py/releases/'
|
||||
@@ -191,6 +193,7 @@ class TestMultipartEncoder(unittest.TestCase):
|
||||
m = MultipartEncoder([('field', 'foo'), ('file', fd)])
|
||||
assert m.read() is not None
|
||||
|
||||
+ @unittest.skip("test requires internet access")
|
||||
def test_reads_file_from_url_wrapper(self):
|
||||
s = requests.Session()
|
||||
recorder = get_betamax(s)
|
||||
@@ -0,0 +1,68 @@
|
||||
diff --git a/tests/threaded/test_pool.py b/tests/threaded/test_pool.py
|
||||
index 3e54b3c..9583c7b 100644
|
||||
--- a/tests/threaded/test_pool.py
|
||||
+++ b/tests/threaded/test_pool.py
|
||||
@@ -5,6 +5,7 @@ except ImportError:
|
||||
import Queue as queue
|
||||
import unittest
|
||||
|
||||
+import sys
|
||||
import mock
|
||||
import pytest
|
||||
|
||||
@@ -60,6 +61,7 @@ class TestPool(unittest.TestCase):
|
||||
assert session.called is True
|
||||
session.assert_called_once_with()
|
||||
|
||||
+ @pytest.mark.skipif(sys.hexversion < 0x3000000, reason="broken on python2")
|
||||
def test_from_exceptions_populates_a_queue(self):
|
||||
"""Ensure a Queue is properly populated from exceptions."""
|
||||
urls = ["https://httpbin.org/get?n={}".format(n) for n in range(5)]
|
||||
@@ -77,6 +79,7 @@ class TestPool(unittest.TestCase):
|
||||
for url in urls
|
||||
]
|
||||
|
||||
+ @pytest.mark.skipif(sys.hexversion < 0x3000000, reason="broken on python2")
|
||||
def test_from_urls_constructs_get_requests(self):
|
||||
"""Ensure a Queue is properly populated from an iterable of urls."""
|
||||
urls = ["https://httpbin.org/get?n={}".format(n) for n in range(5)]
|
||||
@@ -92,6 +95,7 @@ class TestPool(unittest.TestCase):
|
||||
for url in urls
|
||||
]
|
||||
|
||||
+ @pytest.mark.skipif(sys.hexversion < 0x3000000, reason="broken on python2")
|
||||
def test_from_urls_constructs_get_requests_with_kwargs(self):
|
||||
"""Ensure a Queue is properly populated from an iterable of urls."""
|
||||
def merge(*args):
|
||||
@@ -130,6 +134,7 @@ class TestPool(unittest.TestCase):
|
||||
for st in session_threads:
|
||||
st.join.assert_called_once_with()
|
||||
|
||||
+ @pytest.mark.skipif(sys.hexversion < 0x3000000, reason="broken on python2")
|
||||
def test_get_response_returns_thread_response(self):
|
||||
"""Ensure that a ThreadResponse is made when there's data."""
|
||||
queues = []
|
||||
@@ -149,6 +154,7 @@ class TestPool(unittest.TestCase):
|
||||
assert isinstance(p.get_response(), pool.ThreadResponse)
|
||||
assert len([q for q in queues if q.get_nowait.called]) == 1
|
||||
|
||||
+ @pytest.mark.skipif(sys.hexversion < 0x3000000, reason="broken on python2")
|
||||
def test_get_exception_returns_thread_exception(self):
|
||||
"""Ensure that a ThreadException is made when there's data."""
|
||||
queues = []
|
||||
@@ -168,6 +174,7 @@ class TestPool(unittest.TestCase):
|
||||
assert isinstance(p.get_exception(), pool.ThreadException)
|
||||
assert len([q for q in queues if q.get_nowait.called]) == 1
|
||||
|
||||
+ @pytest.mark.skipif(sys.hexversion < 0x3000000, reason="broken on python2")
|
||||
def test_get_response_returns_none_when_queue_is_empty(self):
|
||||
"""Ensure that None is returned when the response Queue is empty."""
|
||||
queues = []
|
||||
@@ -187,6 +194,7 @@ class TestPool(unittest.TestCase):
|
||||
assert p.get_response() is None
|
||||
assert len([q for q in queues if q.get_nowait.called]) == 1
|
||||
|
||||
+ @pytest.mark.skipif(sys.hexversion < 0x3000000, reason="broken on python2")
|
||||
def test_get_exception_returns_none_when_queue_is_empty(self):
|
||||
"""Ensure that None is returned when the exception Queue is empty."""
|
||||
queues = []
|
||||
@@ -0,0 +1,128 @@
|
||||
From c4f918572751151eb3bfc7dfa94580b3e2867a9e Mon Sep 17 00:00:00 2001
|
||||
From: Jon Dufresne <jon.dufresne@gmail.com>
|
||||
Date: Sun, 3 Feb 2019 09:02:24 -0800
|
||||
Subject: [PATCH] Fix unhandled exceptions from threads during tests
|
||||
|
||||
A queue.Queue() object was not always passed to SessionThread. In this
|
||||
case, SessionThread._make_request() would raise an exception trying to
|
||||
call methods on the expected object. Now, always pass a usable object to
|
||||
SessionThread.
|
||||
|
||||
Previously appeared as:
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "/usr/lib64/python3.7/threading.py", line 917, in _bootstrap_inner
|
||||
self.run()
|
||||
File "/usr/lib64/python3.7/threading.py", line 865, in run
|
||||
self._target(*self._args, **self._kwargs)
|
||||
File "toolbelt/requests_toolbelt/threaded/thread.py", line 41, in _make_request
|
||||
kwargs = self._jobs.get_nowait()
|
||||
AttributeError: 'NoneType' object has no attribute 'get_nowait'
|
||||
|
||||
Exception in thread cd08fad6-d21d-41b0-921e-737a149b12be:
|
||||
Traceback (most recent call last):
|
||||
File "/usr/lib64/python3.7/threading.py", line 917, in _bootstrap_inner
|
||||
self.run()
|
||||
File "/usr/lib64/python3.7/threading.py", line 865, in run
|
||||
self._target(*self._args, **self._kwargs)
|
||||
File "toolbelt/requests_toolbelt/threaded/thread.py", line 41, in _make_request
|
||||
kwargs = self._jobs.get_nowait()
|
||||
AttributeError: 'NoneType' object has no attribute 'get_nowait'
|
||||
|
||||
Exception in thread 4fb72f0d-ba1c-4a78-97a2-4a7283ea01fe:
|
||||
Traceback (most recent call last):
|
||||
File "/usr/lib64/python3.7/threading.py", line 917, in _bootstrap_inner
|
||||
self.run()
|
||||
File "/usr/lib64/python3.7/threading.py", line 865, in run
|
||||
self._target(*self._args, **self._kwargs)
|
||||
File "toolbelt/requests_toolbelt/threaded/thread.py", line 41, in _make_request
|
||||
kwargs = self._jobs.get_nowait()
|
||||
AttributeError: 'NoneType' object has no attribute 'get_nowait'
|
||||
|
||||
Exception in thread 5f3711af-0c01-4821-9e25-8074bbbf769b:
|
||||
Traceback (most recent call last):
|
||||
File "/usr/lib64/python3.7/threading.py", line 917, in _bootstrap_inner
|
||||
self.run()
|
||||
File "/usr/lib64/python3.7/threading.py", line 865, in run
|
||||
self._target(*self._args, **self._kwargs)
|
||||
File "toolbelt/requests_toolbelt/threaded/thread.py", line 41, in _make_request
|
||||
kwargs = self._jobs.get_nowait()
|
||||
AttributeError: 'NoneType' object has no attribute 'get_nowait'
|
||||
---
|
||||
tests/threaded/test_pool.py | 15 ++++++++++-----
|
||||
tests/threaded/test_thread.py | 5 ++++-
|
||||
2 files changed, 14 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/tests/threaded/test_pool.py b/tests/threaded/test_pool.py
|
||||
index b0653bb..b949dd8 100644
|
||||
--- a/tests/threaded/test_pool.py
|
||||
+++ b/tests/threaded/test_pool.py
|
||||
@@ -26,32 +26,37 @@ def test_requires_positive_number_of_processes(self):
|
||||
|
||||
def test_number_of_processes_can_be_arbitrary(self):
|
||||
"""Show that the number of processes can be set."""
|
||||
- p = pool.Pool(None, num_processes=100)
|
||||
+ job_queue = queue.Queue()
|
||||
+ p = pool.Pool(job_queue, num_processes=100)
|
||||
assert p._processes == 100
|
||||
assert len(p._pool) == 100
|
||||
|
||||
- p = pool.Pool(None, num_processes=1)
|
||||
+ job_queue = queue.Queue()
|
||||
+ p = pool.Pool(job_queue, num_processes=1)
|
||||
assert p._processes == 1
|
||||
assert len(p._pool) == 1
|
||||
|
||||
def test_initializer_is_called(self):
|
||||
"""Ensure that the initializer function is called."""
|
||||
+ job_queue = queue.Queue()
|
||||
initializer = mock.MagicMock()
|
||||
- pool.Pool(None, num_processes=1, initializer=initializer)
|
||||
+ pool.Pool(job_queue, num_processes=1, initializer=initializer)
|
||||
assert initializer.called is True
|
||||
initializer.assert_called_once_with(mock.ANY)
|
||||
|
||||
def test_auth_generator_is_called(self):
|
||||
"""Ensure that the auth_generator function is called."""
|
||||
+ job_queue = queue.Queue()
|
||||
auth_generator = mock.MagicMock()
|
||||
- pool.Pool(None, num_processes=1, auth_generator=auth_generator)
|
||||
+ pool.Pool(job_queue, num_processes=1, auth_generator=auth_generator)
|
||||
assert auth_generator.called is True
|
||||
auth_generator.assert_called_once_with(mock.ANY)
|
||||
|
||||
def test_session_is_called(self):
|
||||
"""Ensure that the session function is called."""
|
||||
+ job_queue = queue.Queue()
|
||||
session = mock.MagicMock()
|
||||
- pool.Pool(None, num_processes=1, session=session)
|
||||
+ pool.Pool(job_queue, num_processes=1, session=session)
|
||||
assert session.called is True
|
||||
session.assert_called_once_with()
|
||||
|
||||
diff --git a/tests/threaded/test_thread.py b/tests/threaded/test_thread.py
|
||||
index bb92f7f..fd7e96b 100644
|
||||
--- a/tests/threaded/test_thread.py
|
||||
+++ b/tests/threaded/test_thread.py
|
||||
@@ -19,6 +19,8 @@ def _make_mocks():
|
||||
|
||||
def _initialize_a_session_thread(session=None, job_queue=None,
|
||||
response_queue=None, exception_queue=None):
|
||||
+ if job_queue is None:
|
||||
+ job_queue = queue.Queue()
|
||||
with mock.patch.object(threading, 'Thread') as Thread:
|
||||
thread_instance = mock.MagicMock()
|
||||
Thread.return_value = thread_instance
|
||||
@@ -52,10 +54,11 @@ def test_thread_initialization(self):
|
||||
|
||||
def test_is_alive_proxies_to_worker(self):
|
||||
"""Test that we proxy the is_alive method to the Thread."""
|
||||
+ job_queue = queue.Queue()
|
||||
with mock.patch.object(threading, 'Thread') as Thread:
|
||||
thread_instance = mock.MagicMock()
|
||||
Thread.return_value = thread_instance
|
||||
- st = thread.SessionThread(None, None, None, None)
|
||||
+ st = thread.SessionThread(None, job_queue, None, None)
|
||||
|
||||
st.is_alive()
|
||||
thread_instance.is_alive.assert_called_once_with()
|
||||
@@ -2,7 +2,7 @@
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
PYTHON_COMPAT=( python{2_7,3_5,3_6,3_7} )
|
||||
PYTHON_COMPAT=( python{2_7,3_{5,6,7}} pypy{,3} )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
@@ -21,20 +21,21 @@ DEPEND="${RDEPEND}
|
||||
test? (
|
||||
dev-python/betamax[${PYTHON_USEDEP}]
|
||||
dev-python/mock[${PYTHON_USEDEP}]
|
||||
dev-python/pytest[${PYTHON_USEDEP}]
|
||||
)"
|
||||
|
||||
DOCS=( AUTHORS.rst HISTORY.rst README.rst )
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/requests-toolbelt-0.8.0-test-tracebacks.patch"
|
||||
"${FILESDIR}/requests-toolbelt-0.9.1-tests.patch"
|
||||
|
||||
# disable python2.7 test failures with newer requests versions
|
||||
# bug: https://bugs.gentoo.org/635824
|
||||
# https://github.com/requests/toolbelt/issues/213
|
||||
"${FILESDIR}/requests-toolbelt-0.9.1-tests-py2.patch"
|
||||
|
||||
# disable tests that require internet access
|
||||
"${FILESDIR}/requests-toolbelt-0.9.1-tests-internet.patch"
|
||||
)
|
||||
|
||||
# Known python2.7 test failures do to upstream
|
||||
# not testing with newer requests versions
|
||||
# bug: https://bugs.gentoo.org/635824
|
||||
# https://github.com/requests/toolbelt/issues/213
|
||||
RESTRICT=test
|
||||
|
||||
python_test() {
|
||||
py.test -v || die "Tests failed with ${EPYTHON}"
|
||||
}
|
||||
distutils_enable_tests pytest
|
||||
|
||||
Reference in New Issue
Block a user