forked from pool/python-aiohttp
Accepting request 679843 from home:mimi_vx:branches:devel:languages:python
- update to 3.5.4 - drop invalid-escapes-in-tests.patch and rename-request-fixture.patch * big list of changes from 3.4.4 - https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst OBS-URL: https://build.opensuse.org/request/show/679843 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-aiohttp?expand=0&rev=33
This commit is contained in:
parent
49c1d3a489
commit
ba20c15e9e
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:51afec6ffa50a9da4cdef188971a802beb1ca8e8edb40fa429e5e529db3475fa
|
|
||||||
size 822110
|
|
3
aiohttp-3.5.4.tar.gz
Normal file
3
aiohttp-3.5.4.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:9c4c83f4fa1938377da32bc2d59379025ceeee8e24b89f72fcbccd8ca22dc9bf
|
||||||
|
size 1097647
|
@ -1,98 +0,0 @@
|
|||||||
--- a/tests/test_http_parser.py
|
|
||||||
+++ b/tests/test_http_parser.py
|
|
||||||
@@ -369,7 +369,7 @@ def test_max_header_field_size(parser, s
|
|
||||||
name = b't' * size
|
|
||||||
text = (b'GET /test HTTP/1.1\r\n' + name + b':data\r\n\r\n')
|
|
||||||
|
|
||||||
- match = ("400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
.format(size))
|
|
||||||
with pytest.raises(http_exceptions.LineTooLong, match=match):
|
|
||||||
parser.feed_data(text)
|
|
||||||
@@ -399,7 +399,7 @@ def test_max_header_value_size(parser, s
|
|
||||||
text = (b'GET /test HTTP/1.1\r\n'
|
|
||||||
b'data:' + name + b'\r\n\r\n')
|
|
||||||
|
|
||||||
- match = ("400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
.format(size))
|
|
||||||
with pytest.raises(http_exceptions.LineTooLong, match=match):
|
|
||||||
parser.feed_data(text)
|
|
||||||
@@ -430,7 +430,7 @@ def test_max_header_value_size_continuat
|
|
||||||
text = (b'GET /test HTTP/1.1\r\n'
|
|
||||||
b'data: test\r\n ' + name + b'\r\n\r\n')
|
|
||||||
|
|
||||||
- match = ("400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
.format(size))
|
|
||||||
with pytest.raises(http_exceptions.LineTooLong, match=match):
|
|
||||||
parser.feed_data(text)
|
|
||||||
@@ -551,7 +551,7 @@ def test_http_request_parser_bad_version
|
|
||||||
@pytest.mark.parametrize('size', [40965, 8191])
|
|
||||||
def test_http_request_max_status_line(parser, size):
|
|
||||||
path = b't' * (size - 5)
|
|
||||||
- match = ("400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
.format(size))
|
|
||||||
with pytest.raises(http_exceptions.LineTooLong, match=match):
|
|
||||||
parser.feed_data(
|
|
||||||
@@ -595,7 +595,7 @@ def test_http_response_parser_utf8(respo
|
|
||||||
@pytest.mark.parametrize('size', [40962, 8191])
|
|
||||||
def test_http_response_parser_bad_status_line_too_long(response, size):
|
|
||||||
reason = b't' * (size - 2)
|
|
||||||
- match = ("400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
+ match = (r"400, message='Got more than 8190 bytes \({}\) when reading"
|
|
||||||
.format(size))
|
|
||||||
with pytest.raises(http_exceptions.LineTooLong, match=match):
|
|
||||||
response.feed_data(
|
|
||||||
--- a/tests/test_streams.py
|
|
||||||
+++ b/tests/test_streams.py
|
|
||||||
@@ -721,7 +721,7 @@ class TestStreamReader:
|
|
||||||
async def test___repr__waiter(self, loop):
|
|
||||||
stream = self._make_one()
|
|
||||||
stream._waiter = loop.create_future()
|
|
||||||
- assert re.search("<StreamReader w=<Future pending[\S ]*>>",
|
|
||||||
+ assert re.search(r"<StreamReader w=<Future pending[\S ]*>>",
|
|
||||||
repr(stream))
|
|
||||||
stream._waiter.set_result(None)
|
|
||||||
await stream._waiter
|
|
||||||
--- a/tests/test_urldispatch.py
|
|
||||||
+++ b/tests/test_urldispatch.py
|
|
||||||
@@ -586,7 +586,7 @@ def test_add_route_with_invalid_re(route
|
|
||||||
|
|
||||||
def test_route_dynamic_with_regex_spec(router):
|
|
||||||
handler = make_handler()
|
|
||||||
- route = router.add_route('GET', '/get/{num:^\d+}', handler,
|
|
||||||
+ route = router.add_route('GET', r'/get/{num:^\d+}', handler,
|
|
||||||
name='name')
|
|
||||||
|
|
||||||
url = route.url_for(num='123')
|
|
||||||
@@ -595,7 +595,7 @@ def test_route_dynamic_with_regex_spec(r
|
|
||||||
|
|
||||||
def test_route_dynamic_with_regex_spec_and_trailing_slash(router):
|
|
||||||
handler = make_handler()
|
|
||||||
- route = router.add_route('GET', '/get/{num:^\d+}/', handler,
|
|
||||||
+ route = router.add_route('GET', r'/get/{num:^\d+}/', handler,
|
|
||||||
name='name')
|
|
||||||
|
|
||||||
url = route.url_for(num='123')
|
|
||||||
@@ -1125,7 +1125,7 @@ def test_plain_resource_canonical():
|
|
||||||
def test_dynamic_resource_canonical():
|
|
||||||
canonicals = {
|
|
||||||
'/get/{name}': '/get/{name}',
|
|
||||||
- '/get/{num:^\d+}': '/get/{num}',
|
|
||||||
+ r'/get/{num:^\d+}': '/get/{num}',
|
|
||||||
r'/handler/{to:\d+}': r'/handler/{to}',
|
|
||||||
r'/{one}/{two:.+}': r'/{one}/{two}',
|
|
||||||
}
|
|
||||||
--- a/tests/test_web_request.py
|
|
||||||
+++ b/tests/test_web_request.py
|
|
||||||
@@ -340,7 +340,7 @@ def test_single_forwarded_header_multipl
|
|
||||||
|
|
||||||
|
|
||||||
def test_single_forwarded_header_quoted_escaped():
|
|
||||||
- header = 'BY=identifier;pROTO="\lala lan\d\~ 123\!&"'
|
|
||||||
+ header = r'BY=identifier;pROTO="\lala lan\d\~ 123\!&"'
|
|
||||||
req = make_mocked_request('GET', '/',
|
|
||||||
headers=CIMultiDict({'Forwarded': header}))
|
|
||||||
assert req.forwarded[0]['by'] == 'identifier'
|
|
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Feb 27 14:25:09 UTC 2019 - Ondřej Súkup <mimi.vx@gmail.com>
|
||||||
|
|
||||||
|
- update to 3.5.4
|
||||||
|
- drop invalid-escapes-in-tests.patch and rename-request-fixture.patch
|
||||||
|
* big list of changes from 3.4.4 - https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jan 15 13:15:30 UTC 2019 - Alberto Planas Dominguez <aplanas@suse.com>
|
Tue Jan 15 13:15:30 UTC 2019 - Alberto Planas Dominguez <aplanas@suse.com>
|
||||||
|
|
||||||
|
@ -19,19 +19,13 @@
|
|||||||
%{?!python_module:%define python_module() python3-%{**}}
|
%{?!python_module:%define python_module() python3-%{**}}
|
||||||
%define skip_python2 1
|
%define skip_python2 1
|
||||||
Name: python-aiohttp
|
Name: python-aiohttp
|
||||||
Version: 3.4.4
|
Version: 3.5.4
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Asynchronous HTTP client/server framework
|
Summary: Asynchronous HTTP client/server framework
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
Group: Development/Languages/Python
|
Group: Development/Languages/Python
|
||||||
URL: https://github.com/aio-libs/aiohttp
|
URL: https://github.com/aio-libs/aiohttp
|
||||||
Source: https://files.pythonhosted.org/packages/source/a/aiohttp/aiohttp-%{version}.tar.gz
|
Source: https://files.pythonhosted.org/packages/source/a/aiohttp/aiohttp-%{version}.tar.gz
|
||||||
# PATCH-FIX-UPSTREAM mcepl@suse.com -- Fix failing tests due to invalid escapes in regexps
|
|
||||||
# https://github.com/aio-libs/aiohttp/issues/3325
|
|
||||||
Patch0: invalid-escapes-in-tests.patch
|
|
||||||
# PATCH-FIX-UPSTREAM glaubitz@suse.com -- Fix failing test due to naming conflict with pytest fixtures
|
|
||||||
# https://github.com/aio-libs/aiohttp/issues/3392
|
|
||||||
Patch1: rename-request-fixture.patch
|
|
||||||
BuildRequires: %{python_module Cython}
|
BuildRequires: %{python_module Cython}
|
||||||
BuildRequires: %{python_module devel >= 3.5.3}
|
BuildRequires: %{python_module devel >= 3.5.3}
|
||||||
BuildRequires: %{python_module setuptools}
|
BuildRequires: %{python_module setuptools}
|
||||||
@ -43,7 +37,6 @@ Requires: python-attrs >= 17.3.0
|
|||||||
Requires: python-brotlipy
|
Requires: python-brotlipy
|
||||||
Requires: python-chardet >= 2.0
|
Requires: python-chardet >= 2.0
|
||||||
Requires: python-gunicorn
|
Requires: python-gunicorn
|
||||||
Requires: python-idna_ssl >= 1.0.0
|
|
||||||
Requires: python-multidict >= 4.0
|
Requires: python-multidict >= 4.0
|
||||||
Requires: python-yarl >= 1.0
|
Requires: python-yarl >= 1.0
|
||||||
Recommends: python-aiodns
|
Recommends: python-aiodns
|
||||||
@ -56,13 +49,15 @@ BuildRequires: %{python_module attrs >= 17.3.0}
|
|||||||
BuildRequires: %{python_module brotlipy}
|
BuildRequires: %{python_module brotlipy}
|
||||||
BuildRequires: %{python_module chardet >= 2.0}
|
BuildRequires: %{python_module chardet >= 2.0}
|
||||||
BuildRequires: %{python_module gunicorn}
|
BuildRequires: %{python_module gunicorn}
|
||||||
BuildRequires: %{python_module idna_ssl >= 1.0.0}
|
|
||||||
BuildRequires: %{python_module multidict >= 4.0}
|
BuildRequires: %{python_module multidict >= 4.0}
|
||||||
BuildRequires: %{python_module pluggy}
|
BuildRequires: %{python_module pluggy}
|
||||||
|
BuildRequires: %{python_module pytest-cov}
|
||||||
BuildRequires: %{python_module pytest-mock}
|
BuildRequires: %{python_module pytest-mock}
|
||||||
BuildRequires: %{python_module pytest-runner}
|
BuildRequires: %{python_module pytest-runner}
|
||||||
BuildRequires: %{python_module pytest-timeout}
|
BuildRequires: %{python_module pytest-timeout}
|
||||||
|
BuildRequires: %{python_module pytest-xdist}
|
||||||
BuildRequires: %{python_module pytest}
|
BuildRequires: %{python_module pytest}
|
||||||
|
BuildRequires: %{python_module trustme}
|
||||||
BuildRequires: %{python_module yarl >= 1.0}
|
BuildRequires: %{python_module yarl >= 1.0}
|
||||||
# /SECTION
|
# /SECTION
|
||||||
# SECTION docs
|
# SECTION docs
|
||||||
@ -92,7 +87,6 @@ HTML documentation on the API and examples for %{name}.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n aiohttp-%{version}
|
%setup -q -n aiohttp-%{version}
|
||||||
%autopatch -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export CFLAGS="%{optflags}"
|
export CFLAGS="%{optflags}"
|
||||||
@ -109,7 +103,6 @@ find %{buildroot}%{$python_sitearch} -name "*.c" -delete
|
|||||||
}
|
}
|
||||||
|
|
||||||
%check
|
%check
|
||||||
rm tests/test_pytest_plugin.py
|
|
||||||
%python_exec setup.py test
|
%python_exec setup.py test
|
||||||
|
|
||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
|
@ -1,165 +0,0 @@
|
|||||||
diff -Nru aiohttp-3.4.4.orig/aiohttp/web_response.py aiohttp-3.4.4/aiohttp/web_response.py
|
|
||||||
--- aiohttp-3.4.4.orig/aiohttp/web_response.py 2018-09-05 09:40:54.000000000 +0200
|
|
||||||
+++ aiohttp-3.4.4/aiohttp/web_response.py 2018-11-20 13:49:49.197173589 +0100
|
|
||||||
@@ -279,27 +279,27 @@
|
|
||||||
# remove the header
|
|
||||||
self._headers.popall(hdrs.CONTENT_LENGTH, None)
|
|
||||||
|
|
||||||
- def _start_compression(self, request):
|
|
||||||
+ def _start_compression(self, mock_request):
|
|
||||||
if self._compression_force:
|
|
||||||
self._do_start_compression(self._compression_force)
|
|
||||||
else:
|
|
||||||
- accept_encoding = request.headers.get(
|
|
||||||
+ accept_encoding = mock_request.headers.get(
|
|
||||||
hdrs.ACCEPT_ENCODING, '').lower()
|
|
||||||
for coding in ContentCoding:
|
|
||||||
if coding.value in accept_encoding:
|
|
||||||
self._do_start_compression(coding)
|
|
||||||
return
|
|
||||||
|
|
||||||
- async def prepare(self, request):
|
|
||||||
+ async def prepare(self, mock_request):
|
|
||||||
if self._eof_sent:
|
|
||||||
return
|
|
||||||
if self._payload_writer is not None:
|
|
||||||
return self._payload_writer
|
|
||||||
|
|
||||||
- await request._prepare_hook(self)
|
|
||||||
- return await self._start(request)
|
|
||||||
+ await mock_request._prepare_hook(self)
|
|
||||||
+ return await self._start(mock_request)
|
|
||||||
|
|
||||||
- async def _start(self, request,
|
|
||||||
+ async def _start(self, mock_request,
|
|
||||||
HttpVersion10=HttpVersion10,
|
|
||||||
HttpVersion11=HttpVersion11,
|
|
||||||
CONNECTION=hdrs.CONNECTION,
|
|
||||||
@@ -310,15 +310,15 @@
|
|
||||||
SET_COOKIE=hdrs.SET_COOKIE,
|
|
||||||
SERVER_SOFTWARE=SERVER_SOFTWARE,
|
|
||||||
TRANSFER_ENCODING=hdrs.TRANSFER_ENCODING):
|
|
||||||
- self._req = request
|
|
||||||
+ self._req = mock_request
|
|
||||||
|
|
||||||
keep_alive = self._keep_alive
|
|
||||||
if keep_alive is None:
|
|
||||||
- keep_alive = request.keep_alive
|
|
||||||
+ keep_alive = mock_request.keep_alive
|
|
||||||
self._keep_alive = keep_alive
|
|
||||||
|
|
||||||
- version = request.version
|
|
||||||
- writer = self._payload_writer = request._payload_writer
|
|
||||||
+ version = mock_request.version
|
|
||||||
+ writer = self._payload_writer = mock_request._payload_writer
|
|
||||||
|
|
||||||
headers = self._headers
|
|
||||||
for cookie in self._cookies.values():
|
|
||||||
@@ -326,13 +326,13 @@
|
|
||||||
headers.add(SET_COOKIE, value)
|
|
||||||
|
|
||||||
if self._compression:
|
|
||||||
- self._start_compression(request)
|
|
||||||
+ self._start_compression(mock_request)
|
|
||||||
|
|
||||||
if self._chunked:
|
|
||||||
if version != HttpVersion11:
|
|
||||||
raise RuntimeError(
|
|
||||||
"Using chunked encoding is forbidden "
|
|
||||||
- "for HTTP/{0.major}.{0.minor}".format(request.version))
|
|
||||||
+ "for HTTP/{0.major}.{0.minor}".format(mock_request.version))
|
|
||||||
writer.enable_chunking()
|
|
||||||
headers[TRANSFER_ENCODING] = 'chunked'
|
|
||||||
if CONTENT_LENGTH in headers:
|
|
||||||
@@ -597,7 +597,7 @@
|
|
||||||
else:
|
|
||||||
await super().write_eof()
|
|
||||||
|
|
||||||
- async def _start(self, request):
|
|
||||||
+ async def _start(self, mock_request):
|
|
||||||
if not self._chunked and hdrs.CONTENT_LENGTH not in self._headers:
|
|
||||||
if not self._body_payload:
|
|
||||||
if self._body is not None:
|
|
||||||
@@ -605,7 +605,7 @@
|
|
||||||
else:
|
|
||||||
self._headers[hdrs.CONTENT_LENGTH] = '0'
|
|
||||||
|
|
||||||
- return await super()._start(request)
|
|
||||||
+ return await super()._start(mock_request)
|
|
||||||
|
|
||||||
def _do_start_compression(self, coding):
|
|
||||||
if self._body_payload or self._chunked:
|
|
||||||
diff -Nru aiohttp-3.4.4.orig/tests/test_client_connection.py aiohttp-3.4.4/tests/test_client_connection.py
|
|
||||||
--- aiohttp-3.4.4.orig/tests/test_client_connection.py 2018-09-05 09:40:55.000000000 +0200
|
|
||||||
+++ aiohttp-3.4.4/tests/test_client_connection.py 2018-11-20 13:38:21.602987474 +0100
|
|
||||||
@@ -12,7 +12,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
-def request():
|
|
||||||
+def mock_request():
|
|
||||||
return mock.Mock()
|
|
||||||
|
|
||||||
|
|
||||||
diff -Nru aiohttp-3.4.4.orig/tests/test_web_exceptions.py aiohttp-3.4.4/tests/test_web_exceptions.py
|
|
||||||
--- aiohttp-3.4.4.orig/tests/test_web_exceptions.py 2018-09-05 09:40:55.000000000 +0200
|
|
||||||
+++ aiohttp-3.4.4/tests/test_web_exceptions.py 2018-11-20 14:04:51.565410583 +0100
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
-def request(buf):
|
|
||||||
+def mock_request(buf):
|
|
||||||
method = 'GET'
|
|
||||||
path = '/'
|
|
||||||
writer = mock.Mock()
|
|
||||||
@@ -54,9 +54,9 @@
|
|
||||||
assert name in web.__all__
|
|
||||||
|
|
||||||
|
|
||||||
-async def test_HTTPOk(buf, request):
|
|
||||||
+async def test_HTTPOk(buf, mock_request):
|
|
||||||
resp = web.HTTPOk()
|
|
||||||
- await resp.prepare(request)
|
|
||||||
+ await resp.prepare(mock_request)
|
|
||||||
await resp.write_eof()
|
|
||||||
txt = buf.decode('utf8')
|
|
||||||
assert re.match(('HTTP/1.1 200 OK\r\n'
|
|
||||||
@@ -87,11 +87,11 @@
|
|
||||||
assert 1 == codes.most_common(1)[0][1]
|
|
||||||
|
|
||||||
|
|
||||||
-async def test_HTTPFound(buf, request):
|
|
||||||
+async def test_HTTPFound(buf, mock_request):
|
|
||||||
resp = web.HTTPFound(location='/redirect')
|
|
||||||
assert '/redirect' == resp.location
|
|
||||||
assert '/redirect' == resp.headers['location']
|
|
||||||
- await resp.prepare(request)
|
|
||||||
+ await resp.prepare(mock_request)
|
|
||||||
await resp.write_eof()
|
|
||||||
txt = buf.decode('utf8')
|
|
||||||
assert re.match('HTTP/1.1 302 Found\r\n'
|
|
||||||
@@ -111,12 +111,12 @@
|
|
||||||
web.HTTPFound(location=None)
|
|
||||||
|
|
||||||
|
|
||||||
-async def test_HTTPMethodNotAllowed(buf, request):
|
|
||||||
+async def test_HTTPMethodNotAllowed(buf, mock_request):
|
|
||||||
resp = web.HTTPMethodNotAllowed('get', ['POST', 'PUT'])
|
|
||||||
assert 'GET' == resp.method
|
|
||||||
assert ['POST', 'PUT'] == resp.allowed_methods
|
|
||||||
assert 'POST,PUT' == resp.headers['allow']
|
|
||||||
- await resp.prepare(request)
|
|
||||||
+ await resp.prepare(mock_request)
|
|
||||||
await resp.write_eof()
|
|
||||||
txt = buf.decode('utf8')
|
|
||||||
assert re.match('HTTP/1.1 405 Method Not Allowed\r\n'
|
|
||||||
@@ -168,7 +168,7 @@
|
|
||||||
resp.body is None
|
|
||||||
|
|
||||||
|
|
||||||
-def test_link_header_451(buf, request):
|
|
||||||
+def test_link_header_451(buf, mock_request):
|
|
||||||
resp = web.HTTPUnavailableForLegalReasons(link='http://warning.or.kr/')
|
|
||||||
|
|
||||||
assert 'http://warning.or.kr/' == resp.link
|
|
Loading…
x
Reference in New Issue
Block a user