mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 01:03:24 +00:00
Don't unmock requests.packages if not necessary
This commit is contained in:
@@ -8,7 +8,6 @@ import vcr
|
|||||||
from vcr.patch import force_reset
|
from vcr.patch import force_reset
|
||||||
from assertions import assert_cassette_empty, assert_is_json
|
from assertions import assert_cassette_empty, assert_is_json
|
||||||
urllib3 = pytest.importorskip("urllib3")
|
urllib3 = pytest.importorskip("urllib3")
|
||||||
cpool = pytest.importorskip("urllib3.connectionpool")
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='module')
|
@pytest.fixture(scope='module')
|
||||||
@@ -143,6 +142,7 @@ def test_https_with_cert_validation_disabled(tmpdir, httpbin_secure, pool_mgr):
|
|||||||
|
|
||||||
|
|
||||||
def test_urllib3_force_reset():
|
def test_urllib3_force_reset():
|
||||||
|
cpool = urllib3.connectionpool
|
||||||
http_original = cpool.HTTPConnection
|
http_original = cpool.HTTPConnection
|
||||||
https_original = cpool.HTTPSConnection
|
https_original = cpool.HTTPSConnection
|
||||||
verified_https_original = cpool.VerifiedHTTPSConnection
|
verified_https_original = cpool.VerifiedHTTPSConnection
|
||||||
|
|||||||
16
vcr/patch.py
16
vcr/patch.py
@@ -362,8 +362,22 @@ class ConnectionRemover(object):
|
|||||||
def reset_patchers():
|
def reset_patchers():
|
||||||
yield mock.patch.object(httplib, 'HTTPConnection', _HTTPConnection)
|
yield mock.patch.object(httplib, 'HTTPConnection', _HTTPConnection)
|
||||||
yield mock.patch.object(httplib, 'HTTPSConnection', _HTTPSConnection)
|
yield mock.patch.object(httplib, 'HTTPSConnection', _HTTPSConnection)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import requests.packages.urllib3.connectionpool as cpool
|
import requests
|
||||||
|
if requests.__build__ < 0x021603:
|
||||||
|
# Avoid double unmock if requests 2.16.3
|
||||||
|
# First, this is pointless, requests.packages.urllib3 *IS* urllib3 (see packages.py)
|
||||||
|
# Second, this is unmocking twice the same classes with different namespaces
|
||||||
|
# and is creating weird issues and bugs:
|
||||||
|
# > AssertionError: assert <class 'urllib3.connection.HTTPConnection'>
|
||||||
|
# > is <class 'requests.packages.urllib3.connection.HTTPConnection'>
|
||||||
|
# This assert should work!!!
|
||||||
|
# Note that this also means that now, requests.packages is never imported
|
||||||
|
# if requests 2.16.3 or greater is used with VCRPy.
|
||||||
|
import requests.packages.urllib3.connectionpool as cpool
|
||||||
|
else:
|
||||||
|
raise ImportError("Skip requests not vendored anymore")
|
||||||
except ImportError: # pragma: no cover
|
except ImportError: # pragma: no cover
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user