completely forget about mechanize
This commit is contained in:
		@@ -26,7 +26,6 @@ with a working implementation in Python 2 for:
 | 
			
		||||
* `httplib`
 | 
			
		||||
* `httplib2`
 | 
			
		||||
* `requests`
 | 
			
		||||
* `mechanize`
 | 
			
		||||
 | 
			
		||||
and in Python 3 for:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								setup.py
									
									
									
									
									
								
							@@ -35,7 +35,6 @@ META = {
 | 
			
		||||
            'pytest>=2.4',
 | 
			
		||||
            'httplib2',
 | 
			
		||||
            'requests>=2.0.1',
 | 
			
		||||
            'mechanize>=0.2.5',
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,102 +0,0 @@
 | 
			
		||||
import sys
 | 
			
		||||
import platform
 | 
			
		||||
import py.test
 | 
			
		||||
from wsgi_intercept import WSGIAppError
 | 
			
		||||
from test import wsgi_app
 | 
			
		||||
from test.install import installer_class
 | 
			
		||||
try:
 | 
			
		||||
    import urllib.request as url_lib
 | 
			
		||||
except ImportError:
 | 
			
		||||
    import urllib2 as url_lib
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Without this conditional, the import of mechanize_intercept attempts
 | 
			
		||||
# to import mechanize, which cannot be installed on Python3 and throws
 | 
			
		||||
# exceptions on PyPy, resulting in a spurious error during test
 | 
			
		||||
# collection.
 | 
			
		||||
CAN_RUN_TESTS = (
 | 
			
		||||
    sys.version_info < (3, 0) and platform.python_implementation() != 'PyPy'
 | 
			
		||||
)
 | 
			
		||||
if CAN_RUN_TESTS:
 | 
			
		||||
    from wsgi_intercept import mechanize_intercept
 | 
			
		||||
    import mechanize
 | 
			
		||||
    InstalledApp = installer_class(mechanize_intercept)
 | 
			
		||||
else:
 | 
			
		||||
    InstalledApp = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
HOST = 'some_hopefully_nonexistent_domain'
 | 
			
		||||
 | 
			
		||||
ONLY_PYTHON2_NOT_PYPY = py.test.mark.skipif(
 | 
			
		||||
    not CAN_RUN_TESTS,
 | 
			
		||||
    reason="mechanize is not ported from Python 2 and fails in PyPy")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ONLY_PYTHON2_NOT_PYPY
 | 
			
		||||
def test_http():
 | 
			
		||||
    with InstalledApp(wsgi_app.simple_app, host=HOST, port=80) as app:
 | 
			
		||||
        browser = mechanize.Browser()
 | 
			
		||||
        url = 'http://some_hopefully_nonexistent_domain:80'
 | 
			
		||||
        response = browser.open(url)
 | 
			
		||||
        content = response.read()
 | 
			
		||||
        assert content == b'WSGI intercept successful!\n'
 | 
			
		||||
        assert app.success()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ONLY_PYTHON2_NOT_PYPY
 | 
			
		||||
def test_http_default_port():
 | 
			
		||||
    with InstalledApp(wsgi_app.simple_app, host=HOST, port=80) as app:
 | 
			
		||||
        browser = mechanize.Browser()
 | 
			
		||||
        url = 'http://some_hopefully_nonexistent_domain'
 | 
			
		||||
        response = browser.open(url)
 | 
			
		||||
        content = response.read()
 | 
			
		||||
        assert content == b'WSGI intercept successful!\n'
 | 
			
		||||
        assert app.success()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ONLY_PYTHON2_NOT_PYPY
 | 
			
		||||
def test_http_other_port():
 | 
			
		||||
    with InstalledApp(wsgi_app.simple_app, host=HOST, port=8080) as app:
 | 
			
		||||
        browser = mechanize.Browser()
 | 
			
		||||
        url = 'http://some_hopefully_nonexistent_domain:8080'
 | 
			
		||||
        response = browser.open(url)
 | 
			
		||||
        content = response.read()
 | 
			
		||||
        assert content == b'WSGI intercept successful!\n'
 | 
			
		||||
        assert app.success()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ONLY_PYTHON2_NOT_PYPY
 | 
			
		||||
def test_bogus_domain():
 | 
			
		||||
    with InstalledApp(wsgi_app.simple_app, host=HOST, port=80):
 | 
			
		||||
        browser = mechanize.Browser()
 | 
			
		||||
        with py.test.raises(url_lib.URLError):
 | 
			
		||||
            browser.open('https://_nonexistent_domain')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ONLY_PYTHON2_NOT_PYPY
 | 
			
		||||
def test_https():
 | 
			
		||||
    with InstalledApp(wsgi_app.simple_app, host=HOST, port=443) as app:
 | 
			
		||||
        browser = mechanize.Browser()
 | 
			
		||||
        response = browser.open('https://some_hopefully_nonexistent_domain')
 | 
			
		||||
        content = response.read()
 | 
			
		||||
        assert content == b'WSGI intercept successful!\n'
 | 
			
		||||
        assert app.success()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ONLY_PYTHON2_NOT_PYPY
 | 
			
		||||
def test_https_default_port():
 | 
			
		||||
    with InstalledApp(wsgi_app.simple_app, host=HOST, port=443) as app:
 | 
			
		||||
        browser = mechanize.Browser()
 | 
			
		||||
        response = browser.open('https://some_hopefully_nonexistent_domain:443')
 | 
			
		||||
        content = response.read()
 | 
			
		||||
        assert content == b'WSGI intercept successful!\n'
 | 
			
		||||
        assert app.success()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ONLY_PYTHON2_NOT_PYPY
 | 
			
		||||
def test_app_error():
 | 
			
		||||
    with InstalledApp(wsgi_app.raises_app, host=HOST, port=80):
 | 
			
		||||
        with py.test.raises(WSGIAppError):
 | 
			
		||||
            browser = mechanize.Browser()
 | 
			
		||||
            response = browser.open('http://some_hopefully_nonexistent_domain')
 | 
			
		||||
            response.read()
 | 
			
		||||
@@ -40,9 +40,8 @@ Packages Intercepted
 | 
			
		||||
Unfortunately each of the Web testing frameworks uses its own specific
 | 
			
		||||
mechanism for making HTTP call-outs, so individual implementations are
 | 
			
		||||
needed. At this time there are implementations for ``httplib2`` and
 | 
			
		||||
``requests`` in both Python 2 and 3, ``urllib2``, ``httplib`` and
 | 
			
		||||
``mechanize`` in Python 2 and ``urllib.request`` and ``http.client`` in
 | 
			
		||||
Python 3.
 | 
			
		||||
``requests`` in both Python 2 and 3, ``urllib2`` and ``httplib``
 | 
			
		||||
in Python 2 and ``urllib.request`` and ``http.client`` in Python 3.
 | 
			
		||||
 | 
			
		||||
If you are using Python 2 and need support for a different HTTP
 | 
			
		||||
client, require a version of ``wsgi_intercept<0.6``. Earlier versions
 | 
			
		||||
 
 | 
			
		||||
@@ -1,33 +0,0 @@
 | 
			
		||||
"""Intercept HTTP connections that use `mechanize <http://wwwsearch.sourceforge.net/mechanize/>`_.
 | 
			
		||||
"""
 | 
			
		||||
import sys
 | 
			
		||||
import platform
 | 
			
		||||
assert sys.version_info < (3, 0), "mechanize cannot be installed in Python 3"
 | 
			
		||||
assert platform.python_implementation() != "PyPy", (
 | 
			
		||||
    "mechanize does not import on PyPy"
 | 
			
		||||
)
 | 
			
		||||
import mechanize
 | 
			
		||||
from wsgi_intercept.urllib_intercept import WSGI_HTTPHandler, WSGI_HTTPSHandler
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_ORIGINAL_BROWSER = mechanize.Browser
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Browser(_ORIGINAL_BROWSER):
 | 
			
		||||
    """mechanize Browser class with our WSGI intercept handlers installed.
 | 
			
		||||
    """
 | 
			
		||||
    handler_classes = _ORIGINAL_BROWSER.handler_classes.copy()
 | 
			
		||||
    handler_classes['http'] = WSGI_HTTPHandler
 | 
			
		||||
    handler_classes['https'] = WSGI_HTTPSHandler
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        _ORIGINAL_BROWSER.__init__(self, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def install():
 | 
			
		||||
    mechanize.Browser = Browser
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def uninstall():
 | 
			
		||||
    if mechanize.Browser == Browser:
 | 
			
		||||
        mechanize.Browser = _ORIGINAL_BROWSER
 | 
			
		||||
		Reference in New Issue
	
	Block a user