1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-09 17:15:35 +00:00

Merge pull request #303 from graingert/support-3.6

support 3.6
This commit is contained in:
Thomas Grainger
2017-05-02 11:17:39 +01:00
committed by GitHub
4 changed files with 38 additions and 11 deletions

View File

@@ -13,6 +13,7 @@ env:
- TOX_SUFFIX="requests25" - TOX_SUFFIX="requests25"
- TOX_SUFFIX="requests26" - TOX_SUFFIX="requests26"
- TOX_SUFFIX="requests27" - TOX_SUFFIX="requests27"
- TOX_SUFFIX="requests213"
- TOX_SUFFIX="requests1" - TOX_SUFFIX="requests1"
- TOX_SUFFIX="httplib2" - TOX_SUFFIX="httplib2"
- TOX_SUFFIX="boto" - TOX_SUFFIX="boto"
@@ -34,10 +35,14 @@ matrix:
python: 3.3 python: 3.3
- env: TOX_SUFFIX="boto" - env: TOX_SUFFIX="boto"
python: 3.4 python: 3.4
- env: TOX_SUFFIX="boto"
python: 3.6
- env: TOX_SUFFIX="requests1" - env: TOX_SUFFIX="requests1"
python: 3.4 python: 3.4
- env: TOX_SUFFIX="requests1" - env: TOX_SUFFIX="requests1"
python: 3.5 python: 3.5
- env: TOX_SUFFIX="requests1"
python: 3.6
- env: TOX_SUFFIX="aiohttp" - env: TOX_SUFFIX="aiohttp"
python: 2.6 python: 2.6
- env: TOX_SUFFIX="aiohttp" - env: TOX_SUFFIX="aiohttp"
@@ -54,6 +59,7 @@ python:
- 3.3 - 3.3
- 3.4 - 3.4
- 3.5 - 3.5
- 3.6
- pypy - pypy
- pypy3 - pypy3
install: install:

View File

@@ -4,8 +4,8 @@ import pytest
import vcr import vcr
from assertions import assert_cassette_empty, assert_is_json from assertions import assert_cassette_empty, assert_is_json
requests = pytest.importorskip("requests") requests = pytest.importorskip("requests")
from requests.exceptions import ConnectionError # noqa E402
def test_status_code(httpbin_both, tmpdir): def test_status_code(httpbin_both, tmpdir):
@@ -100,11 +100,26 @@ def test_post(tmpdir, httpbin_both):
assert req1 == req2 assert req1 == req2
def test_post_chunked_binary(tmpdir, httpbin_both): def test_post_chunked_binary(tmpdir, httpbin):
'''Ensure that we can send chunked binary without breaking while trying to concatenate bytes with str.''' '''Ensure that we can send chunked binary without breaking while trying to concatenate bytes with str.'''
data1 = iter([b'data', b'to', b'send']) data1 = iter([b'data', b'to', b'send'])
data2 = iter([b'data', b'to', b'send']) data2 = iter([b'data', b'to', b'send'])
url = httpbin_both.url + '/post' url = httpbin.url + '/post'
with vcr.use_cassette(str(tmpdir.join('requests.yaml'))):
req1 = requests.post(url, data1).content
with vcr.use_cassette(str(tmpdir.join('requests.yaml'))):
req2 = requests.post(url, data2).content
assert req1 == req2
@pytest.mark.xfail('sys.version_info >= (3, 6)', strict=True, raises=ConnectionError)
def test_post_chunked_binary_secure(tmpdir, httpbin_secure):
'''Ensure that we can send chunked binary without breaking while trying to concatenate bytes with str.'''
data1 = iter([b'data', b'to', b'send'])
data2 = iter([b'data', b'to', b'send'])
url = httpbin_secure.url + '/post'
with vcr.use_cassette(str(tmpdir.join('requests.yaml'))): with vcr.use_cassette(str(tmpdir.join('requests.yaml'))):
req1 = requests.post(url, data1).content req1 = requests.post(url, data1).content
print(req1) print(req1)

15
tox.ini
View File

@@ -1,5 +1,5 @@
[tox] [tox]
envlist = {py26,py27,py33,py34,pypy,pypy3}-{flakes,requests27,requests26,requests25,requests24,requests23,requests22,requests1,httplib2,urllib317,urllib319,urllib3110,tornado3,tornado4,boto,boto3,aiohttp} envlist = {py26,py27,py33,py34,py35,py36,pypy,pypy3}-{flakes,requests213,requests27,requests26,requests25,requests24,requests23,requests22,requests1,httplib2,urllib317,urllib319,urllib3110,tornado3,tornado4,boto,boto3,aiohttp}
[testenv:flakes] [testenv:flakes]
skipsdist = True skipsdist = True
@@ -20,6 +20,7 @@ deps =
pytest-httpbin pytest-httpbin
PyYAML PyYAML
requests1: requests==1.2.3 requests1: requests==1.2.3
requests213: requests==2.13.0
requests27: requests==2.7.0 requests27: requests==2.7.0
requests26: requests==2.6.0 requests26: requests==2.6.0
requests25: requests==2.5.0 requests25: requests==2.5.0
@@ -30,12 +31,12 @@ deps =
urllib317: urllib3==1.7.1 urllib317: urllib3==1.7.1
urllib319: urllib3==1.9.1 urllib319: urllib3==1.9.1
urllib3110: urllib3==1.10.2 urllib3110: urllib3==1.10.2
{py26,py27,py33,py34,pypy}-tornado3: tornado>=3,<4 {py26,py27,py33,py34,py35,py36,pypy}-tornado3: tornado>=3,<4
{py26,py27,py33,py34,pypy}-tornado4: tornado>=4,<5 {py26,py27,py33,py34,py35,py36,pypy}-tornado4: tornado>=4,<5
{py26,py27,py33,py34,pypy}-tornado3: pytest-tornado {py26,py27,py33,py34,py35,py36,pypy}-tornado3: pytest-tornado
{py26,py27,py33,py34,pypy}-tornado4: pytest-tornado {py26,py27,py33,py34,py35,py36,pypy}-tornado4: pytest-tornado
{py26,py27,py33,py34}-tornado3: pycurl {py26,py27,py33,py34,py35,py36}-tornado3: pycurl
{py26,py27,py33,py34}-tornado4: pycurl {py26,py27,py33,py34,py35,py36}-tornado4: pycurl
boto: boto boto: boto
boto3: boto3 boto3: boto3
aiohttp: aiohttp aiohttp: aiohttp

View File

@@ -153,7 +153,7 @@ class VCRConnection(object):
) )
return uri.replace(prefix, '', 1) return uri.replace(prefix, '', 1)
def request(self, method, url, body=None, headers=None): def request(self, method, url, body=None, headers=None, *args, **kwargs):
'''Persist the request metadata in self._vcr_request''' '''Persist the request metadata in self._vcr_request'''
self._vcr_request = Request( self._vcr_request = Request(
method=method, method=method,
@@ -335,6 +335,11 @@ class VCRConnection(object):
super(VCRConnection, self).__setattr__(name, value) super(VCRConnection, self).__setattr__(name, value)
for k, v in HTTPConnection.__dict__.items():
if isinstance(v, staticmethod):
setattr(VCRConnection, k, v)
class VCRHTTPConnection(VCRConnection): class VCRHTTPConnection(VCRConnection):
'''A Mocked class for HTTP requests''' '''A Mocked class for HTTP requests'''
_baseclass = HTTPConnection _baseclass = HTTPConnection